summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/man/man3/Admin.314
-rw-r--r--docs/man/man3/BanItem.32
-rw-r--r--docs/man/man3/BoolSet.32
-rw-r--r--docs/man/man3/ConfigReader.3278
-rw-r--r--docs/man/man3/ConnectClass.344
-rw-r--r--docs/man/man3/CullItem.32
-rw-r--r--docs/man/man3/CullList.32
-rw-r--r--docs/man/man3/DNS.32
-rw-r--r--docs/man/man3/ELine.32
-rw-r--r--docs/man/man3/Event.348
-rw-r--r--docs/man/man3/ExemptItem.32
-rw-r--r--docs/man/man3/ExtMode.320
-rw-r--r--docs/man/man3/Extensible.34
-rw-r--r--docs/man/man3/FileReader.384
-rw-r--r--docs/man/man3/GLine.32
-rw-r--r--docs/man/man3/HostItem.32
-rw-r--r--docs/man/man3/InspIRCd.345
-rw-r--r--docs/man/man3/InspSocket.3494
-rw-r--r--docs/man/man3/InviteItem.32
-rw-r--r--docs/man/man3/Invited.310
-rw-r--r--docs/man/man3/KLine.32
-rw-r--r--docs/man/man3/ModeParameter.32
-rw-r--r--docs/man/man3/Module.3326
-rw-r--r--docs/man/man3/ModuleFactory.312
-rw-r--r--docs/man/man3/ModuleMessage.38
-rw-r--r--docs/man/man3/QLine.32
-rw-r--r--docs/man/man3/Request.360
-rw-r--r--docs/man/man3/Server.3758
-rw-r--r--docs/man/man3/ServerConfig.3113
-rw-r--r--docs/man/man3/SocketEngine.36
-rw-r--r--docs/man/man3/Version.318
-rw-r--r--docs/man/man3/WhoWasUser.332
-rw-r--r--docs/man/man3/XLine.32
-rw-r--r--docs/man/man3/ZLine.32
-rw-r--r--docs/man/man3/_home_.32
-rw-r--r--docs/man/man3/_home_brain_.32
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_.32
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_.32
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.35
-rw-r--r--docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.32
-rw-r--r--docs/man/man3/aes.h.360
-rw-r--r--docs/man/man3/base.h.32
-rw-r--r--docs/man/man3/channels.cpp.3189
-rw-r--r--docs/man/man3/channels.h.3177
-rw-r--r--docs/man/man3/chanrec.3218
-rw-r--r--docs/man/man3/classbase.32
-rw-r--r--docs/man/man3/command_t.373
-rw-r--r--docs/man/man3/commands.h.3293
-rw-r--r--docs/man/man3/connection.318
-rw-r--r--docs/man/man3/connection.h.32
-rw-r--r--docs/man/man3/ctables.h.318
-rw-r--r--docs/man/man3/cull_list.h.32
-rw-r--r--docs/man/man3/dns.h.317
-rw-r--r--docs/man/man3/dns_ip4list.32
-rw-r--r--docs/man/man3/globals.h.312
-rw-r--r--docs/man/man3/hashcomp.h.32
-rw-r--r--docs/man/man3/inspircd.h.3161
-rw-r--r--docs/man/man3/inspircd_io.h.316
-rw-r--r--docs/man/man3/irc.32
-rw-r--r--docs/man/man3/irc_InAddr_HashComp.32
-rw-r--r--docs/man/man3/irc_StrHashComp.32
-rw-r--r--docs/man/man3/irc_irc_char_traits.32
-rw-r--r--docs/man/man3/message.h.32
-rw-r--r--docs/man/man3/mode.h.382
-rw-r--r--docs/man/man3/modules.cpp.3166
-rw-r--r--docs/man/man3/modules.h.3221
-rw-r--r--docs/man/man3/nspace.32
-rw-r--r--docs/man/man3/nspace_hash_ in_addr _.32
-rw-r--r--docs/man/man3/nspace_hash_ string _.32
-rw-r--r--docs/man/man3/serverstats.351
-rw-r--r--docs/man/man3/socket.cpp.320
-rw-r--r--docs/man/man3/socket.h.32
-rw-r--r--docs/man/man3/socketengine.cpp.32
-rw-r--r--docs/man/man3/socketengine.h.34
-rw-r--r--docs/man/man3/std.32
-rw-r--r--docs/man/man3/std_char_traits.32
-rw-r--r--docs/man/man3/typedefs.h.316
-rw-r--r--docs/man/man3/ucrec.36
-rw-r--r--docs/man/man3/userprocess.h.38
-rw-r--r--docs/man/man3/userrec.3574
-rw-r--r--docs/man/man3/users.cpp.3689
-rw-r--r--docs/man/man3/users.h.3622
-rw-r--r--docs/man/man3/xline.h.37
-rw-r--r--docs/module-doc/aes_8h-source.html142
-rw-r--r--docs/module-doc/aes_8h.html133
-rw-r--r--docs/module-doc/aes_8h__incl.map1
-rw-r--r--docs/module-doc/aes_8h__incl.md51
-rw-r--r--docs/module-doc/annotated.html5
-rw-r--r--docs/module-doc/base_8h-source.html2
-rw-r--r--docs/module-doc/base_8h.html5
-rw-r--r--docs/module-doc/base_8h__dep__incl.map3
-rw-r--r--docs/module-doc/base_8h__dep__incl.md52
-rw-r--r--docs/module-doc/channels_8cpp-source.html520
-rw-r--r--docs/module-doc/channels_8cpp.html246
-rw-r--r--docs/module-doc/channels_8cpp__incl.map22
-rw-r--r--docs/module-doc/channels_8cpp__incl.md52
-rw-r--r--docs/module-doc/channels_8h-source.html2
-rw-r--r--docs/module-doc/channels_8h.html211
-rw-r--r--docs/module-doc/channels_8h__dep__incl.map16
-rw-r--r--docs/module-doc/channels_8h__dep__incl.md52
-rw-r--r--docs/module-doc/classAdmin-members.html2
-rw-r--r--docs/module-doc/classAdmin.html12
-rw-r--r--docs/module-doc/classBanItem-members.html2
-rw-r--r--docs/module-doc/classBanItem.html2
-rw-r--r--docs/module-doc/classBoolSet-members.html2
-rw-r--r--docs/module-doc/classBoolSet.html2
-rw-r--r--docs/module-doc/classConfigReader-members.html2
-rw-r--r--docs/module-doc/classConfigReader.html294
-rw-r--r--docs/module-doc/classConnectClass-members.html2
-rw-r--r--docs/module-doc/classConnectClass.html62
-rw-r--r--docs/module-doc/classCullItem-members.html2
-rw-r--r--docs/module-doc/classCullItem.html2
-rw-r--r--docs/module-doc/classCullList-members.html2
-rw-r--r--docs/module-doc/classCullList.html2
-rw-r--r--docs/module-doc/classDNS-members.html2
-rw-r--r--docs/module-doc/classDNS.html2
-rw-r--r--docs/module-doc/classELine-members.html2
-rw-r--r--docs/module-doc/classELine.html2
-rw-r--r--docs/module-doc/classEvent-members.html2
-rw-r--r--docs/module-doc/classEvent.html52
-rw-r--r--docs/module-doc/classExemptItem-members.html2
-rw-r--r--docs/module-doc/classExemptItem.html2
-rw-r--r--docs/module-doc/classExtMode-members.html2
-rw-r--r--docs/module-doc/classExtMode.html18
-rw-r--r--docs/module-doc/classExtensible-members.html2
-rw-r--r--docs/module-doc/classExtensible.html9
-rw-r--r--docs/module-doc/classExtensible__inherit__graph.map7
-rw-r--r--docs/module-doc/classExtensible__inherit__graph.md52
-rw-r--r--docs/module-doc/classFileReader-members.html2
-rw-r--r--docs/module-doc/classFileReader.html84
-rw-r--r--docs/module-doc/classGLine-members.html2
-rw-r--r--docs/module-doc/classGLine.html2
-rw-r--r--docs/module-doc/classHostItem-members.html2
-rw-r--r--docs/module-doc/classHostItem.html2
-rw-r--r--docs/module-doc/classInspIRCd-members.html7
-rw-r--r--docs/module-doc/classInspIRCd.html160
-rw-r--r--docs/module-doc/classInspIRCd__coll__graph.map3
-rw-r--r--docs/module-doc/classInspIRCd__coll__graph.md52
-rw-r--r--docs/module-doc/classInspSocket-members.html6
-rw-r--r--docs/module-doc/classInspSocket.html557
-rw-r--r--docs/module-doc/classInspSocket__coll__graph.md52
-rw-r--r--docs/module-doc/classInviteItem-members.html2
-rw-r--r--docs/module-doc/classInviteItem.html2
-rw-r--r--docs/module-doc/classInvited-members.html4
-rw-r--r--docs/module-doc/classInvited.html14
-rw-r--r--docs/module-doc/classInvited__coll__graph.md52
-rw-r--r--docs/module-doc/classKLine-members.html2
-rw-r--r--docs/module-doc/classKLine.html2
-rw-r--r--docs/module-doc/classModeParameter-members.html2
-rw-r--r--docs/module-doc/classModeParameter.html8
-rw-r--r--docs/module-doc/classModule-members.html2
-rw-r--r--docs/module-doc/classModule.html172
-rw-r--r--docs/module-doc/classModuleFactory-members.html2
-rw-r--r--docs/module-doc/classModuleFactory.html8
-rw-r--r--docs/module-doc/classModuleMessage-members.html2
-rw-r--r--docs/module-doc/classModuleMessage.html6
-rw-r--r--docs/module-doc/classQLine-members.html2
-rw-r--r--docs/module-doc/classQLine.html2
-rw-r--r--docs/module-doc/classRequest-members.html2
-rw-r--r--docs/module-doc/classRequest.html66
-rw-r--r--docs/module-doc/classServer-members.html4
-rw-r--r--docs/module-doc/classServer.html785
-rw-r--r--docs/module-doc/classServerConfig-members.html8
-rw-r--r--docs/module-doc/classServerConfig.html247
-rw-r--r--docs/module-doc/classServerConfig__coll__graph.map2
-rw-r--r--docs/module-doc/classServerConfig__coll__graph.md52
-rw-r--r--docs/module-doc/classSocketEngine-members.html2
-rw-r--r--docs/module-doc/classSocketEngine.html14
-rw-r--r--docs/module-doc/classVersion-members.html2
-rw-r--r--docs/module-doc/classVersion.html16
-rw-r--r--docs/module-doc/classWhoWasUser-members.html2
-rw-r--r--docs/module-doc/classWhoWasUser.html32
-rw-r--r--docs/module-doc/classXLine-members.html2
-rw-r--r--docs/module-doc/classXLine.html2
-rw-r--r--docs/module-doc/classZLine-members.html2
-rw-r--r--docs/module-doc/classZLine.html2
-rw-r--r--docs/module-doc/classchanrec-members.html2
-rw-r--r--docs/module-doc/classchanrec.html256
-rw-r--r--docs/module-doc/classclassbase-members.html2
-rw-r--r--docs/module-doc/classclassbase.html2
-rw-r--r--docs/module-doc/classclassbase__inherit__graph.md52
-rw-r--r--docs/module-doc/classcommand__t-members.html17
-rw-r--r--docs/module-doc/classcommand__t.html177
-rw-r--r--docs/module-doc/classcommand__t__coll__graph.map2
-rw-r--r--docs/module-doc/classcommand__t__coll__graph.md52
-rw-r--r--docs/module-doc/classcommand__t__inherit__graph.map3
-rw-r--r--docs/module-doc/classcommand__t__inherit__graph.md52
-rw-r--r--docs/module-doc/classconnection-members.html2
-rw-r--r--docs/module-doc/classconnection.html30
-rw-r--r--docs/module-doc/classes.html38
-rw-r--r--docs/module-doc/classserverstats-members.html3
-rw-r--r--docs/module-doc/classserverstats.html86
-rw-r--r--docs/module-doc/classserverstats__coll__graph.md52
-rw-r--r--docs/module-doc/classstd_1_1char__traits.html2
-rw-r--r--docs/module-doc/classucrec-members.html2
-rw-r--r--docs/module-doc/classucrec.html6
-rw-r--r--docs/module-doc/classuserrec-members.html10
-rw-r--r--docs/module-doc/classuserrec.html638
-rw-r--r--docs/module-doc/commands_8h-source.html136
-rw-r--r--docs/module-doc/commands_8h.html2287
-rw-r--r--docs/module-doc/commands_8h__incl.map5
-rw-r--r--docs/module-doc/commands_8h__incl.md52
-rw-r--r--docs/module-doc/connection_8h-source.html2
-rw-r--r--docs/module-doc/connection_8h.html2
-rw-r--r--docs/module-doc/connection_8h__dep__incl.md52
-rw-r--r--docs/module-doc/ctables_8h-source.html42
-rw-r--r--docs/module-doc/ctables_8h.html45
-rw-r--r--docs/module-doc/ctables_8h__dep__incl.map7
-rw-r--r--docs/module-doc/ctables_8h__dep__incl.md52
-rw-r--r--docs/module-doc/ctables_8h__incl.map2
-rw-r--r--docs/module-doc/ctables_8h__incl.md52
-rw-r--r--docs/module-doc/cull__list_8h-source.html2
-rw-r--r--docs/module-doc/cull__list_8h.html7
-rw-r--r--docs/module-doc/cull__list_8h__incl.map5
-rw-r--r--docs/module-doc/cull__list_8h__incl.md52
-rw-r--r--docs/module-doc/dir_000000.html2
-rw-r--r--docs/module-doc/dir_000000_dep.gifbin826 -> 826 bytes
-rw-r--r--docs/module-doc/dir_000001.html2
-rw-r--r--docs/module-doc/dir_000001_dep.gifbin1434 -> 1434 bytes
-rw-r--r--docs/module-doc/dir_000002.html2
-rw-r--r--docs/module-doc/dir_000002_dep.gifbin1461 -> 1461 bytes
-rw-r--r--docs/module-doc/dir_000003.html2
-rw-r--r--docs/module-doc/dir_000003_dep.gifbin2124 -> 2118 bytes
-rw-r--r--docs/module-doc/dir_000004.html4
-rw-r--r--docs/module-doc/dir_000004_dep.gifbin1024 -> 1024 bytes
-rw-r--r--docs/module-doc/dir_000005.html2
-rw-r--r--docs/module-doc/dir_000005_000004.html2
-rw-r--r--docs/module-doc/dir_000005_dep.gifbin1347 -> 1342 bytes
-rw-r--r--docs/module-doc/dirs.html2
-rw-r--r--docs/module-doc/dns_8h-source.html6
-rw-r--r--docs/module-doc/dns_8h.html37
-rw-r--r--docs/module-doc/files.html3
-rw-r--r--docs/module-doc/functions.html21
-rw-r--r--docs/module-doc/functions_0x62.html10
-rw-r--r--docs/module-doc/functions_0x63.html21
-rw-r--r--docs/module-doc/functions_0x64.html16
-rw-r--r--docs/module-doc/functions_0x65.html13
-rw-r--r--docs/module-doc/functions_0x66.html9
-rw-r--r--docs/module-doc/functions_0x67.html23
-rw-r--r--docs/module-doc/functions_0x68.html12
-rw-r--r--docs/module-doc/functions_0x69.html17
-rw-r--r--docs/module-doc/functions_0x6a.html6
-rw-r--r--docs/module-doc/functions_0x6b.html6
-rw-r--r--docs/module-doc/functions_0x6c.html6
-rw-r--r--docs/module-doc/functions_0x6d.html37
-rw-r--r--docs/module-doc/functions_0x6e.html18
-rw-r--r--docs/module-doc/functions_0x6f.html6
-rw-r--r--docs/module-doc/functions_0x70.html13
-rw-r--r--docs/module-doc/functions_0x71.html6
-rw-r--r--docs/module-doc/functions_0x72.html17
-rw-r--r--docs/module-doc/functions_0x73.html38
-rw-r--r--docs/module-doc/functions_0x74.html15
-rw-r--r--docs/module-doc/functions_0x75.html6
-rw-r--r--docs/module-doc/functions_0x76.html6
-rw-r--r--docs/module-doc/functions_0x77.html6
-rw-r--r--docs/module-doc/functions_0x7e.html12
-rw-r--r--docs/module-doc/functions_func.html18
-rw-r--r--docs/module-doc/functions_func_0x62.html6
-rw-r--r--docs/module-doc/functions_func_0x63.html13
-rw-r--r--docs/module-doc/functions_func_0x64.html15
-rw-r--r--docs/module-doc/functions_func_0x65.html10
-rw-r--r--docs/module-doc/functions_func_0x66.html9
-rw-r--r--docs/module-doc/functions_func_0x67.html23
-rw-r--r--docs/module-doc/functions_func_0x68.html11
-rw-r--r--docs/module-doc/functions_func_0x69.html10
-rw-r--r--docs/module-doc/functions_func_0x6a.html6
-rw-r--r--docs/module-doc/functions_func_0x6c.html6
-rw-r--r--docs/module-doc/functions_func_0x6d.html14
-rw-r--r--docs/module-doc/functions_func_0x6e.html6
-rw-r--r--docs/module-doc/functions_func_0x6f.html6
-rw-r--r--docs/module-doc/functions_func_0x70.html10
-rw-r--r--docs/module-doc/functions_func_0x71.html6
-rw-r--r--docs/module-doc/functions_func_0x72.html11
-rw-r--r--docs/module-doc/functions_func_0x73.html9
-rw-r--r--docs/module-doc/functions_func_0x74.html12
-rw-r--r--docs/module-doc/functions_func_0x75.html6
-rw-r--r--docs/module-doc/functions_func_0x76.html6
-rw-r--r--docs/module-doc/functions_func_0x77.html6
-rw-r--r--docs/module-doc/functions_func_0x7e.html12
-rw-r--r--docs/module-doc/functions_vars.html101
-rw-r--r--docs/module-doc/globals.html14
-rw-r--r--docs/module-doc/globals_0x62.html5
-rw-r--r--docs/module-doc/globals_0x63.html16
-rw-r--r--docs/module-doc/globals_0x64.html6
-rw-r--r--docs/module-doc/globals_0x65.html2
-rw-r--r--docs/module-doc/globals_0x66.html13
-rw-r--r--docs/module-doc/globals_0x67.html7
-rw-r--r--docs/module-doc/globals_0x68.html61
-rw-r--r--docs/module-doc/globals_0x69.html14
-rw-r--r--docs/module-doc/globals_0x6b.html6
-rw-r--r--docs/module-doc/globals_0x6c.html8
-rw-r--r--docs/module-doc/globals_0x6d.html12
-rw-r--r--docs/module-doc/globals_0x6e.html5
-rw-r--r--docs/module-doc/globals_0x6f.html8
-rw-r--r--docs/module-doc/globals_0x70.html7
-rw-r--r--docs/module-doc/globals_0x71.html2
-rw-r--r--docs/module-doc/globals_0x72.html4
-rw-r--r--docs/module-doc/globals_0x73.html12
-rw-r--r--docs/module-doc/globals_0x74.html17
-rw-r--r--docs/module-doc/globals_0x75.html2
-rw-r--r--docs/module-doc/globals_0x76.html2
-rw-r--r--docs/module-doc/globals_0x77.html13
-rw-r--r--docs/module-doc/globals_0x78.html2
-rw-r--r--docs/module-doc/globals_0x7a.html2
-rw-r--r--docs/module-doc/globals_8h-source.html2
-rw-r--r--docs/module-doc/globals_8h.html41
-rw-r--r--docs/module-doc/globals_8h__dep__incl.md52
-rw-r--r--docs/module-doc/globals_8h__incl.map5
-rw-r--r--docs/module-doc/globals_8h__incl.md52
-rw-r--r--docs/module-doc/globals_defs.html18
-rw-r--r--docs/module-doc/globals_enum.html2
-rw-r--r--docs/module-doc/globals_eval.html2
-rw-r--r--docs/module-doc/globals_func.html145
-rw-r--r--docs/module-doc/globals_type.html7
-rw-r--r--docs/module-doc/globals_vars.html42
-rw-r--r--docs/module-doc/graph_legend.gifbin4705 -> 4705 bytes
-rw-r--r--docs/module-doc/graph_legend.html2
-rw-r--r--docs/module-doc/hashcomp_8h-source.html2
-rw-r--r--docs/module-doc/hashcomp_8h.html9
-rw-r--r--docs/module-doc/hashcomp_8h__dep__incl.map7
-rw-r--r--docs/module-doc/hashcomp_8h__dep__incl.md52
-rw-r--r--docs/module-doc/hierarchy.html9
-rw-r--r--docs/module-doc/inherit__graph__0.map2
-rw-r--r--docs/module-doc/inherit__graph__0.md52
-rw-r--r--docs/module-doc/inherit__graph__1.map3
-rw-r--r--docs/module-doc/inherit__graph__1.md52
-rw-r--r--docs/module-doc/inherit__graph__10.map2
-rw-r--r--docs/module-doc/inherit__graph__10.md52
-rw-r--r--docs/module-doc/inherit__graph__11.map2
-rw-r--r--docs/module-doc/inherit__graph__11.md52
-rw-r--r--docs/module-doc/inherit__graph__12.map2
-rw-r--r--docs/module-doc/inherit__graph__12.md52
-rw-r--r--docs/module-doc/inherit__graph__13.map2
-rw-r--r--docs/module-doc/inherit__graph__13.md52
-rw-r--r--docs/module-doc/inherit__graph__14.map2
-rw-r--r--docs/module-doc/inherit__graph__14.md52
-rw-r--r--docs/module-doc/inherit__graph__15.map2
-rw-r--r--docs/module-doc/inherit__graph__15.md52
-rw-r--r--docs/module-doc/inherit__graph__2.map34
-rw-r--r--docs/module-doc/inherit__graph__2.md52
-rw-r--r--docs/module-doc/inherit__graph__3.map32
-rw-r--r--docs/module-doc/inherit__graph__3.md52
-rw-r--r--docs/module-doc/inherit__graph__4.map3
-rw-r--r--docs/module-doc/inherit__graph__4.md52
-rw-r--r--docs/module-doc/inherit__graph__5.map2
-rw-r--r--docs/module-doc/inherit__graph__5.md52
-rw-r--r--docs/module-doc/inherit__graph__6.map2
-rw-r--r--docs/module-doc/inherit__graph__6.md52
-rw-r--r--docs/module-doc/inherit__graph__7.map2
-rw-r--r--docs/module-doc/inherit__graph__7.md52
-rw-r--r--docs/module-doc/inherit__graph__8.map2
-rw-r--r--docs/module-doc/inherit__graph__8.md52
-rw-r--r--docs/module-doc/inherit__graph__9.map2
-rw-r--r--docs/module-doc/inherit__graph__9.md52
-rw-r--r--docs/module-doc/inherits.html54
-rw-r--r--docs/module-doc/inspircd_8h-source.html180
-rw-r--r--docs/module-doc/inspircd_8h.html901
-rw-r--r--docs/module-doc/inspircd_8h__dep__incl.map18
-rw-r--r--docs/module-doc/inspircd_8h__dep__incl.md52
-rw-r--r--docs/module-doc/inspircd_8h__incl.map10
-rw-r--r--docs/module-doc/inspircd_8h__incl.md52
-rw-r--r--docs/module-doc/inspircd__io_8h-source.html244
-rw-r--r--docs/module-doc/inspircd__io_8h.html39
-rw-r--r--docs/module-doc/inspircd__io_8h__dep__incl.map13
-rw-r--r--docs/module-doc/inspircd__io_8h__dep__incl.md52
-rw-r--r--docs/module-doc/inspircd__io_8h__incl.map5
-rw-r--r--docs/module-doc/inspircd__io_8h__incl.md52
-rw-r--r--docs/module-doc/main.html2
-rw-r--r--docs/module-doc/message_8h-source.html2
-rw-r--r--docs/module-doc/message_8h.html18
-rw-r--r--docs/module-doc/message_8h__dep__incl.map5
-rw-r--r--docs/module-doc/message_8h__dep__incl.md52
-rw-r--r--docs/module-doc/message_8h__incl.map5
-rw-r--r--docs/module-doc/message_8h__incl.md52
-rw-r--r--docs/module-doc/mode_8h-source.html50
-rw-r--r--docs/module-doc/mode_8h.html779
-rw-r--r--docs/module-doc/mode_8h__dep__incl.map12
-rw-r--r--docs/module-doc/mode_8h__dep__incl.md52
-rw-r--r--docs/module-doc/mode_8h__incl.map6
-rw-r--r--docs/module-doc/mode_8h__incl.md52
-rw-r--r--docs/module-doc/modules_8cpp-source.html1799
-rw-r--r--docs/module-doc/modules_8cpp.html239
-rw-r--r--docs/module-doc/modules_8cpp__incl.map28
-rw-r--r--docs/module-doc/modules_8cpp__incl.md52
-rw-r--r--docs/module-doc/modules_8h-source.html906
-rw-r--r--docs/module-doc/modules_8h.html519
-rw-r--r--docs/module-doc/modules_8h__dep__incl.map7
-rw-r--r--docs/module-doc/modules_8h__dep__incl.md52
-rw-r--r--docs/module-doc/modules_8h__incl.map7
-rw-r--r--docs/module-doc/modules_8h__incl.md52
-rw-r--r--docs/module-doc/namespaceirc.html2
-rw-r--r--docs/module-doc/namespacemembers.html2
-rw-r--r--docs/module-doc/namespacemembers_type.html2
-rw-r--r--docs/module-doc/namespacenspace.html2
-rw-r--r--docs/module-doc/namespaces.html2
-rw-r--r--docs/module-doc/namespacestd.html2
-rw-r--r--docs/module-doc/socket_8cpp-source.html491
-rw-r--r--docs/module-doc/socket_8cpp.html71
-rw-r--r--docs/module-doc/socket_8cpp__incl.map8
-rw-r--r--docs/module-doc/socket_8cpp__incl.md52
-rw-r--r--docs/module-doc/socket_8h-source.html110
-rw-r--r--docs/module-doc/socket_8h.html4
-rw-r--r--docs/module-doc/socket_8h__dep__incl.map2
-rw-r--r--docs/module-doc/socket_8h__dep__incl.md52
-rw-r--r--docs/module-doc/socketengine_8cpp-source.html2
-rw-r--r--docs/module-doc/socketengine_8cpp.html8
-rw-r--r--docs/module-doc/socketengine_8cpp__incl.map6
-rw-r--r--docs/module-doc/socketengine_8cpp__incl.md52
-rw-r--r--docs/module-doc/socketengine_8h-source.html2
-rw-r--r--docs/module-doc/socketengine_8h.html20
-rw-r--r--docs/module-doc/socketengine_8h__dep__incl.map12
-rw-r--r--docs/module-doc/socketengine_8h__dep__incl.md52
-rw-r--r--docs/module-doc/socketengine_8h__incl.md52
-rw-r--r--docs/module-doc/structdns__ip4list-members.html2
-rw-r--r--docs/module-doc/structdns__ip4list.html2
-rw-r--r--docs/module-doc/structirc_1_1InAddr__HashComp-members.html2
-rw-r--r--docs/module-doc/structirc_1_1InAddr__HashComp.html2
-rw-r--r--docs/module-doc/structirc_1_1StrHashComp-members.html2
-rw-r--r--docs/module-doc/structirc_1_1StrHashComp.html2
-rw-r--r--docs/module-doc/structirc_1_1irc__char__traits-members.html2
-rw-r--r--docs/module-doc/structirc_1_1irc__char__traits.html2
-rw-r--r--docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html2
-rw-r--r--docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html2
-rw-r--r--docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html2
-rw-r--r--docs/module-doc/structnspace_1_1hash_3_01string_01_4.html2
-rw-r--r--docs/module-doc/tree.html43
-rw-r--r--docs/module-doc/typedefs_8h-source.html15
-rw-r--r--docs/module-doc/typedefs_8h.html56
-rw-r--r--docs/module-doc/typedefs_8h__dep__incl.map5
-rw-r--r--docs/module-doc/typedefs_8h__dep__incl.md52
-rw-r--r--docs/module-doc/typedefs_8h__incl.map14
-rw-r--r--docs/module-doc/typedefs_8h__incl.md52
-rw-r--r--docs/module-doc/userprocess_8h-source.html21
-rw-r--r--docs/module-doc/userprocess_8h.html15
-rw-r--r--docs/module-doc/userprocess_8h__incl.map5
-rw-r--r--docs/module-doc/userprocess_8h__incl.md52
-rw-r--r--docs/module-doc/users_8cpp-source.html1037
-rw-r--r--docs/module-doc/users_8cpp.html1290
-rw-r--r--docs/module-doc/users_8cpp__incl.map15
-rw-r--r--docs/module-doc/users_8cpp__incl.md52
-rw-r--r--docs/module-doc/users_8h-source.html299
-rw-r--r--docs/module-doc/users_8h.html976
-rw-r--r--docs/module-doc/users_8h__dep__incl.map24
-rw-r--r--docs/module-doc/users_8h__dep__incl.md52
-rw-r--r--docs/module-doc/users_8h__incl.map3
-rw-r--r--docs/module-doc/users_8h__incl.md52
-rw-r--r--docs/module-doc/xline_8h-source.html2
-rw-r--r--docs/module-doc/xline_8h.html52
-rw-r--r--docs/module-doc/xline_8h__dep__incl.map5
-rw-r--r--docs/module-doc/xline_8h__dep__incl.md52
-rw-r--r--docs/module-doc/xline_8h__incl.map5
-rw-r--r--docs/module-doc/xline_8h__incl.md52
452 files changed, 13686 insertions, 12346 deletions
diff --git a/docs/man/man3/Admin.3 b/docs/man/man3/Admin.3
index 96c0513ca..b4593f0a1 100644
--- a/docs/man/man3/Admin.3
+++ b/docs/man/man3/Admin.3
@@ -1,4 +1,4 @@
-.TH "Admin" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Admin" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -38,28 +38,28 @@ Holds /ADMIN data This class contains the admin details of the local server.
It is constructed by class \fBServer\fP, and has three read-only values, Name, Email and Nick that contain the specified values for the server where the module is running.
.PP
-Definition at line 125 of file modules.h.
+Definition at line 143 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Admin::Admin (\fBstd::string\fP name, \fBstd::string\fP email, \fBstd::string\fP nick)"
.PP
-Definition at line 163 of file modules.cpp.
+Definition at line 162 of file modules.cpp.
.PP
.nf
-163 : Name(name), Email(email), Nick(nick) { };
+162 : Name(name), Email(email), Nick(nick) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "const \fBstd::string\fP \fBAdmin::Email\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SS "const \fBstd::string\fP \fBAdmin::Name\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SS "const \fBstd::string\fP \fBAdmin::Nick\fP"
.PP
-Definition at line 128 of file modules.h.
+Definition at line 146 of file modules.h.
.SH "Author"
.PP
diff --git a/docs/man/man3/BanItem.3 b/docs/man/man3/BanItem.3
index 4893370c0..4d8bcce3e 100644
--- a/docs/man/man3/BanItem.3
+++ b/docs/man/man3/BanItem.3
@@ -1,4 +1,4 @@
-.TH "BanItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "BanItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/BoolSet.3 b/docs/man/man3/BoolSet.3
index c45571390..dbfb454dd 100644
--- a/docs/man/man3/BoolSet.3
+++ b/docs/man/man3/BoolSet.3
@@ -1,4 +1,4 @@
-.TH "BoolSet" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "BoolSet" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ConfigReader.3 b/docs/man/man3/ConfigReader.3
index 4b3f48a71..f3b765d89 100644
--- a/docs/man/man3/ConfigReader.3
+++ b/docs/man/man3/ConfigReader.3
@@ -1,4 +1,4 @@
-.TH "ConfigReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ConfigReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -84,7 +84,7 @@ Allows reading of values from configuration files This class allows a module to
It may either be instantiated with one parameter or none. Constructing the class using one parameter allows you to specify a path to your own configuration file, otherwise, inspircd.conf is read.
.PP
-Definition at line 1532 of file modules.h.
+Definition at line 1550 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ConfigReader::ConfigReader ()"
@@ -93,19 +93,19 @@ Default constructor.
.PP
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
.PP
-Definition at line 736 of file modules.cpp.
+Definition at line 735 of file modules.cpp.
.PP
References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
.PP
.nf
-737 {
-738 Config->ClearStack();
-739 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-740 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-741 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
-742 if (!this->readerror)
-743 this->error = CONF_FILE_NOT_FOUND;
-744 }
+736 {
+737 Config->ClearStack();
+738 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+739 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+740 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
+741 if (!this->readerror)
+742 this->error = CONF_FILE_NOT_FOUND;
+743 }
.fi
.PP
.SS "ConfigReader::ConfigReader (\fBstd::string\fP filename)"
@@ -114,19 +114,19 @@ Overloaded constructor.
.PP
This constructor initialises the ConfigReader class to read a user-specified config file
.PP
-Definition at line 756 of file modules.cpp.
+Definition at line 755 of file modules.cpp.
.PP
References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
.PP
.nf
-757 {
-758 Config->ClearStack();
-759 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-760 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-761 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
-762 if (!this->readerror)
-763 this->error = CONF_FILE_NOT_FOUND;
-764 };
+756 {
+757 Config->ClearStack();
+758 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+759 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+760 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
+761 if (!this->readerror)
+762 this->error = CONF_FILE_NOT_FOUND;
+763 };
.fi
.PP
.SS "ConfigReader::~ConfigReader ()"
@@ -135,17 +135,17 @@ Default destructor.
.PP
This method destroys the ConfigReader class.
.PP
-Definition at line 747 of file modules.cpp.
+Definition at line 746 of file modules.cpp.
.PP
References cache, and errorlog.
.PP
.nf
-748 {
-749 if (this->cache)
-750 delete this->cache;
-751 if (this->errorlog)
-752 delete this->errorlog;
-753 }
+747 {
+748 if (this->cache)
+749 delete this->cache;
+750 if (this->errorlog)
+751 delete this->errorlog;
+752 }
.fi
.PP
.SH "Member Function Documentation"
@@ -156,41 +156,41 @@ Dumps the list of errors in a config file to an output location.
.PP
If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers.
.PP
-Definition at line 835 of file modules.cpp.
+Definition at line 834 of file modules.cpp.
.PP
References errorlog, connection::fd, userrec::nick, WriteOpers(), and WriteServ().
.PP
.nf
-836 {
-837 if (bail)
-838 {
-839 printf('There were errors in your configuration:\n%s',errorlog->str().c_str());
-840 exit(0);
-841 }
-842 else
-843 {
-844 char dataline[1024];
-845 if (user)
-846 {
-847 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick);
-848 while (!errorlog->eof())
-849 {
-850 errorlog->getline(dataline,1024);
-851 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline);
-852 }
-853 }
-854 else
-855 {
-856 WriteOpers('There were errors in the configuration file:',user->nick);
-857 while (!errorlog->eof())
-858 {
-859 errorlog->getline(dataline,1024);
-860 WriteOpers(dataline);
-861 }
-862 }
-863 return;
-864 }
-865 }
+835 {
+836 if (bail)
+837 {
+838 printf('There were errors in your configuration:\n%s',errorlog->str().c_str());
+839 exit(0);
+840 }
+841 else
+842 {
+843 char dataline[1024];
+844 if (user)
+845 {
+846 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick);
+847 while (!errorlog->eof())
+848 {
+849 errorlog->getline(dataline,1024);
+850 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline);
+851 }
+852 }
+853 else
+854 {
+855 WriteOpers('There were errors in the configuration file:',user->nick);
+856 while (!errorlog->eof())
+857 {
+858 errorlog->getline(dataline,1024);
+859 WriteOpers(dataline);
+860 }
+861 }
+862 return;
+863 }
+864 }
.fi
.PP
.SS "int ConfigReader::Enumerate (\fBstd::string\fP tag)"
@@ -199,14 +199,14 @@ Counts the number of times a given tag appears in the config file.
.PP
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of \fBConfigReader::ReadValue\fP to loop through all copies of a multiple instance tag.
.PP
-Definition at line 868 of file modules.cpp.
+Definition at line 867 of file modules.cpp.
.PP
References cache, and ServerConfig::EnumConf().
.PP
.nf
-869 {
-870 return Config->EnumConf(cache,tag.c_str());
-871 }
+868 {
+869 return Config->EnumConf(cache,tag.c_str());
+870 }
.fi
.PP
.SS "int ConfigReader::EnumerateValues (\fBstd::string\fP tag, int index)"
@@ -215,14 +215,14 @@ Returns the number of items within a tag.
.PP
For example if the tag was <test tag='blah' data='foo'> then this function would return 2. Spaces and newlines both qualify as valid seperators between values.
.PP
-Definition at line 873 of file modules.cpp.
+Definition at line 872 of file modules.cpp.
.PP
References cache, and ServerConfig::EnumValues().
.PP
.nf
-874 {
-875 return Config->EnumValues(cache, tag.c_str(), index);
-876 }
+873 {
+874 return Config->EnumValues(cache, tag.c_str(), index);
+875 }
.fi
.PP
.SS "long ConfigReader::GetError ()"
@@ -231,16 +231,16 @@ Returns the last error to occur.
.PP
Valid errors can be found by looking in \fBmodules.h\fP. Any nonzero value indicates an error condition. A call to \fBGetError()\fP resets the error flag back to 0.
.PP
-Definition at line 828 of file modules.cpp.
+Definition at line 827 of file modules.cpp.
.PP
References error.
.PP
.nf
-829 {
-830 long olderr = this->error;
-831 this->error = 0;
-832 return olderr;
-833 }
+828 {
+829 long olderr = this->error;
+830 this->error = 0;
+831 return olderr;
+832 }
.fi
.PP
.SS "bool ConfigReader::ReadFlag (\fBstd::string\fP tag, \fBstd::string\fP name, int index)"
@@ -249,26 +249,26 @@ Retrieves a boolean value from the config file.
.PP
This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values '1', 'yes' and 'true' in the config file count as true to ReadFlag, and any other value counts as false.
.PP
-Definition at line 782 of file modules.cpp.
+Definition at line 781 of file modules.cpp.
.PP
References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-783 {
-784 char val[MAXBUF];
-785 char t[MAXBUF];
-786 char n[MAXBUF];
-787 strlcpy(t,tag.c_str(),MAXBUF);
-788 strlcpy(n,name.c_str(),MAXBUF);
-789 int res = Config->ReadConf(cache,t,n,index,val);
-790 if (!res)
-791 {
-792 this->error = CONF_VALUE_NOT_FOUND;
-793 return false;
-794 }
-795 std::string s = val;
-796 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1'));
-797 }
+782 {
+783 char val[MAXBUF];
+784 char t[MAXBUF];
+785 char n[MAXBUF];
+786 strlcpy(t,tag.c_str(),MAXBUF);
+787 strlcpy(n,name.c_str(),MAXBUF);
+788 int res = Config->ReadConf(cache,t,n,index,val);
+789 if (!res)
+790 {
+791 this->error = CONF_VALUE_NOT_FOUND;
+792 return false;
+793 }
+794 std::string s = val;
+795 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1'));
+796 }
.fi
.PP
.SS "long ConfigReader::ReadInteger (\fBstd::string\fP tag, \fBstd::string\fP name, int index, bool needs_unsigned)"
@@ -277,38 +277,38 @@ Retrieves an integer value from the config file.
.PP
This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to \fBGetError()\fP will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and \fBGetError()\fP will return CONF_NOT_UNSIGNED
.PP
-Definition at line 799 of file modules.cpp.
+Definition at line 798 of file modules.cpp.
.PP
References cache, CONF_NOT_A_NUMBER, CONF_NOT_UNSIGNED, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-800 {
-801 char val[MAXBUF];
-802 char t[MAXBUF];
-803 char n[MAXBUF];
-804 strlcpy(t,tag.c_str(),MAXBUF);
-805 strlcpy(n,name.c_str(),MAXBUF);
-806 int res = Config->ReadConf(cache,t,n,index,val);
-807 if (!res)
-808 {
-809 this->error = CONF_VALUE_NOT_FOUND;
-810 return 0;
-811 }
-812 for (unsigned int i = 0; i < strlen(val); i++)
-813 {
-814 if (!isdigit(val[i]))
-815 {
-816 this->error = CONF_NOT_A_NUMBER;
-817 return 0;
-818 }
-819 }
-820 if ((needs_unsigned) && (atoi(val)<0))
-821 {
-822 this->error = CONF_NOT_UNSIGNED;
-823 return 0;
-824 }
-825 return atoi(val);
-826 }
+799 {
+800 char val[MAXBUF];
+801 char t[MAXBUF];
+802 char n[MAXBUF];
+803 strlcpy(t,tag.c_str(),MAXBUF);
+804 strlcpy(n,name.c_str(),MAXBUF);
+805 int res = Config->ReadConf(cache,t,n,index,val);
+806 if (!res)
+807 {
+808 this->error = CONF_VALUE_NOT_FOUND;
+809 return 0;
+810 }
+811 for (unsigned int i = 0; i < strlen(val); i++)
+812 {
+813 if (!isdigit(val[i]))
+814 {
+815 this->error = CONF_NOT_A_NUMBER;
+816 return 0;
+817 }
+818 }
+819 if ((needs_unsigned) && (atoi(val)<0))
+820 {
+821 this->error = CONF_NOT_UNSIGNED;
+822 return 0;
+823 }
+824 return atoi(val);
+825 }
.fi
.PP
.SS "\fBstd::string\fP ConfigReader::ReadValue (\fBstd::string\fP tag, \fBstd::string\fP name, int index)"
@@ -317,25 +317,25 @@ Retrieves a value from the config file.
.PP
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
.PP
-Definition at line 766 of file modules.cpp.
+Definition at line 765 of file modules.cpp.
.PP
References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().
.PP
.nf
-767 {
-768 char val[MAXBUF];
-769 char t[MAXBUF];
-770 char n[MAXBUF];
-771 strlcpy(t,tag.c_str(),MAXBUF);
-772 strlcpy(n,name.c_str(),MAXBUF);
-773 int res = Config->ReadConf(cache,t,n,index,val);
-774 if (!res)
-775 {
-776 this->error = CONF_VALUE_NOT_FOUND;
-777 return '';
-778 }
-779 return val;
-780 }
+766 {
+767 char val[MAXBUF];
+768 char t[MAXBUF];
+769 char n[MAXBUF];
+770 strlcpy(t,tag.c_str(),MAXBUF);
+771 strlcpy(n,name.c_str(),MAXBUF);
+772 int res = Config->ReadConf(cache,t,n,index,val);
+773 if (!res)
+774 {
+775 this->error = CONF_VALUE_NOT_FOUND;
+776 return '';
+777 }
+778 return val;
+779 }
.fi
.PP
.SS "bool ConfigReader::Verify ()"
@@ -344,14 +344,14 @@ Returns true if a config file is valid.
.PP
This method is partially implemented and will only return false if the config file does not exist or could not be opened.
.PP
-Definition at line 878 of file modules.cpp.
+Definition at line 877 of file modules.cpp.
.PP
References readerror.
.PP
.nf
-879 {
-880 return this->readerror;
-881 }
+878 {
+879 return this->readerror;
+880 }
.fi
.PP
.SH "Member Data Documentation"
@@ -362,24 +362,24 @@ The contents of the configuration file This protected member should never be acc
.PP
It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.
.PP
-Definition at line 1540 of file modules.h.
+Definition at line 1558 of file modules.h.
.PP
Referenced by ConfigReader(), Enumerate(), EnumerateValues(), ReadFlag(), ReadInteger(), ReadValue(), and ~ConfigReader().
.SS "long \fBConfigReader::error\fP\fC [protected]\fP"
.PP
-Definition at line 1545 of file modules.h.
+Definition at line 1563 of file modules.h.
.PP
Referenced by ConfigReader(), GetError(), ReadFlag(), ReadInteger(), and ReadValue().
.SS "std::stringstream* \fBConfigReader::errorlog\fP\fC [protected]\fP"
.PP
-Definition at line 1541 of file modules.h.
+Definition at line 1559 of file modules.h.
.PP
Referenced by ConfigReader(), DumpErrors(), and ~ConfigReader().
.SS "bool \fBConfigReader::readerror\fP\fC [protected]\fP"
.PP
Used to store errors.
.PP
-Definition at line 1544 of file modules.h.
+Definition at line 1562 of file modules.h.
.PP
Referenced by ConfigReader(), and Verify().
diff --git a/docs/man/man3/ConnectClass.3 b/docs/man/man3/ConnectClass.3
index 25d462925..fc7128778 100644
--- a/docs/man/man3/ConnectClass.3
+++ b/docs/man/man3/ConnectClass.3
@@ -1,4 +1,4 @@
-.TH "ConnectClass" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ConnectClass" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -63,26 +63,26 @@ Inherits \fBclassbase\fP.
.PP
Holds information relevent to <connect allow> and <connect deny> tags in the config file.
.PP
-Definition at line 48 of file users.h.
+Definition at line 52 of file users.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ConnectClass::ConnectClass ()\fC [inline]\fP"
.PP
-Definition at line 82 of file users.h.
+Definition at line 86 of file users.h.
.PP
References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax, and threshold.
.PP
.nf
-83 {
-84 registration_timeout = 0;
-85 flood = 0;
-86 pingtime = 0;
-87 threshold = 0;
-88 sendqmax = 0;
-89 recvqmax = 0;
-90 strlcpy(host,'',MAXBUF);
-91 strlcpy(pass,'',MAXBUF);
-92 }
+87 {
+88 registration_timeout = 0;
+89 flood = 0;
+90 pingtime = 0;
+91 threshold = 0;
+92 sendqmax = 0;
+93 recvqmax = 0;
+94 strlcpy(host,'',MAXBUF);
+95 strlcpy(pass,'',MAXBUF);
+96 }
.fi
.PP
.SH "Member Data Documentation"
@@ -91,63 +91,63 @@ References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax
.PP
Number of lines in buffer before excess flood is triggered.
.PP
-Definition at line 59 of file users.h.
+Definition at line 63 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::host\fP[MAXBUF]"
.PP
Host mask for this line.
.PP
-Definition at line 62 of file users.h.
+Definition at line 66 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::pass\fP[MAXBUF]"
.PP
(Optional) Password for this line
.PP
-Definition at line 68 of file users.h.
+Definition at line 72 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::pingtime\fP"
.PP
Number of seconds between pings for this line.
.PP
-Definition at line 65 of file users.h.
+Definition at line 69 of file users.h.
.PP
Referenced by ConnectClass().
.SS "long \fBConnectClass::recvqmax\fP"
.PP
Maximum size of recvq for users in this class (bytes).
.PP
-Definition at line 80 of file users.h.
+Definition at line 84 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::registration_timeout\fP"
.PP
Max time to register the connection in seconds.
.PP
-Definition at line 56 of file users.h.
+Definition at line 60 of file users.h.
.PP
Referenced by ConnectClass().
.SS "long \fBConnectClass::sendqmax\fP"
.PP
Maximum size of sendq for users in this class (bytes).
.PP
-Definition at line 76 of file users.h.
+Definition at line 80 of file users.h.
.PP
Referenced by ConnectClass().
.SS "int \fBConnectClass::threshold\fP"
.PP
Threshold value for flood disconnect.
.PP
-Definition at line 72 of file users.h.
+Definition at line 76 of file users.h.
.PP
Referenced by ConnectClass().
.SS "char \fBConnectClass::type\fP"
.PP
Type of line, either CC_ALLOW or CC_DENY.
.PP
-Definition at line 53 of file users.h.
+Definition at line 57 of file users.h.
.SH "Author"
.PP
diff --git a/docs/man/man3/CullItem.3 b/docs/man/man3/CullItem.3
index 5a226c4c9..8877d91ac 100644
--- a/docs/man/man3/CullItem.3
+++ b/docs/man/man3/CullItem.3
@@ -1,4 +1,4 @@
-.TH "CullItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "CullItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/CullList.3 b/docs/man/man3/CullList.3
index 0d8444d53..88bba01ab 100644
--- a/docs/man/man3/CullList.3
+++ b/docs/man/man3/CullList.3
@@ -1,4 +1,4 @@
-.TH "CullList" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "CullList" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/DNS.3 b/docs/man/man3/DNS.3
index cd8856bc2..2b5c3617e 100644
--- a/docs/man/man3/DNS.3
+++ b/docs/man/man3/DNS.3
@@ -1,4 +1,4 @@
-.TH "DNS" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "DNS" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ELine.3 b/docs/man/man3/ELine.3
index f16fee5ec..0453224ce 100644
--- a/docs/man/man3/ELine.3
+++ b/docs/man/man3/ELine.3
@@ -1,4 +1,4 @@
-.TH "ELine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ELine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/Event.3 b/docs/man/man3/Event.3
index 42c9851da..7ce4188e5 100644
--- a/docs/man/man3/Event.3
+++ b/docs/man/man3/Event.3
@@ -1,4 +1,4 @@
-.TH "Event" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Event" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -58,17 +58,17 @@ The Event class is a unicast message directed at all modules.
When the class is properly instantiated it may be sent to all modules using the \fBSend()\fP method, which will trigger the OnEvent method in all modules passing the object as its parameter.
.PP
-Definition at line 197 of file modules.h.
+Definition at line 215 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Event::Event (char * anydata, \fBModule\fP * src, \fBstd::string\fP eventid)"
.PP
Create a new Event.
.PP
-Definition at line 194 of file modules.cpp.
+Definition at line 193 of file modules.cpp.
.PP
.nf
-194 : data(anydata), source(src), id(eventid) { };
+193 : data(anydata), source(src), id(eventid) { };
.fi
.PP
.SH "Member Function Documentation"
@@ -77,14 +77,14 @@ Definition at line 194 of file modules.cpp.
.PP
Get the Event data.
.PP
-Definition at line 196 of file modules.cpp.
+Definition at line 195 of file modules.cpp.
.PP
References data.
.PP
.nf
-197 {
-198 return this->data;
-199 }
+196 {
+197 return this->data;
+198 }
.fi
.PP
.SS "\fBstd::string\fP Event::GetEventID ()"
@@ -93,28 +93,28 @@ Get the event ID.
.PP
Use this to determine the event type for safe casting of the data
.PP
-Definition at line 212 of file modules.cpp.
+Definition at line 211 of file modules.cpp.
.PP
References id.
.PP
.nf
-213 {
-214 return this->id;
-215 }
+212 {
+213 return this->id;
+214 }
.fi
.PP
.SS "\fBModule\fP * Event::GetSource ()"
.PP
Get the event Source.
.PP
-Definition at line 201 of file modules.cpp.
+Definition at line 200 of file modules.cpp.
.PP
References source.
.PP
.nf
-202 {
-203 return this->source;
-204 }
+201 {
+202 return this->source;
+203 }
.fi
.PP
.SS "char * Event::Send ()\fC [virtual]\fP"
@@ -125,15 +125,15 @@ The return result of an \fBEvent::Send()\fP will always be NULL as no replies ar
.PP
Implements \fBModuleMessage\fP.
.PP
-Definition at line 206 of file modules.cpp.
+Definition at line 205 of file modules.cpp.
.PP
References FOREACH_MOD.
.PP
.nf
-207 {
-208 FOREACH_MOD OnEvent(this);
-209 return NULL;
-210 }
+206 {
+207 FOREACH_MOD OnEvent(this);
+208 return NULL;
+209 }
.fi
.PP
.SH "Member Data Documentation"
@@ -142,7 +142,7 @@ References FOREACH_MOD.
.PP
This member holds a pointer to arbitary data set by the emitter of the message.
.PP
-Definition at line 202 of file modules.h.
+Definition at line 220 of file modules.h.
.PP
Referenced by GetData().
.SS "\fBstd::string\fP \fBEvent::id\fP\fC [protected]\fP"
@@ -151,14 +151,14 @@ The event identifier.
.PP
This is arbitary text which should be used to distinguish one type of event from another.
.PP
-Definition at line 211 of file modules.h.
+Definition at line 229 of file modules.h.
.PP
Referenced by GetEventID().
.SS "\fBModule\fP* \fBEvent::source\fP\fC [protected]\fP"
.PP
This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply.
.PP
-Definition at line 206 of file modules.h.
+Definition at line 224 of file modules.h.
.PP
Referenced by GetSource().
diff --git a/docs/man/man3/ExemptItem.3 b/docs/man/man3/ExemptItem.3
index edf2a56e1..861deec67 100644
--- a/docs/man/man3/ExemptItem.3
+++ b/docs/man/man3/ExemptItem.3
@@ -1,4 +1,4 @@
-.TH "ExemptItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ExemptItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ExtMode.3 b/docs/man/man3/ExtMode.3
index 688fdef6d..8d172b5da 100644
--- a/docs/man/man3/ExtMode.3
+++ b/docs/man/man3/ExtMode.3
@@ -1,4 +1,4 @@
-.TH "ExtMode" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ExtMode" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -47,37 +47,37 @@ Holds an extended mode's details.
Used internally by \fBmodules.cpp\fP
.PP
-Definition at line 236 of file modules.h.
+Definition at line 254 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ExtMode::ExtMode (char mc, int ty, bool oper, int p_on, int p_off)\fC [inline]\fP"
.PP
-Definition at line 245 of file modules.h.
+Definition at line 263 of file modules.h.
.PP
.nf
-245 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
+263 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "bool \fBExtMode::list\fP"
.PP
-Definition at line 244 of file modules.h.
+Definition at line 262 of file modules.h.
.SS "char \fBExtMode::modechar\fP"
.PP
-Definition at line 239 of file modules.h.
+Definition at line 257 of file modules.h.
.SS "bool \fBExtMode::needsoper\fP"
.PP
-Definition at line 241 of file modules.h.
+Definition at line 259 of file modules.h.
.SS "int \fBExtMode::params_when_off\fP"
.PP
-Definition at line 243 of file modules.h.
+Definition at line 261 of file modules.h.
.SS "int \fBExtMode::params_when_on\fP"
.PP
-Definition at line 242 of file modules.h.
+Definition at line 260 of file modules.h.
.SS "int \fBExtMode::type\fP"
.PP
-Definition at line 240 of file modules.h.
+Definition at line 258 of file modules.h.
.SH "Author"
.PP
diff --git a/docs/man/man3/Extensible.3 b/docs/man/man3/Extensible.3
index ea99cdf6a..25be94035 100644
--- a/docs/man/man3/Extensible.3
+++ b/docs/man/man3/Extensible.3
@@ -1,4 +1,4 @@
-.TH "Extensible" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Extensible" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -12,7 +12,7 @@ Extensible \- class Extensible is the parent class of many classes such as userr
.PP
Inherits \fBclassbase\fP.
.PP
-Inherited by \fBchanrec\fP, \fBcommand_t\fP, and \fBconnection\fP.
+Inherited by \fBchanrec\fP, and \fBconnection\fP.
.PP
.SS "Public Member Functions"
diff --git a/docs/man/man3/FileReader.3 b/docs/man/man3/FileReader.3
index 99afbea95..e161908a0 100644
--- a/docs/man/man3/FileReader.3
+++ b/docs/man/man3/FileReader.3
@@ -1,4 +1,4 @@
-.TH "FileReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "FileReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -57,7 +57,7 @@ Caches a text file into memory and can be used to retrieve lines from it.
This class contains methods for read-only manipulation of a text file in memory. Either use the constructor type with one parameter to load a file into memory at construction, or use the LoadFile method to load a file.
.PP
-Definition at line 1621 of file modules.h.
+Definition at line 1639 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "FileReader::FileReader ()"
@@ -66,11 +66,11 @@ Default constructor.
.PP
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
.PP
-Definition at line 891 of file modules.cpp.
+Definition at line 890 of file modules.cpp.
.PP
.nf
-892 {
-893 }
+891 {
+892 }
.fi
.PP
.SS "FileReader::FileReader (\fBstd::string\fP filename)"
@@ -79,16 +79,16 @@ Secondary constructor.
.PP
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0.
.PP
-Definition at line 884 of file modules.cpp.
+Definition at line 883 of file modules.cpp.
.PP
References fc, and readfile().
.PP
.nf
-885 {
-886 file_cache c;
-887 readfile(c,filename.c_str());
-888 this->fc = c;
-889 }
+884 {
+885 file_cache c;
+886 readfile(c,filename.c_str());
+887 this->fc = c;
+888 }
.fi
.PP
.SS "FileReader::~FileReader ()"
@@ -97,11 +97,11 @@ Default destructor.
.PP
This deletes the memory allocated to the file.
.PP
-Definition at line 903 of file modules.cpp.
+Definition at line 902 of file modules.cpp.
.PP
.nf
-904 {
-905 }
+903 {
+904 }
.fi
.PP
.SH "Member Function Documentation"
@@ -110,21 +110,21 @@ Definition at line 903 of file modules.cpp.
.PP
Returns true if the file exists This function will return false if the file could not be opened.
.PP
-Definition at line 907 of file modules.cpp.
+Definition at line 906 of file modules.cpp.
.PP
References fc.
.PP
.nf
-908 {
-909 if (fc.size() == 0)
-910 {
-911 return(false);
-912 }
-913 else
-914 {
-915 return(true);
-916 }
-917 }
+907 {
+908 if (fc.size() == 0)
+909 {
+910 return(false);
+911 }
+912 else
+913 {
+914 return(true);
+915 }
+916 }
.fi
.PP
.SS "int FileReader::FileSize ()"
@@ -133,14 +133,14 @@ Returns the size of the file in lines.
.PP
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
.PP
-Definition at line 926 of file modules.cpp.
+Definition at line 925 of file modules.cpp.
.PP
References fc.
.PP
.nf
-927 {
-928 return fc.size();
-929 }
+926 {
+927 return fc.size();
+928 }
.fi
.PP
.SS "\fBstd::string\fP FileReader::GetLine (int x)"
@@ -149,16 +149,16 @@ Retrieve one line from the file.
.PP
This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
.PP
-Definition at line 919 of file modules.cpp.
+Definition at line 918 of file modules.cpp.
.PP
References fc.
.PP
.nf
-920 {
-921 if ((x<0) || ((unsigned)x>fc.size()))
-922 return '';
-923 return fc[x];
-924 }
+919 {
+920 if ((x<0) || ((unsigned)x>fc.size()))
+921 return '';
+922 return fc[x];
+923 }
.fi
.PP
.SS "void FileReader::LoadFile (\fBstd::string\fP filename)"
@@ -167,23 +167,23 @@ Used to load a file.
.PP
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0.
.PP
-Definition at line 895 of file modules.cpp.
+Definition at line 894 of file modules.cpp.
.PP
References fc, and readfile().
.PP
.nf
-896 {
-897 file_cache c;
-898 readfile(c,filename.c_str());
-899 this->fc = c;
-900 }
+895 {
+896 file_cache c;
+897 readfile(c,filename.c_str());
+898 this->fc = c;
+899 }
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "\fBfile_cache\fP \fBFileReader::fc\fP\fC [private]\fP"
.PP
-Definition at line 1623 of file modules.h.
+Definition at line 1641 of file modules.h.
.PP
Referenced by Exists(), FileReader(), FileSize(), GetLine(), and LoadFile().
diff --git a/docs/man/man3/GLine.3 b/docs/man/man3/GLine.3
index 6ef1c742e..83c54ae8a 100644
--- a/docs/man/man3/GLine.3
+++ b/docs/man/man3/GLine.3
@@ -1,4 +1,4 @@
-.TH "GLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "GLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/HostItem.3 b/docs/man/man3/HostItem.3
index 79c256f86..48d8f6d15 100644
--- a/docs/man/man3/HostItem.3
+++ b/docs/man/man3/HostItem.3
@@ -1,4 +1,4 @@
-.TH "HostItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "HostItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/InspIRCd.3 b/docs/man/man3/InspIRCd.3
index 219e539b4..be447b95d 100644
--- a/docs/man/man3/InspIRCd.3
+++ b/docs/man/man3/InspIRCd.3
@@ -1,4 +1,4 @@
-.TH "InspIRCd" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InspIRCd" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -12,6 +12,9 @@ InspIRCd \-
.in +1c
.ti -1c
+.RI "void \fBMakeLowerMap\fP ()"
+.br
+.ti -1c
.RI "\fBstd::string\fP \fBGetRevision\fP ()"
.br
.ti -1c
@@ -39,6 +42,18 @@ InspIRCd \-
.ti -1c
.RI "time_t \fBstartup_time\fP"
.br
+.ti -1c
+.RI "\fBModeParser\fP * \fBModeGrok\fP"
+.br
+.ti -1c
+.RI "CommandParser * \fBParser\fP"
+.br
+.ti -1c
+.RI "\fBSocketEngine\fP * \fBSE\fP"
+.br
+.ti -1c
+.RI "\fBserverstats\fP * \fBstats\fP"
+.br
.in -1c
.SS "Private Member Functions"
@@ -59,7 +74,7 @@ InspIRCd \-
.in -1c
.SH "Detailed Description"
.PP
-Definition at line 95 of file inspircd.h.
+Definition at line 99 of file inspircd.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "InspIRCd::InspIRCd (int argc, char ** argv)"
@@ -77,6 +92,8 @@ Definition at line 95 of file inspircd.h.
Referenced by Server::GetVersion().
.SS "bool InspIRCd::LoadModule (const char * filename)"
.PP
+.SS "void InspIRCd::MakeLowerMap ()"
+.PP
.SS "char* InspIRCd::ModuleError ()"
.PP
.SS "int InspIRCd::Run ()"
@@ -85,12 +102,32 @@ Referenced by Server::GetVersion().
.PP
.SH "Member Data Documentation"
.PP
+.SS "\fBModeParser\fP* \fBInspIRCd::ModeGrok\fP"
+.PP
+Definition at line 109 of file inspircd.h.
+.PP
+Referenced by Server::SendMode().
.SS "char \fBInspIRCd::MODERR\fP[MAXBUF]\fC [private]\fP"
.PP
-Definition at line 99 of file inspircd.h.
+Definition at line 103 of file inspircd.h.
+.SS "CommandParser* \fBInspIRCd::Parser\fP"
+.PP
+Definition at line 110 of file inspircd.h.
+.PP
+Referenced by Server::AddCommand(), Server::CallCommandHandler(), force_nickchange(), and Server::IsValidModuleCommand().
+.SS "\fBSocketEngine\fP* \fBInspIRCd::SE\fP"
+.PP
+Definition at line 111 of file inspircd.h.
+.PP
+Referenced by AddClient(), InspSocket::InspSocket(), kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().
.SS "time_t \fBInspIRCd::startup_time\fP"
.PP
-Definition at line 104 of file inspircd.h.
+Definition at line 108 of file inspircd.h.
+.SS "\fBserverstats\fP* \fBInspIRCd::stats\fP"
+.PP
+Definition at line 112 of file inspircd.h.
+.PP
+Referenced by force_nickchange(), and FullConnectUser().
.SH "Author"
.PP
diff --git a/docs/man/man3/InspSocket.3 b/docs/man/man3/InspSocket.3
index d2e99e555..9ba5cbdfd 100644
--- a/docs/man/man3/InspSocket.3
+++ b/docs/man/man3/InspSocket.3
@@ -1,4 +1,4 @@
-.TH "InspSocket" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InspSocket" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -94,6 +94,14 @@ InspSocket \- InspSocket is an extendable socket class which modules can use for
.br
.RI "\fIThe destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket. \fP"
.in -1c
+.SS "Private Member Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBFlushWriteBuffer\fP ()"
+.br
+.RI "\fIFlushes the write buffer. \fP"
+.in -1c
.SS "Private Attributes"
.in +1c
@@ -130,10 +138,14 @@ InspSocket \- InspSocket is an extendable socket class which modules can use for
.br
.RI "\fIThis value is true if the socket has timed out. \fP"
.ti -1c
-.RI "char \fBibuf\fP [16384]"
+.RI "char \fBibuf\fP [65535]"
.br
.RI "\fISocket input buffer, used by read(). \fP"
.ti -1c
+.RI "\fBstd::string\fP \fBBuffer\fP"
+.br
+.RI "\fIThe output buffer for this socket. \fP"
+.ti -1c
.RI "\fBstd::string\fP \fBIP\fP"
.br
.RI "\fIThe IP address being connected to stored in string form for easy retrieval by accessors. \fP"
@@ -163,14 +175,14 @@ Definition at line 47 of file socket.h.
.PP
The default constructor does nothing and should not be used.
.PP
-Definition at line 48 of file socket.cpp.
+Definition at line 45 of file socket.cpp.
.PP
References I_DISCONNECTED, and state.
.PP
.nf
-49 {
-50 this->state = I_DISCONNECTED;
-51 }
+46 {
+47 this->state = I_DISCONNECTED;
+48 }
.fi
.PP
.SS "InspSocket::InspSocket (int newfd, char * ip)"
@@ -179,18 +191,18 @@ This constructor is used to associate an existing connecting with an InspSocket
.PP
The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state.
.PP
-Definition at line 53 of file socket.cpp.
+Definition at line 50 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), fd, I_CONNECTED, IP, state, and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), fd, I_CONNECTED, IP, InspIRCd::SE, state, and X_ESTAB_MODULE.
.PP
.nf
-54 {
-55 this->fd = newfd;
-56 this->state = I_CONNECTED;
-57 this->IP = ip;
-58 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-59 socket_ref[this->fd] = this;
-60 }
+51 {
+52 this->fd = newfd;
+53 this->state = I_CONNECTED;
+54 this->IP = ip;
+55 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+56 socket_ref[this->fd] = this;
+57 }
.fi
.PP
.SS "InspSocket::InspSocket (\fBstd::string\fP host, int port, bool listening, unsigned long maxtime)"
@@ -210,102 +222,102 @@ This constructor is used to create a new socket, either listening for connection
.PP
.PP
-Definition at line 62 of file socket.cpp.
+Definition at line 59 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), state, timeout, timeout_end, and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), InspIRCd::SE, state, timeout, timeout_end, and X_ESTAB_MODULE.
.PP
.nf
-63 {
-64 if (listening) {
-65 if ((this->fd = OpenTCPSocket()) == ERROR)
-66 {
-67 this->fd = -1;
-68 this->state = I_ERROR;
-69 this->OnError(I_ERR_SOCKET);
-70 log(DEBUG,'OpenTCPSocket() error');
-71 return;
-72 }
-73 else
-74 {
-75 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
-76 {
-77 this->Close();
-78 this->fd = -1;
-79 this->state = I_ERROR;
-80 this->OnError(I_ERR_BIND);
-81 log(DEBUG,'BindSocket() error %s',strerror(errno));
-82 return;
-83 }
-84 else
-85 {
-86 this->state = I_LISTENING;
-87 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-88 socket_ref[this->fd] = this;
-89 log(DEBUG,'New socket now in I_LISTENING state');
-90 return;
-91 }
-92 }
-93 } else {
-94 char* ip;
-95 this->host = host;
-96 hostent* hoste = gethostbyname(host.c_str());
-97 if (!hoste) {
-98 ip = (char*)host.c_str();
-99 } else {
-100 struct in_addr* ia = (in_addr*)hoste->h_addr;
-101 ip = inet_ntoa(*ia);
-102 }
-103
-104 this->IP = ip;
-105
-106 timeout_end = time(NULL)+maxtime;
-107 timeout = false;
-108 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-109 {
-110 this->state = I_ERROR;
-111 this->OnError(I_ERR_SOCKET);
-112 return;
-113 }
-114 this->port = port;
-115 inet_aton(ip,&addy);
-116 addr.sin_family = AF_INET;
-117 addr.sin_addr = addy;
-118 addr.sin_port = htons(this->port);
-119
-120 int flags;
-121 flags = fcntl(this->fd, F_GETFL, 0);
-122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-123
-124 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
-125 {
-126 if (errno != EINPROGRESS)
-127 {
-128 this->Close();
-129 this->OnError(I_ERR_CONNECT);
-130 this->state = I_ERROR;
-131 return;
-132 }
-133 }
-134 this->state = I_CONNECTING;
-135 SE->AddFd(this->fd,false,X_ESTAB_MODULE);
-136 socket_ref[this->fd] = this;
-137 return;
-138 }
-139 }
+60 {
+61 if (listening) {
+62 if ((this->fd = OpenTCPSocket()) == ERROR)
+63 {
+64 this->fd = -1;
+65 this->state = I_ERROR;
+66 this->OnError(I_ERR_SOCKET);
+67 log(DEBUG,'OpenTCPSocket() error');
+68 return;
+69 }
+70 else
+71 {
+72 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
+73 {
+74 this->Close();
+75 this->fd = -1;
+76 this->state = I_ERROR;
+77 this->OnError(I_ERR_BIND);
+78 log(DEBUG,'BindSocket() error %s',strerror(errno));
+79 return;
+80 }
+81 else
+82 {
+83 this->state = I_LISTENING;
+84 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+85 socket_ref[this->fd] = this;
+86 log(DEBUG,'New socket now in I_LISTENING state');
+87 return;
+88 }
+89 }
+90 } else {
+91 char* ip;
+92 this->host = host;
+93 hostent* hoste = gethostbyname(host.c_str());
+94 if (!hoste) {
+95 ip = (char*)host.c_str();
+96 } else {
+97 struct in_addr* ia = (in_addr*)hoste->h_addr;
+98 ip = inet_ntoa(*ia);
+99 }
+100
+101 this->IP = ip;
+102
+103 timeout_end = time(NULL)+maxtime;
+104 timeout = false;
+105 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+106 {
+107 this->state = I_ERROR;
+108 this->OnError(I_ERR_SOCKET);
+109 return;
+110 }
+111 this->port = port;
+112 inet_aton(ip,&addy);
+113 addr.sin_family = AF_INET;
+114 addr.sin_addr = addy;
+115 addr.sin_port = htons(this->port);
+116
+117 int flags;
+118 flags = fcntl(this->fd, F_GETFL, 0);
+119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+120
+121 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
+122 {
+123 if (errno != EINPROGRESS)
+124 {
+125 this->Close();
+126 this->OnError(I_ERR_CONNECT);
+127 this->state = I_ERROR;
+128 return;
+129 }
+130 }
+131 this->state = I_CONNECTING;
+132 ServerInstance->SE->AddFd(this->fd,false,X_ESTAB_MODULE);
+133 socket_ref[this->fd] = this;
+134 return;
+135 }
+136 }
.fi
.PP
.SS "InspSocket::~InspSocket ()\fC [virtual]\fP"
.PP
The destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket.
.PP
-Definition at line 272 of file socket.cpp.
+Definition at line 271 of file socket.cpp.
.PP
References Close().
.PP
.nf
-273 {
-274 this->Close();
-275 }
+272 {
+273 this->Close();
+274 }
.fi
.PP
.SH "Member Function Documentation"
@@ -314,65 +326,92 @@ References Close().
.PP
This method causes the socket to close, and may also be triggered by other methods such as OnTimeout and OnError.
.PP
-Definition at line 141 of file socket.cpp.
+Definition at line 138 of file socket.cpp.
.PP
References fd, and OnClose().
.PP
Referenced by InspSocket(), and ~InspSocket().
.PP
.nf
-142 {
-143 if (this->fd != -1)
-144 {
-145 this->OnClose();
-146 shutdown(this->fd,2);
-147 close(this->fd);
-148 socket_ref[this->fd] = NULL;
-149 this->fd = -1;
-150 }
-151 }
+139 {
+140 if (this->fd != -1)
+141 {
+142 this->OnClose();
+143 shutdown(this->fd,2);
+144 close(this->fd);
+145 socket_ref[this->fd] = NULL;
+146 this->fd = -1;
+147 }
+148 }
+.fi
+.PP
+.SS "void InspSocket::FlushWriteBuffer ()\fC [private]\fP"
+.PP
+Flushes the write buffer.
+.PP
+Definition at line 181 of file socket.cpp.
+.PP
+References Buffer.
+.PP
+Referenced by Timeout(), and Write().
+.PP
+.nf
+182 {
+183 int result = 0;
+184 if (this->Buffer.length())
+185 {
+186 result = send(this->fd,this->Buffer.c_str(),this->Buffer.length(),0);
+187 if (result > 0)
+188 {
+189 /* If we wrote some, advance the buffer forwards */
+190 char* n = (char*)this->Buffer.c_str();
+191 n += result;
+192 this->Buffer = n;
+193 }
+194 }
+195 }
.fi
.PP
.SS "int InspSocket::GetFd ()"
.PP
This method returns the socket's file descriptor as assigned by the operating system, or -1 if no descriptor has been assigned.
.PP
-Definition at line 259 of file socket.cpp.
+Definition at line 258 of file socket.cpp.
.PP
References fd.
.PP
.nf
-260 {
-261 return this->fd;
-262 }
+259 {
+260 return this->fd;
+261 }
.fi
.PP
.SS "\fBstd::string\fP InspSocket::GetIP ()"
.PP
Returns the IP address associated with this connection, or an empty string if no IP address exists.
.PP
-Definition at line 153 of file socket.cpp.
+Definition at line 150 of file socket.cpp.
.PP
References IP.
.PP
.nf
-154 {
-155 return this->IP;
-156 }
+151 {
+152 return this->IP;
+153 }
.fi
.PP
.SS "\fBInspSocketState\fP InspSocket::GetState ()"
.PP
Returns the current socket state.
.PP
-Definition at line 254 of file socket.cpp.
+Definition at line 253 of file socket.cpp.
.PP
References state.
.PP
.nf
-255 {
-256 return this->state;
-257 }
+254 {
+255 return this->state;
+256 }
.fi
.PP
.SS "void InspSocket::OnClose ()\fC [virtual]\fP"
@@ -381,12 +420,12 @@ Whenever close() is called, \fBOnClose()\fP will be called first.
.PP
Please note that this means OnClose will be called alongside \fBOnError()\fP, \fBOnTimeout()\fP, and \fBClose()\fP, and also when cancelling a listening socket by calling the destructor indirectly.
.PP
-Definition at line 270 of file socket.cpp.
+Definition at line 269 of file socket.cpp.
.PP
Referenced by Close().
.PP
.nf
-270 { return; }
+269 { return; }
.fi
.PP
.SS "bool InspSocket::OnConnected ()\fC [virtual]\fP"
@@ -400,12 +439,12 @@ false to abort the connection, true to continue
.PP
.PP
-Definition at line 264 of file socket.cpp.
+Definition at line 263 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-264 { return true; }
+263 { return true; }
.fi
.PP
.SS "bool InspSocket::OnDataReady ()\fC [virtual]\fP"
@@ -421,22 +460,22 @@ false to close the socket
.PP
.PP
-Definition at line 268 of file socket.cpp.
+Definition at line 267 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-268 { return true; }
+267 { return true; }
.fi
.PP
.SS "int InspSocket::OnDisconnect ()\fC [virtual]\fP"
.PP
When an established connection is terminated, the OnDisconnect method is triggered.
.PP
-Definition at line 266 of file socket.cpp.
+Definition at line 265 of file socket.cpp.
.PP
.nf
-266 { return 0; }
+265 { return 0; }
.fi
.PP
.SS "void InspSocket::OnError (\fBInspSocketError\fP e)\fC [virtual]\fP"
@@ -452,12 +491,12 @@ A closed socket in itself is not an error, however errors also generate close ev
.PP
.PP
-Definition at line 265 of file socket.cpp.
+Definition at line 264 of file socket.cpp.
.PP
Referenced by InspSocket(), and Timeout().
.PP
.nf
-265 { return; }
+264 { return; }
.fi
.PP
.SS "int InspSocket::OnIncomingConnection (int newfd, char * ip)\fC [virtual]\fP"
@@ -470,12 +509,12 @@ MySocket* newsocket = new MySocket(newfd,ip);
.PP
Once you have done this, you can then associate the new socket with the core using \fBServer::AddSocket()\fP.
.PP
-Definition at line 267 of file socket.cpp.
+Definition at line 266 of file socket.cpp.
.PP
Referenced by Poll().
.PP
.nf
-267 { return 0; }
+266 { return 0; }
.fi
.PP
.SS "void InspSocket::OnTimeout ()\fC [virtual]\fP"
@@ -484,12 +523,12 @@ When an outbound connection fails, and the attempt times out, you will receive t
.PP
The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed.
.PP
-Definition at line 269 of file socket.cpp.
+Definition at line 268 of file socket.cpp.
.PP
Referenced by Timeout().
.PP
.nf
-269 { return; }
+268 { return; }
.fi
.PP
.SS "bool InspSocket::Poll ()"
@@ -498,64 +537,64 @@ Only the core should call this function.
.PP
When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change.
.PP
-Definition at line 217 of file socket.cpp.
+Definition at line 216 of file socket.cpp.
.PP
-References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), SetState(), and X_ESTAB_MODULE.
+References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), InspIRCd::SE, SetState(), and X_ESTAB_MODULE.
.PP
.nf
-218 {
-219 int incoming = -1;
-220
-221 switch (this->state)
-222 {
-223 case I_CONNECTING:
-224 this->SetState(I_CONNECTED);
-225 /* Our socket was in write-state, so delete it and re-add it
-226 * in read-state.
-227 */
-228 SE->DelFd(this->fd);
-229 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-230 return this->OnConnected();
-231 break;
-232 case I_LISTENING:
-233 length = sizeof (client);
-234 incoming = accept (this->fd, (sockaddr*)&client,&length);
-235 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
-236 return true;
-237 break;
-238 case I_CONNECTED:
-239 return this->OnDataReady();
-240 break;
-241 default:
-242 break;
-243 }
-244
-245 return true;
-246 }
+217 {
+218 int incoming = -1;
+219
+220 switch (this->state)
+221 {
+222 case I_CONNECTING:
+223 this->SetState(I_CONNECTED);
+224 /* Our socket was in write-state, so delete it and re-add it
+225 * in read-state.
+226 */
+227 ServerInstance->SE->DelFd(this->fd);
+228 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+229 return this->OnConnected();
+230 break;
+231 case I_LISTENING:
+232 length = sizeof (client);
+233 incoming = accept (this->fd, (sockaddr*)&client,&length);
+234 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
+235 return true;
+236 break;
+237 case I_CONNECTED:
+238 return this->OnDataReady();
+239 break;
+240 default:
+241 break;
+242 }
+243
+244 return true;
+245 }
.fi
.PP
.SS "char * InspSocket::Read ()\fC [virtual]\fP"
.PP
Reads all pending bytes from the socket into a char* array which can be up to 16 kilobytes in length.
.PP
-Definition at line 158 of file socket.cpp.
+Definition at line 155 of file socket.cpp.
.PP
References DEBUG, ibuf, and log().
.PP
.nf
-159 {
-160 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
-161 if (n > 0)
-162 {
-163 ibuf[n] = 0;
-164 return ibuf;
-165 }
-166 else
-167 {
-168 log(DEBUG,'EOF or error on socket');
-169 return NULL;
-170 }
-171 }
+156 {
+157 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
+158 if (n > 0)
+159 {
+160 ibuf[n] = 0;
+161 return ibuf;
+162 }
+163 else
+164 {
+165 log(DEBUG,'EOF or error on socket');
+166 return NULL;
+167 }
+168 }
.fi
.PP
.SS "void InspSocket::SetState (\fBInspSocketState\fP s)"
@@ -564,17 +603,17 @@ Changes the socket's state.
.PP
The core uses this to change socket states, and you should not call it directly.
.PP
-Definition at line 248 of file socket.cpp.
+Definition at line 247 of file socket.cpp.
.PP
References DEBUG, log(), and state.
.PP
Referenced by Poll().
.PP
.nf
-249 {
-250 log(DEBUG,'Socket state change');
-251 this->state = s;
-252 }
+248 {
+249 log(DEBUG,'Socket state change');
+250 this->state = s;
+251 }
.fi
.PP
.SS "bool InspSocket::Timeout (time_t current)"
@@ -588,26 +627,28 @@ true if timed out, false if not timed out
.PP
.PP
-Definition at line 200 of file socket.cpp.
+Definition at line 197 of file socket.cpp.
.PP
-References I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.
+References FlushWriteBuffer(), I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.
.PP
.nf
-201 {
-202 if ((this->state == I_CONNECTING) && (current > timeout_end))
-203 {
-204 // for non-listening sockets, the timeout can occur
-205 // which causes termination of the connection after
-206 // the given number of seconds without a successful
-207 // connection.
-208 this->OnTimeout();
-209 this->OnError(I_ERR_TIMEOUT);
-210 timeout = true;
-211 this->state = I_ERROR;
-212 return true;
-213 }
-214 return false;
-215 }
+198 {
+199 if ((this->state == I_CONNECTING) && (current > timeout_end))
+200 {
+201 // for non-listening sockets, the timeout can occur
+202 // which causes termination of the connection after
+203 // the given number of seconds without a successful
+204 // connection.
+205 this->OnTimeout();
+206 this->OnError(I_ERR_TIMEOUT);
+207 timeout = true;
+208 this->state = I_ERROR;
+209 return true;
+210 }
+211 if (this->Buffer.length())
+212 this->FlushWriteBuffer();
+213 return false;
+214 }
.fi
.PP
.SS "int InspSocket::Write (\fBstd::string\fP data)\fC [virtual]\fP"
@@ -623,30 +664,16 @@ No carriage returns or linefeeds are appended to the string.
.PP
.PP
-Definition at line 177 of file socket.cpp.
+Definition at line 174 of file socket.cpp.
+.PP
+References Buffer, and FlushWriteBuffer().
.PP
.nf
-178 {
-179 char* d = (char*)data.c_str();
-180 unsigned int written = 0;
-181 int n = 0;
-182 int s = data.length();
-183 while ((written < data.length()) && (n >= 0))
-184 {
-185 n = send(this->fd,d,s,0);
-186 if (n > 0)
-187 {
-188 // If we didnt write everything, advance
-189 // the pointers so that when we retry
-190 // the next time around the loop, we try
-191 // to write what we failed to write before.
-192 written += n;
-193 s -= n;
-194 d += n;
-195 }
-196 }
-197 return written;
-198 }
+175 {
+176 this->Buffer = this->Buffer + data;
+177 this->FlushWriteBuffer();
+178 return data.length();
+179 }
.fi
.PP
.SH "Member Data Documentation"
@@ -665,11 +692,18 @@ The host being connected to, in in_addr form.
Definition at line 84 of file socket.h.
.PP
Referenced by InspSocket().
+.SS "\fBstd::string\fP \fBInspSocket::Buffer\fP\fC [private]\fP"
+.PP
+The output buffer for this socket.
+.PP
+Definition at line 111 of file socket.h.
+.PP
+Referenced by FlushWriteBuffer(), and Write().
.SS "sockaddr_in \fBInspSocket::client\fP\fC [private]\fP"
.PP
Client sockaddr structure used by accept().
.PP
-Definition at line 119 of file socket.h.
+Definition at line 124 of file socket.h.
.PP
Referenced by Poll().
.SS "int \fBInspSocket::fd\fP\fC [private]\fP"
@@ -684,11 +718,11 @@ Referenced by Close(), GetFd(), and InspSocket().
The hostname connected to.
.PP
Definition at line 59 of file socket.h.
-.SS "char \fBInspSocket::ibuf\fP[16384]\fC [private]\fP"
+.SS "char \fBInspSocket::ibuf\fP[65535]\fC [private]\fP"
.PP
Socket input buffer, used by read().
.PP
-The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space.
+The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space.
.PP
Definition at line 106 of file socket.h.
.PP
@@ -697,14 +731,14 @@ Referenced by Read().
.PP
The IP address being connected to stored in string form for easy retrieval by accessors.
.PP
-Definition at line 113 of file socket.h.
+Definition at line 118 of file socket.h.
.PP
Referenced by GetIP(), and InspSocket().
.SS "socklen_t \fBInspSocket::length\fP\fC [private]\fP"
.PP
Used by accept() to indicate the sizes of the sockaddr_in structures.
.PP
-Definition at line 131 of file socket.h.
+Definition at line 136 of file socket.h.
.PP
Referenced by Poll().
.SS "int \fBInspSocket::port\fP\fC [private]\fP"
@@ -716,7 +750,7 @@ Definition at line 65 of file socket.h.
.PP
\fBServer\fP sockaddr structure used by accept().
.PP
-Definition at line 125 of file socket.h.
+Definition at line 130 of file socket.h.
.SS "\fBInspSocketState\fP \fBInspSocket::state\fP\fC [private]\fP"
.PP
The state for this socket, either listening, connecting, connected or error.
diff --git a/docs/man/man3/InviteItem.3 b/docs/man/man3/InviteItem.3
index 213477029..f3b133566 100644
--- a/docs/man/man3/InviteItem.3
+++ b/docs/man/man3/InviteItem.3
@@ -1,4 +1,4 @@
-.TH "InviteItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "InviteItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/Invited.3 b/docs/man/man3/Invited.3
index 07e201794..dc4b773fd 100644
--- a/docs/man/man3/Invited.3
+++ b/docs/man/man3/Invited.3
@@ -1,4 +1,4 @@
-.TH "Invited" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Invited" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -16,19 +16,19 @@ Inherits \fBclassbase\fP.
.in +1c
.ti -1c
-.RI "char \fBchannel\fP [CHANMAX]"
+.RI "\fBirc::string\fP \fBchannel\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Holds a channel name to which a user has been invited.
.PP
-Definition at line 39 of file users.h.
+Definition at line 43 of file users.h.
.SH "Member Data Documentation"
.PP
-.SS "char \fBInvited::channel\fP[CHANMAX]"
+.SS "\fBirc::string\fP \fBInvited::channel\fP"
.PP
-Definition at line 42 of file users.h.
+Definition at line 46 of file users.h.
.PP
Referenced by userrec::InviteTo().
diff --git a/docs/man/man3/KLine.3 b/docs/man/man3/KLine.3
index 195d3a860..213ee19d4 100644
--- a/docs/man/man3/KLine.3
+++ b/docs/man/man3/KLine.3
@@ -1,4 +1,4 @@
-.TH "KLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "KLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ModeParameter.3 b/docs/man/man3/ModeParameter.3
index 93b0f4381..a1082ec7d 100644
--- a/docs/man/man3/ModeParameter.3
+++ b/docs/man/man3/ModeParameter.3
@@ -1,4 +1,4 @@
-.TH "ModeParameter" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModeParameter" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/Module.3 b/docs/man/man3/Module.3
index 3800b0172..6c9e4de9b 100644
--- a/docs/man/man3/Module.3
+++ b/docs/man/man3/Module.3
@@ -1,4 +1,4 @@
-.TH "Module" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Module" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -340,7 +340,7 @@ Base class for all \fBInspIRCd\fP modules This class is the base class for \fBIn
All modules must inherit from this class, its methods will be called when irc server events occur. class inherited from module must be instantiated by the \fBModuleFactory\fP class (see relevent section) for the plugin to be initialised.
.PP
-Definition at line 254 of file modules.h.
+Definition at line 272 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Module::Module (\fBServer\fP * Me)"
@@ -354,20 +354,20 @@ Default constructor Creates a module class.
.PP
.PP
-Definition at line 220 of file modules.cpp.
+Definition at line 219 of file modules.cpp.
.PP
.nf
-220 { }
+219 { }
.fi
.PP
.SS "Module::~Module ()\fC [virtual]\fP"
.PP
Default destructor destroys a module class.
.PP
-Definition at line 221 of file modules.cpp.
+Definition at line 220 of file modules.cpp.
.PP
.nf
-221 { }
+220 { }
.fi
.PP
.SH "Member Function Documentation"
@@ -378,12 +378,12 @@ Returns the version number of a Module.
.PP
The method should return a \fBVersion\fP object with its version information assigned via \fBVersion::Version\fP
.PP
-Definition at line 232 of file modules.cpp.
+Definition at line 231 of file modules.cpp.
.PP
References VF_VENDOR.
.PP
.nf
-232 { return Version(1,0,0,0,VF_VENDOR); }
+231 { return Version(1,0,0,0,VF_VENDOR); }
.fi
.PP
.SS "void Module::On005Numeric (\fBstd::string\fP & output)\fC [virtual]\fP"
@@ -399,10 +399,10 @@ The module should modify the 005 numeric if needed to indicate its features.
.PP
.PP
-Definition at line 242 of file modules.cpp.
+Definition at line 241 of file modules.cpp.
.PP
.nf
-242 { };
+241 { };
.fi
.PP
.SS "int Module::OnAccessCheck (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel, int access_type)\fC [virtual]\fP"
@@ -446,12 +446,12 @@ This function is called before many functions which check a users status on a ch
.PP
.PP
-Definition at line 241 of file modules.cpp.
+Definition at line 240 of file modules.cpp.
.PP
References ACR_DEFAULT.
.PP
.nf
-241 { return ACR_DEFAULT; };
+240 { return ACR_DEFAULT; };
.fi
.PP
.SS "int Module::OnAddBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP"
@@ -476,10 +476,10 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being
.PP
.PP
-Definition at line 267 of file modules.cpp.
+Definition at line 266 of file modules.cpp.
.PP
.nf
-267 { return 0; };
+266 { return 0; };
.fi
.PP
.SS "void Module::OnAddELine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -501,10 +501,10 @@ This method is triggered after the line is added.
.PP
.PP
-Definition at line 293 of file modules.cpp.
+Definition at line 292 of file modules.cpp.
.PP
.nf
-293 { };
+292 { };
.fi
.PP
.SS "void Module::OnAddGLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -526,10 +526,10 @@ This method is triggered after the line is added.
.PP
.PP
-Definition at line 289 of file modules.cpp.
+Definition at line 288 of file modules.cpp.
.PP
.nf
-289 { };
+288 { };
.fi
.PP
.SS "void Module::OnAddKLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -551,10 +551,10 @@ This method is triggered after the line is added.
.PP
.PP
-Definition at line 291 of file modules.cpp.
+Definition at line 290 of file modules.cpp.
.PP
.nf
-291 { };
+290 { };
.fi
.PP
.SS "void Module::OnAddQLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP nickmask)\fC [virtual]\fP"
@@ -576,10 +576,10 @@ This method is triggered after the line is added.
.PP
.PP
-Definition at line 292 of file modules.cpp.
+Definition at line 291 of file modules.cpp.
.PP
.nf
-292 { };
+291 { };
.fi
.PP
.SS "void Module::OnAddZLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP ipmask)\fC [virtual]\fP"
@@ -601,10 +601,10 @@ This method is triggered after the line is added.
.PP
.PP
-Definition at line 290 of file modules.cpp.
+Definition at line 289 of file modules.cpp.
.PP
.nf
-290 { };
+289 { };
.fi
.PP
.SS "void Module::OnBackgroundTimer (time_t curtime)\fC [virtual]\fP"
@@ -620,10 +620,10 @@ This timer can be used to control timed features. Its period is not accurate eno
.PP
.PP
-Definition at line 246 of file modules.cpp.
+Definition at line 245 of file modules.cpp.
.PP
.nf
-246 { };
+245 { };
.fi
.PP
.SS "void Module::OnChangeHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
@@ -641,10 +641,10 @@ This event triggers after the host has been set.
.PP
.PP
-Definition at line 287 of file modules.cpp.
+Definition at line 286 of file modules.cpp.
.PP
.nf
-287 { };
+286 { };
.fi
.PP
.SS "int Module::OnChangeLocalUserGECOS (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
@@ -667,10 +667,10 @@ return 1 to deny the name change, or 0 to allow it.
.PP
.PP
-Definition at line 260 of file modules.cpp.
+Definition at line 259 of file modules.cpp.
.PP
.nf
-260 { return 0; };
+259 { return 0; };
.fi
.PP
.SS "int Module::OnChangeLocalUserHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP"
@@ -693,10 +693,10 @@ Return 1 to deny the host change, or 0 to allow it.
.PP
.PP
-Definition at line 259 of file modules.cpp.
+Definition at line 258 of file modules.cpp.
.PP
.nf
-259 { return 0; };
+258 { return 0; };
.fi
.PP
.SS "void Module::OnChangeName (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP"
@@ -714,10 +714,10 @@ This event triggers after the name has been set.
.PP
.PP
-Definition at line 288 of file modules.cpp.
+Definition at line 287 of file modules.cpp.
.PP
.nf
-288 { };
+287 { };
.fi
.PP
.SS "int Module::OnCheckBan (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
@@ -740,10 +740,10 @@ This method will always be called for each join, wether or not the user actually
.PP
.PP
-Definition at line 257 of file modules.cpp.
+Definition at line 256 of file modules.cpp.
.PP
.nf
-257 { return 0; };
+256 { return 0; };
.fi
.PP
.SS "int Module::OnCheckInvite (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
@@ -766,10 +766,10 @@ This method will always be called for each join, wether or not the channel is ac
.PP
.PP
-Definition at line 254 of file modules.cpp.
+Definition at line 253 of file modules.cpp.
.PP
.nf
-254 { return 0; };
+253 { return 0; };
.fi
.PP
.SS "int Module::OnCheckKey (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP keygiven)\fC [virtual]\fP"
@@ -792,10 +792,10 @@ This method will always be called for each join, wether or not the channel is ac
.PP
.PP
-Definition at line 255 of file modules.cpp.
+Definition at line 254 of file modules.cpp.
.PP
.nf
-255 { return 0; };
+254 { return 0; };
.fi
.PP
.SS "int Module::OnCheckLimit (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP"
@@ -818,10 +818,10 @@ This method will always be called for each join, wether or not the channel is ac
.PP
.PP
-Definition at line 256 of file modules.cpp.
+Definition at line 255 of file modules.cpp.
.PP
.nf
-256 { return 0; };
+255 { return 0; };
.fi
.PP
.SS "bool Module::OnCheckReady (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -842,10 +842,10 @@ true to indicate readiness, false if otherwise
.PP
.PP
-Definition at line 249 of file modules.cpp.
+Definition at line 248 of file modules.cpp.
.PP
.nf
-249 { return true; };
+248 { return true; };
.fi
.PP
.SS "void Module::OnCleanup (int target_type, void * item)\fC [virtual]\fP"
@@ -863,10 +863,10 @@ This method is called once for every user and channel on the network, so that wh
.PP
.PP
-Definition at line 299 of file modules.cpp.
+Definition at line 298 of file modules.cpp.
.PP
.nf
-299 { };
+298 { };
.fi
.PP
.SS "void Module::OnDecodeMetaData (int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP"
@@ -888,10 +888,10 @@ Please see src/modules/m_swhois.cpp for a working example of how to use this met
.PP
.PP
-Definition at line 284 of file modules.cpp.
+Definition at line 283 of file modules.cpp.
.PP
.nf
-284 { };
+283 { };
.fi
.PP
.SS "int Module::OnDelBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP"
@@ -916,10 +916,10 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being
.PP
.PP
-Definition at line 268 of file modules.cpp.
+Definition at line 267 of file modules.cpp.
.PP
.nf
-268 { return 0; };
+267 { return 0; };
.fi
.PP
.SS "void Module::OnDelELine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -937,10 +937,10 @@ This method is triggered after the line is deleted.
.PP
.PP
-Definition at line 298 of file modules.cpp.
+Definition at line 297 of file modules.cpp.
.PP
.nf
-298 { };
+297 { };
.fi
.PP
.SS "void Module::OnDelGLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -958,10 +958,10 @@ This method is triggered after the line is deleted.
.PP
.PP
-Definition at line 294 of file modules.cpp.
+Definition at line 293 of file modules.cpp.
.PP
.nf
-294 { };
+293 { };
.fi
.PP
.SS "void Module::OnDelKLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -979,10 +979,10 @@ This method is triggered after the line is deleted.
.PP
.PP
-Definition at line 296 of file modules.cpp.
+Definition at line 295 of file modules.cpp.
.PP
.nf
-296 { };
+295 { };
.fi
.PP
.SS "void Module::OnDelQLine (\fBuserrec\fP * source, \fBstd::string\fP nickmask)\fC [virtual]\fP"
@@ -1000,10 +1000,10 @@ This method is triggered after the line is deleted.
.PP
.PP
-Definition at line 297 of file modules.cpp.
+Definition at line 296 of file modules.cpp.
.PP
.nf
-297 { };
+296 { };
.fi
.PP
.SS "void Module::OnDelZLine (\fBuserrec\fP * source, \fBstd::string\fP ipmask)\fC [virtual]\fP"
@@ -1021,10 +1021,10 @@ This method is triggered after the line is deleted.
.PP
.PP
-Definition at line 295 of file modules.cpp.
+Definition at line 294 of file modules.cpp.
.PP
.nf
-295 { };
+294 { };
.fi
.PP
.SS "void Module::OnEvent (\fBEvent\fP * event)\fC [virtual]\fP"
@@ -1040,10 +1040,10 @@ Please see the documentation of \fBEvent::Send()\fP for further information. The
.PP
.PP
-Definition at line 262 of file modules.cpp.
+Definition at line 261 of file modules.cpp.
.PP
.nf
-262 { return; };
+261 { return; };
.fi
.PP
.SS "int Module::OnExtendedMode (\fBuserrec\fP * user, void * target, char modechar, int type, bool mode_on, \fBstring_list\fP & params)\fC [virtual]\fP"
@@ -1069,10 +1069,10 @@ The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the
.PP
.PP
-Definition at line 230 of file modules.cpp.
+Definition at line 229 of file modules.cpp.
.PP
.nf
-230 { return false; }
+229 { return false; }
.fi
.PP
.SS "void Module::OnGetServerDescription (\fBstd::string\fP servername, \fBstd::string\fP & description)\fC [virtual]\fP"
@@ -1090,10 +1090,10 @@ You may change or define the description given in \fBstd::string\fP &description
.PP
.PP
-Definition at line 278 of file modules.cpp.
+Definition at line 277 of file modules.cpp.
.PP
.nf
-278 { };
+277 { };
.fi
.PP
.SS "void Module::OnGlobalConnect (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1109,10 +1109,10 @@ This event is informational only. You should not change any user information in
.PP
.PP
-Definition at line 266 of file modules.cpp.
+Definition at line 265 of file modules.cpp.
.PP
.nf
-266 { };
+265 { };
.fi
.PP
.SS "void Module::OnGlobalOper (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1128,10 +1128,10 @@ You cannot override this and prevent it from happening as it is already happened
.PP
.PP
-Definition at line 265 of file modules.cpp.
+Definition at line 264 of file modules.cpp.
.PP
.nf
-265 { };
+264 { };
.fi
.PP
.SS "void Module::OnInfo (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1149,10 +1149,10 @@ The userrec will contain the information of the user who typed the command. Modu
.PP
.PP
-Definition at line 234 of file modules.cpp.
+Definition at line 233 of file modules.cpp.
.PP
.nf
-234 { };
+233 { };
.fi
.PP
.SS "int Module::OnKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1177,10 +1177,10 @@ If a client is killed by a server, e.g. a nickname collision or protocol error,
.PP
.PP
-Definition at line 243 of file modules.cpp.
+Definition at line 242 of file modules.cpp.
.PP
.nf
-243 { return 0; };
+242 { return 0; };
.fi
.PP
.SS "void Module::OnLoadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP"
@@ -1198,10 +1198,10 @@ mod will contain a pointer to the module, and string will contain its name, for
.PP
.PP
-Definition at line 244 of file modules.cpp.
+Definition at line 243 of file modules.cpp.
.PP
.nf
-244 { };
+243 { };
.fi
.PP
.SS "int Module::OnLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP"
@@ -1223,10 +1223,10 @@ Return 1 to deny the topic change, or 0 to allow it.
.PP
.PP
-Definition at line 261 of file modules.cpp.
+Definition at line 260 of file modules.cpp.
.PP
.nf
-261 { return 0; };
+260 { return 0; };
.fi
.PP
.SS "void Module::OnMode (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1248,10 +1248,10 @@ The text variable contains the remainder of the mode string after the target, e.
.PP
.PP
-Definition at line 231 of file modules.cpp.
+Definition at line 230 of file modules.cpp.
.PP
.nf
-231 { };
+230 { };
.fi
.PP
.SS "void Module::OnOper (\fBuserrec\fP * user, \fBstd::string\fP opertype)\fC [virtual]\fP"
@@ -1269,10 +1269,10 @@ The userrec will contain the oper mode 'o' as this function is called after any
.PP
.PP
-Definition at line 233 of file modules.cpp.
+Definition at line 232 of file modules.cpp.
.PP
.nf
-233 { };
+232 { };
.fi
.PP
.SS "int Module::OnOperCompare (\fBstd::string\fP password, \fBstd::string\fP input)\fC [virtual]\fP"
@@ -1295,10 +1295,10 @@ The password field (from the config file) is in 'password' and is to be compared
.PP
.PP
-Definition at line 264 of file modules.cpp.
+Definition at line 263 of file modules.cpp.
.PP
.nf
-264 { return 0; };
+263 { return 0; };
.fi
.PP
.SS "void Module::OnPostLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP"
@@ -1318,10 +1318,10 @@ To block topic changes you must use OnLocalTopicChange instead.
.PP
.PP
-Definition at line 277 of file modules.cpp.
+Definition at line 276 of file modules.cpp.
.PP
.nf
-277 { };
+276 { };
.fi
.PP
.SS "int Module::OnPreCommand (\fBstd::string\fP command, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1348,10 +1348,10 @@ This event occurs for all registered commands, wether they are registered in the
.PP
.PP
-Definition at line 248 of file modules.cpp.
+Definition at line 247 of file modules.cpp.
.PP
.nf
-248 { return 0; };
+247 { return 0; };
.fi
.PP
.SS "int Module::OnRawMode (\fBuserrec\fP * user, \fBchanrec\fP * chan, char mode, \fBstd::string\fP param, bool adding, int pcnt)\fC [virtual]\fP"
@@ -1382,10 +1382,10 @@ Return 1 from this function to block the mode character from being processed ent
.PP
.PP
-Definition at line 253 of file modules.cpp.
+Definition at line 252 of file modules.cpp.
.PP
.nf
-253 { return 0; };
+252 { return 0; };
.fi
.PP
.SS "void Module::OnRawSocketAccept (int fd, \fBstd::string\fP ip, int localport)\fC [virtual]\fP"
@@ -1405,10 +1405,10 @@ This is intended for raw socket processing (e.g. modules which wrap the tcp conn
.PP
.PP
-Definition at line 269 of file modules.cpp.
+Definition at line 268 of file modules.cpp.
.PP
.nf
-269 { };
+268 { };
.fi
.PP
.SS "void Module::OnRawSocketClose (int fd)\fC [virtual]\fP"
@@ -1424,10 +1424,12 @@ When this event is called, shutdown() has not yet been called on the socket.
.PP
.PP
-Definition at line 271 of file modules.cpp.
+Definition at line 270 of file modules.cpp.
+.PP
+Referenced by kill_link(), and kill_link_silent().
.PP
.nf
-271 { };
+270 { };
.fi
.PP
.SS "int Module::OnRawSocketRead (int fd, char * buffer, unsigned int count, int & readresult)\fC [virtual]\fP"
@@ -1454,10 +1456,10 @@ nonzero if the event was handled, in which case readresult must be valid on exit
.PP
.PP
-Definition at line 272 of file modules.cpp.
+Definition at line 271 of file modules.cpp.
.PP
.nf
-272 { return 0; };
+271 { return 0; };
.fi
.PP
.SS "int Module::OnRawSocketWrite (int fd, char * buffer, int count)\fC [virtual]\fP"
@@ -1482,10 +1484,10 @@ Number of characters actually written or 0 if you didn't handle the operation
.PP
.PP
-Definition at line 270 of file modules.cpp.
+Definition at line 269 of file modules.cpp.
.PP
.nf
-270 { return 0; };
+269 { return 0; };
.fi
.PP
.SS "void Module::OnRehash (\fBstd::string\fP parameter)\fC [virtual]\fP"
@@ -1501,10 +1503,10 @@ This method is called prior to a /REHASH or when a SIGHUP is received from the o
.PP
.PP
-Definition at line 227 of file modules.cpp.
+Definition at line 226 of file modules.cpp.
.PP
.nf
-227 { }
+226 { }
.fi
.PP
.SS "void Module::OnRemoteKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1522,10 +1524,10 @@ Called when an oper wants to disconnect a remote user via KILL.
.PP
.PP
-Definition at line 275 of file modules.cpp.
+Definition at line 274 of file modules.cpp.
.PP
.nf
-275 { };
+274 { };
.fi
.PP
.SS "char * Module::OnRequest (\fBRequest\fP * request)\fC [virtual]\fP"
@@ -1541,12 +1543,12 @@ Please see the documentation of \fBRequest::Send()\fP for further information. T
.PP
.PP
-Definition at line 263 of file modules.cpp.
+Definition at line 262 of file modules.cpp.
.PP
Referenced by Request::Send().
.PP
.nf
-263 { return NULL; };
+262 { return NULL; };
.fi
.PP
.SS "void Module::OnSendList (\fBuserrec\fP * user, \fBchanrec\fP * channel, char mode)\fC [virtual]\fP"
@@ -1566,10 +1568,10 @@ For example, when a /MODE channel +b (without any other parameters) is called, i
.PP
.PP
-Definition at line 247 of file modules.cpp.
+Definition at line 246 of file modules.cpp.
.PP
.nf
-247 { };
+246 { };
.fi
.PP
.SS "void Module::OnServerRaw (\fBstd::string\fP & raw, bool inbound, \fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1589,10 +1591,10 @@ This method is the lowest level of handler available to a module. It will be cal
.PP
.PP
-Definition at line 228 of file modules.cpp.
+Definition at line 227 of file modules.cpp.
.PP
.nf
-228 { }
+227 { }
.fi
.PP
.SS "void Module::OnStats (char symbol)\fC [virtual]\fP"
@@ -1606,10 +1608,10 @@ Called on all /STATS commands This method is triggered for all /STATS use, inclu
.PP
.PP
-Definition at line 258 of file modules.cpp.
+Definition at line 257 of file modules.cpp.
.PP
.nf
-258 { };
+257 { };
.fi
.PP
.SS "void Module::OnSyncChannel (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP"
@@ -1631,18 +1633,18 @@ For a good example of how to use this function, please see src/modules/m_chanpro
.PP
.PP
-Definition at line 280 of file modules.cpp.
+Definition at line 279 of file modules.cpp.
.PP
.nf
-280 { };
+279 { };
.fi
.PP
.SS "void Module::OnSyncChannelMetaData (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP"
.PP
-Definition at line 282 of file modules.cpp.
+Definition at line 281 of file modules.cpp.
.PP
.nf
-282 { };
+281 { };
.fi
.PP
.SS "void Module::OnSyncUser (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP"
@@ -1662,18 +1664,18 @@ When this function is called, it will be called from the module which implements
.PP
.PP
-Definition at line 279 of file modules.cpp.
+Definition at line 278 of file modules.cpp.
.PP
.nf
-279 { };
+278 { };
.fi
.PP
.SS "void Module::OnSyncUserMetaData (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP"
.PP
-Definition at line 283 of file modules.cpp.
+Definition at line 282 of file modules.cpp.
.PP
.nf
-283 { };
+282 { };
.fi
.PP
.SS "void Module::OnUnloadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP"
@@ -1691,10 +1693,10 @@ mod will contain a pointer to the module, and string will contain its name, for
.PP
.PP
-Definition at line 245 of file modules.cpp.
+Definition at line 244 of file modules.cpp.
.PP
.nf
-245 { };
+244 { };
.fi
.PP
.SS "void Module::OnUserConnect (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1710,10 +1712,10 @@ The details of the connecting user are available to you in the parameter userrec
.PP
.PP
-Definition at line 222 of file modules.cpp.
+Definition at line 221 of file modules.cpp.
.PP
.nf
-222 { }
+221 { }
.fi
.PP
.SS "void Module::OnUserDisconnect (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1729,10 +1731,10 @@ The details of the exiting user are available to you in the parameter userrec *u
.PP
.PP
-Definition at line 224 of file modules.cpp.
+Definition at line 223 of file modules.cpp.
.PP
.nf
-224 { }
+223 { }
.fi
.PP
.SS "void Module::OnUserInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP"
@@ -1752,10 +1754,10 @@ You cannot prevent the invite from occuring using this function, to do that, use
.PP
.PP
-Definition at line 276 of file modules.cpp.
+Definition at line 275 of file modules.cpp.
.PP
.nf
-276 { };
+275 { };
.fi
.PP
.SS "void Module::OnUserJoin (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP"
@@ -1773,10 +1775,10 @@ The details of the joining user are available to you in the parameter userrec *u
.PP
.PP
-Definition at line 225 of file modules.cpp.
+Definition at line 224 of file modules.cpp.
.PP
.nf
-225 { }
+224 { }
.fi
.PP
.SS "void Module::OnUserKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1798,10 +1800,10 @@ If this method is called, the kick is already underway and cannot be prevented,
.PP
.PP
-Definition at line 252 of file modules.cpp.
+Definition at line 251 of file modules.cpp.
.PP
.nf
-252 { };
+251 { };
.fi
.PP
.SS "void Module::OnUserMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1823,10 +1825,10 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*
.PP
.PP
-Definition at line 273 of file modules.cpp.
+Definition at line 272 of file modules.cpp.
.PP
.nf
-273 { };
+272 { };
.fi
.PP
.SS "void Module::OnUserNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1848,10 +1850,10 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*
.PP
.PP
-Definition at line 274 of file modules.cpp.
+Definition at line 273 of file modules.cpp.
.PP
.nf
-274 { };
+273 { };
.fi
.PP
.SS "void Module::OnUserPart (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP"
@@ -1869,10 +1871,10 @@ The details of the leaving user are available to you in the parameter userrec *u
.PP
.PP
-Definition at line 226 of file modules.cpp.
+Definition at line 225 of file modules.cpp.
.PP
.nf
-226 { }
+225 { }
.fi
.PP
.SS "void Module::OnUserPostNick (\fBuserrec\fP * user, \fBstd::string\fP oldnick)\fC [virtual]\fP"
@@ -1890,10 +1892,10 @@ This can be used to track users after nickchanges have been applied. Please note
.PP
.PP
-Definition at line 240 of file modules.cpp.
+Definition at line 239 of file modules.cpp.
.PP
.nf
-240 { };
+239 { };
.fi
.PP
.SS "int Module::OnUserPreInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP"
@@ -1918,10 +1920,10 @@ Returning 1 from this function stops the process immediately, causing no output
.PP
.PP
-Definition at line 236 of file modules.cpp.
+Definition at line 235 of file modules.cpp.
.PP
.nf
-236 { return 0; };
+235 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreJoin (\fBuserrec\fP * user, \fBchanrec\fP * chan, const char * cname)\fC [virtual]\fP"
@@ -1948,10 +1950,10 @@ If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be
.PP
.PP
-Definition at line 229 of file modules.cpp.
+Definition at line 228 of file modules.cpp.
.PP
.nf
-229 { return 0; }
+228 { return 0; }
.fi
.PP
.SS "int Module::OnUserPreKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1978,10 +1980,10 @@ Returning a value of 1 from this function stops the process immediately, causing
.PP
.PP
-Definition at line 251 of file modules.cpp.
+Definition at line 250 of file modules.cpp.
.PP
.nf
-251 { return 0; };
+250 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP"
@@ -2008,10 +2010,10 @@ Returning any nonzero value from this function stops the process immediately, ca
.PP
.PP
-Definition at line 237 of file modules.cpp.
+Definition at line 236 of file modules.cpp.
.PP
.nf
-237 { return 0; };
+236 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreNick (\fBuserrec\fP * user, \fBstd::string\fP newnick)\fC [virtual]\fP"
@@ -2034,10 +2036,10 @@ This can be used to implement Q-lines etc. Please note that although you can see
.PP
.PP
-Definition at line 239 of file modules.cpp.
+Definition at line 238 of file modules.cpp.
.PP
.nf
-239 { return 0; };
+238 { return 0; };
.fi
.PP
.SS "int Module::OnUserPreNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP"
@@ -2064,10 +2066,10 @@ Returning any nonzero value from this function stops the process immediately, ca
.PP
.PP
-Definition at line 238 of file modules.cpp.
+Definition at line 237 of file modules.cpp.
.PP
.nf
-238 { return 0; };
+237 { return 0; };
.fi
.PP
.SS "void Module::OnUserQuit (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP"
@@ -2085,10 +2087,10 @@ The details of the exiting user are available to you in the parameter userrec *u
.PP
.PP
-Definition at line 223 of file modules.cpp.
+Definition at line 222 of file modules.cpp.
.PP
.nf
-223 { }
+222 { }
.fi
.PP
.SS "void Module::OnUserRegister (\fBuserrec\fP * user)\fC [virtual]\fP"
@@ -2104,10 +2106,10 @@ before the user is sent the MOTD etc). Modules can use this method if they are p
.PP
.PP
-Definition at line 250 of file modules.cpp.
+Definition at line 249 of file modules.cpp.
.PP
.nf
-250 { };
+249 { };
.fi
.PP
.SS "void Module::OnWallops (\fBuserrec\fP * user, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -2123,10 +2125,10 @@ Called after every WALLOPS command.
.PP
.PP
-Definition at line 286 of file modules.cpp.
+Definition at line 285 of file modules.cpp.
.PP
.nf
-286 { };
+285 { };
.fi
.PP
.SS "void Module::OnWhois (\fBuserrec\fP * source, \fBuserrec\fP * dest)\fC [virtual]\fP"
@@ -2144,10 +2146,10 @@ The source parameter contains the details of the user who issued the WHOIS comma
.PP
.PP
-Definition at line 235 of file modules.cpp.
+Definition at line 234 of file modules.cpp.
.PP
.nf
-235 { };
+234 { };
.fi
.PP
.SS "void Module::ProtoSendMetaData (void * opaque, int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP"
@@ -2173,10 +2175,10 @@ More documentation to follow soon. Please see src/modules/m_swhois.cpp for examp
.PP
.PP
-Definition at line 285 of file modules.cpp.
+Definition at line 284 of file modules.cpp.
.PP
.nf
-285 { };
+284 { };
.fi
.PP
.SS "void Module::ProtoSendMode (void * opaque, int target_type, void * target, \fBstd::string\fP modeline)\fC [virtual]\fP"
@@ -2200,10 +2202,10 @@ More documentation to follow soon. Please see src/modules/m_chanprotect.cpp for
.PP
.PP
-Definition at line 281 of file modules.cpp.
+Definition at line 280 of file modules.cpp.
.PP
.nf
-281 { };
+280 { };
.fi
.PP
diff --git a/docs/man/man3/ModuleFactory.3 b/docs/man/man3/ModuleFactory.3
index 290073277..5ace1c193 100644
--- a/docs/man/man3/ModuleFactory.3
+++ b/docs/man/man3/ModuleFactory.3
@@ -1,4 +1,4 @@
-.TH "ModuleFactory" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModuleFactory" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -32,23 +32,23 @@ Instantiates classes inherited from \fBModule\fP This class creates a class inhe
This is to allow for modules to create many different variants of \fBModule\fP, dependent on architecture, configuration, etc. In most cases, the simple class shown in the example module m_foobar.so will suffice for most modules.
.PP
-Definition at line 1676 of file modules.h.
+Definition at line 1694 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ModuleFactory::ModuleFactory ()\fC [inline]\fP"
.PP
-Definition at line 1679 of file modules.h.
+Definition at line 1697 of file modules.h.
.PP
.nf
-1679 { }
+1697 { }
.fi
.PP
.SS "virtual ModuleFactory::~ModuleFactory ()\fC [inline, virtual]\fP"
.PP
-Definition at line 1680 of file modules.h.
+Definition at line 1698 of file modules.h.
.PP
.nf
-1680 { }
+1698 { }
.fi
.PP
.SH "Member Function Documentation"
diff --git a/docs/man/man3/ModuleMessage.3 b/docs/man/man3/ModuleMessage.3
index ceb20c96d..9f0eeecfd 100644
--- a/docs/man/man3/ModuleMessage.3
+++ b/docs/man/man3/ModuleMessage.3
@@ -1,4 +1,4 @@
-.TH "ModuleMessage" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ModuleMessage" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -29,15 +29,15 @@ Inherited by \fBEvent\fP, and \fBRequest\fP.
.PP
The ModuleMessage class is the base class of \fBRequest\fP and \fBEvent\fP This class is used to represent a basic data structure which is passed between modules for safe inter-module communications.
.PP
-Definition at line 143 of file modules.h.
+Definition at line 161 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "virtual ModuleMessage::~ModuleMessage ()\fC [inline, virtual]\fP"
.PP
-Definition at line 149 of file modules.h.
+Definition at line 167 of file modules.h.
.PP
.nf
-149 {};
+167 {};
.fi
.PP
.SH "Member Function Documentation"
diff --git a/docs/man/man3/QLine.3 b/docs/man/man3/QLine.3
index a5fad88b9..61bd947ae 100644
--- a/docs/man/man3/QLine.3
+++ b/docs/man/man3/QLine.3
@@ -1,4 +1,4 @@
-.TH "QLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "QLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/Request.3 b/docs/man/man3/Request.3
index d910f5ab3..b504563a7 100644
--- a/docs/man/man3/Request.3
+++ b/docs/man/man3/Request.3
@@ -1,4 +1,4 @@
-.TH "Request" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Request" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -58,17 +58,17 @@ The Request class is a unicast message directed at a given module.
When this class is properly instantiated it may be sent to a module using the \fBSend()\fP method, which will call the given module's OnRequest method with this class as its parameter.
.PP
-Definition at line 157 of file modules.h.
+Definition at line 175 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Request::Request (char * anydata, \fBModule\fP * src, \fBModule\fP * dst)"
.PP
Create a new Request.
.PP
-Definition at line 165 of file modules.cpp.
+Definition at line 164 of file modules.cpp.
.PP
.nf
-165 : data(anydata), source(src), dest(dst) { };
+164 : data(anydata), source(src), dest(dst) { };
.fi
.PP
.SH "Member Function Documentation"
@@ -77,42 +77,42 @@ Definition at line 165 of file modules.cpp.
.PP
Fetch the Request data.
.PP
-Definition at line 167 of file modules.cpp.
+Definition at line 166 of file modules.cpp.
.PP
References data.
.PP
.nf
-168 {
-169 return this->data;
-170 }
+167 {
+168 return this->data;
+169 }
.fi
.PP
.SS "\fBModule\fP * Request::GetDest ()"
.PP
Fetch the request destination (should be 'this' in the receiving module).
.PP
-Definition at line 177 of file modules.cpp.
+Definition at line 176 of file modules.cpp.
.PP
References dest.
.PP
.nf
-178 {
-179 return this->dest;
-180 }
+177 {
+178 return this->dest;
+179 }
.fi
.PP
.SS "\fBModule\fP * Request::GetSource ()"
.PP
Fetch the request source.
.PP
-Definition at line 172 of file modules.cpp.
+Definition at line 171 of file modules.cpp.
.PP
References source.
.PP
.nf
-173 {
-174 return this->source;
-175 }
+172 {
+173 return this->source;
+174 }
.fi
.PP
.SS "char * Request::Send ()\fC [virtual]\fP"
@@ -123,21 +123,21 @@ Upon returning the result will be arbitary data returned by the module you sent
.PP
Implements \fBModuleMessage\fP.
.PP
-Definition at line 182 of file modules.cpp.
+Definition at line 181 of file modules.cpp.
.PP
References dest, and Module::OnRequest().
.PP
.nf
-183 {
-184 if (this->dest)
-185 {
-186 return dest->OnRequest(this);
-187 }
-188 else
-189 {
-190 return NULL;
-191 }
-192 }
+182 {
+183 if (this->dest)
+184 {
+185 return dest->OnRequest(this);
+186 }
+187 else
+188 {
+189 return NULL;
+190 }
+191 }
.fi
.PP
.SH "Member Data Documentation"
@@ -146,21 +146,21 @@ References dest, and Module::OnRequest().
.PP
This member holds a pointer to arbitary data set by the emitter of the message.
.PP
-Definition at line 162 of file modules.h.
+Definition at line 180 of file modules.h.
.PP
Referenced by GetData().
.SS "\fBModule\fP* \fBRequest::dest\fP\fC [protected]\fP"
.PP
The single destination of the Request.
.PP
-Definition at line 169 of file modules.h.
+Definition at line 187 of file modules.h.
.PP
Referenced by GetDest(), and Send().
.SS "\fBModule\fP* \fBRequest::source\fP\fC [protected]\fP"
.PP
This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply.
.PP
-Definition at line 166 of file modules.h.
+Definition at line 184 of file modules.h.
.PP
Referenced by GetSource().
diff --git a/docs/man/man3/Server.3 b/docs/man/man3/Server.3
index 95aa8cd87..bc6962cac 100644
--- a/docs/man/man3/Server.3
+++ b/docs/man/man3/Server.3
@@ -1,4 +1,4 @@
-.TH "Server" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Server" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -128,7 +128,7 @@ Inherits \fBclassbase\fP.
.br
.RI "\fIAdds an extended mode letter which is parsed by a module and handled in a list fashion. \fP"
.ti -1c
-.RI "virtual void \fBAddCommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)"
+.RI "virtual void \fBAddCommand\fP (\fBcommand_t\fP *f)"
.br
.RI "\fIAdds a command to the command table. \fP"
.ti -1c
@@ -260,7 +260,7 @@ Allows server output and query functions This class contains methods which allow
All modules should instantiate at least one copy of this class, and use its member functions to perform their tasks.
.PP
-Definition at line 1096 of file modules.h.
+Definition at line 1114 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Server::Server ()"
@@ -269,11 +269,11 @@ Default constructor.
.PP
Creates a Server object.
.PP
-Definition at line 305 of file modules.cpp.
+Definition at line 304 of file modules.cpp.
.PP
.nf
-306 {
-307 }
+305 {
+306 }
.fi
.PP
.SS "Server::~Server ()\fC [virtual]\fP"
@@ -282,33 +282,33 @@ Default destructor.
.PP
Destroys a Server object.
.PP
-Definition at line 309 of file modules.cpp.
+Definition at line 308 of file modules.cpp.
.PP
.nf
-310 {
-311 }
+309 {
+310 }
.fi
.PP
.SH "Member Function Documentation"
.PP
-.SS "void Server::AddCommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)\fC [virtual]\fP"
+.SS "void Server::AddCommand (\fBcommand_t\fP * f)\fC [virtual]\fP"
.PP
Adds a command to the command table.
.PP
This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:
.PP
-typedef void (handlerfunc) (char**, int, userrec*); ... void \fBhandle_kill(char **parameters, int pcnt, userrec *user)\fP
+typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)
.PP
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. 'm_blarp.so'. If you place the wrong identifier here, you can cause crashes if your module is unloaded.
.PP
-Definition at line 416 of file modules.cpp.
+Definition at line 415 of file modules.cpp.
.PP
-References createcommand().
+References InspIRCd::Parser.
.PP
.nf
-417 {
-418 createcommand(cmd,f,flags,minparams,source);
-419 }
+416 {
+417 ServerInstance->Parser->CreateCommand(f);
+418 }
.fi
.PP
.SS "void Server::AddELine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -317,14 +317,14 @@ Adds a E-line The E-line is enforced as soon as it is added.
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 660 of file modules.cpp.
+Definition at line 659 of file modules.cpp.
.PP
References add_eline().
.PP
.nf
-661 {
-662 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-663 }
+660 {
+661 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+662 }
.fi
.PP
.SS "bool Server::AddExtendedListMode (char modechar)\fC [virtual]\fP"
@@ -343,17 +343,17 @@ This call is used to implement modes like +q and +a. The characteristics of thes
.PP
It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use \fBServer::Find\fP to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing.
.PP
-Definition at line 584 of file modules.cpp.
+Definition at line 583 of file modules.cpp.
.PP
References DoAddExtendedMode(), ModeMakeList(), and MT_CHANNEL.
.PP
.nf
-585 {
-586 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
-587 if (res)
-588 ModeMakeList(modechar);
-589 return res;
-590 }
+584 {
+585 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
+586 if (res)
+587 ModeMakeList(modechar);
+588 return res;
+589 }
.fi
.PP
.SS "bool Server::AddExtendedMode (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)\fC [virtual]\fP"
@@ -362,37 +362,37 @@ Adds an extended mode letter which is parsed by a module.
.PP
This allows modules to add extra mode letters, e.g. +x for hostcloak. the 'type' parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
.PP
-Definition at line 556 of file modules.cpp.
+Definition at line 555 of file modules.cpp.
.PP
References DEBUG, DoAddExtendedMode(), log(), MT_CLIENT, and MT_SERVER.
.PP
.nf
-557 {
-558 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
-559 {
-560 if (type == MT_SERVER)
-561 {
-562 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion');
-563 return false;
-564 }
-565 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
-566 {
-567 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported');
-568 return false;
-569 }
-570 if ((params_when_on>1) || (params_when_off>1))
-571 {
-572 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported');
-573 return false;
-574 }
-575 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
-576 }
-577 else
-578 {
-579 log(DEBUG,'*** API ERROR *** Muppet modechar detected.');
-580 }
-581 return false;
-582 }
+556 {
+557 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
+558 {
+559 if (type == MT_SERVER)
+560 {
+561 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion');
+562 return false;
+563 }
+564 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
+565 {
+566 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported');
+567 return false;
+568 }
+569 if ((params_when_on>1) || (params_when_off>1))
+570 {
+571 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported');
+572 return false;
+573 }
+574 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
+575 }
+576 else
+577 {
+578 log(DEBUG,'*** API ERROR *** Muppet modechar detected.');
+579 }
+580 return false;
+581 }
.fi
.PP
.SS "void Server::AddGLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -401,14 +401,14 @@ Adds a G-line The G-line is propogated to all of the servers in the mesh and enf
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 640 of file modules.cpp.
+Definition at line 639 of file modules.cpp.
.PP
References add_gline().
.PP
.nf
-641 {
-642 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-643 }
+640 {
+641 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+642 }
.fi
.PP
.SS "void Server::AddKLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP"
@@ -417,14 +417,14 @@ Adds a K-line The K-line is enforced as soon as it is added.
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 655 of file modules.cpp.
+Definition at line 654 of file modules.cpp.
.PP
References add_kline().
.PP
.nf
-656 {
-657 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-658 }
+655 {
+656 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+657 }
.fi
.PP
.SS "void Server::AddQLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP nickname)\fC [virtual]\fP"
@@ -433,28 +433,28 @@ Adds a Q-line The Q-line is propogated to all of the servers in the mesh and enf
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 645 of file modules.cpp.
+Definition at line 644 of file modules.cpp.
.PP
References add_qline().
.PP
.nf
-646 {
-647 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
-648 }
+645 {
+646 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
+647 }
.fi
.PP
.SS "void Server::AddSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP"
.PP
Adds a class derived from \fBInspSocket\fP to the server's socket engine.
.PP
-Definition at line 313 of file modules.cpp.
+Definition at line 312 of file modules.cpp.
.PP
References module_sockets.
.PP
.nf
-314 {
-315 module_sockets.push_back(sock);
-316 }
+313 {
+314 module_sockets.push_back(sock);
+315 }
.fi
.PP
.SS "void Server::AddZLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP ipaddr)\fC [virtual]\fP"
@@ -463,14 +463,14 @@ Adds a Z-line The Z-line is propogated to all of the servers in the mesh and enf
.PP
The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
.PP
-Definition at line 650 of file modules.cpp.
+Definition at line 649 of file modules.cpp.
.PP
References add_zline().
.PP
.nf
-651 {
-652 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
-653 }
+650 {
+651 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
+652 }
.fi
.PP
.SS "long Server::CalcDuration (\fBstd::string\fP duration)\fC [virtual]\fP"
@@ -479,14 +479,14 @@ Calculates a duration This method will take a string containing a formatted dura
.PP
'1w2d') and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times.
.PP
-Definition at line 690 of file modules.cpp.
+Definition at line 689 of file modules.cpp.
.PP
References duration().
.PP
.nf
-691 {
-692 return duration(delta.c_str());
-693 }
+690 {
+691 return duration(delta.c_str());
+692 }
.fi
.PP
.SS "void Server::CallCommandHandler (\fBstd::string\fP commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
@@ -497,14 +497,14 @@ You can use this function to trigger other commands in the ircd, such as PRIVMSG
.br
) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih \fBAddCommand()\fP. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
.PP
-Definition at line 401 of file modules.cpp.
+Definition at line 400 of file modules.cpp.
.PP
-References call_handler().
+References InspIRCd::Parser.
.PP
.nf
-402 {
-403 call_handler(commandname.c_str(),parameters,pcnt,user);
-404 }
+401 {
+402 ServerInstance->Parser->CallHandler(commandname,parameters,pcnt,user);
+403 }
.fi
.PP
.SS "void Server::ChangeGECOS (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP"
@@ -513,14 +513,14 @@ Change GECOS (fullname) of a user.
.PP
You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers.
.PP
-Definition at line 499 of file modules.cpp.
+Definition at line 498 of file modules.cpp.
.PP
References ChangeName().
.PP
.nf
-500 {
-501 ChangeName(user,gecos.c_str());
-502 }
+499 {
+500 ChangeName(user,gecos.c_str());
+501 }
.fi
.PP
.SS "void Server::ChangeHost (\fBuserrec\fP * user, \fBstd::string\fP host)\fC [virtual]\fP"
@@ -529,14 +529,14 @@ Change displayed hostname of a user.
.PP
You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers.
.PP
-Definition at line 494 of file modules.cpp.
+Definition at line 493 of file modules.cpp.
.PP
References ChangeDisplayedHost().
.PP
.nf
-495 {
-496 ChangeDisplayedHost(user,host.c_str());
-497 }
+494 {
+495 ChangeDisplayedHost(user,host.c_str());
+496 }
.fi
.PP
.SS "void Server::ChangeUserNick (\fBuserrec\fP * user, \fBstd::string\fP nickname)\fC [virtual]\fP"
@@ -545,14 +545,14 @@ Forces a user nickchange.
.PP
This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
.PP
-Definition at line 386 of file modules.cpp.
+Definition at line 385 of file modules.cpp.
.PP
References force_nickchange().
.PP
.nf
-387 {
-388 force_nickchange(user,nickname.c_str());
-389 }
+386 {
+387 force_nickchange(user,nickname.c_str());
+388 }
.fi
.PP
.SS "\fBstd::string\fP Server::ChanMode (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP"
@@ -561,14 +561,14 @@ Attempts to look up a user's privilages on a channel.
.PP
This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify.
.PP
-Definition at line 524 of file modules.cpp.
+Definition at line 523 of file modules.cpp.
.PP
References cmode().
.PP
.nf
-525 {
-526 return cmode(User,Chan);
-527 }
+524 {
+525 return cmode(User,Chan);
+526 }
.fi
.PP
.SS "bool Server::CommonChannels (\fBuserrec\fP * u1, \fBuserrec\fP * u2)\fC [virtual]\fP"
@@ -577,14 +577,14 @@ Returns true if two users share a common channel.
.PP
This method is used internally by the NICK and QUIT commands, and the \fBServer::SendCommon\fP method.
.PP
-Definition at line 472 of file modules.cpp.
+Definition at line 471 of file modules.cpp.
.PP
References common_channels().
.PP
.nf
-473 {
-474 return (common_channels(u1,u2) != 0);
-475 }
+472 {
+473 return (common_channels(u1,u2) != 0);
+474 }
.fi
.PP
.SS "int Server::CountUsers (\fBchanrec\fP * c)\fC [virtual]\fP"
@@ -593,103 +593,103 @@ Returns a count of the number of users on a channel.
.PP
This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.
.PP
-Definition at line 592 of file modules.cpp.
+Definition at line 591 of file modules.cpp.
.PP
.nf
-593 {
-594 return usercount(c);
-595 }
+592 {
+593 return usercount(c);
+594 }
.fi
.PP
.SS "bool Server::DelELine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a local E-Line.
.PP
-Definition at line 685 of file modules.cpp.
+Definition at line 684 of file modules.cpp.
.PP
References del_eline().
.PP
.nf
-686 {
-687 return del_eline(hostmask.c_str());
-688 }
+685 {
+686 return del_eline(hostmask.c_str());
+687 }
.fi
.PP
.SS "bool Server::DelGLine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a G-Line from all servers on the mesh.
.PP
-Definition at line 665 of file modules.cpp.
+Definition at line 664 of file modules.cpp.
.PP
References del_gline().
.PP
.nf
-666 {
-667 return del_gline(hostmask.c_str());
-668 }
+665 {
+666 return del_gline(hostmask.c_str());
+667 }
.fi
.PP
.SS "bool Server::DelKLine (\fBstd::string\fP hostmask)\fC [virtual]\fP"
.PP
Deletes a local K-Line.
.PP
-Definition at line 680 of file modules.cpp.
+Definition at line 679 of file modules.cpp.
.PP
References del_kline().
.PP
.nf
-681 {
-682 return del_kline(hostmask.c_str());
-683 }
+680 {
+681 return del_kline(hostmask.c_str());
+682 }
.fi
.PP
.SS "bool Server::DelQLine (\fBstd::string\fP nickname)\fC [virtual]\fP"
.PP
Deletes a Q-Line from all servers on the mesh.
.PP
-Definition at line 670 of file modules.cpp.
+Definition at line 669 of file modules.cpp.
.PP
References del_qline().
.PP
.nf
-671 {
-672 return del_qline(nickname.c_str());
-673 }
+670 {
+671 return del_qline(nickname.c_str());
+672 }
.fi
.PP
.SS "void Server::DelSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP"
.PP
Deletes a class derived from \fBInspSocket\fP from the server's socket engine.
.PP
-Definition at line 334 of file modules.cpp.
+Definition at line 333 of file modules.cpp.
.PP
References module_sockets.
.PP
.nf
-335 {
-336 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
-337 {
-338 if (*a == sock)
-339 {
-340 module_sockets.erase(a);
-341 return;
-342 }
-343 }
-344 }
+334 {
+335 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
+336 {
+337 if (*a == sock)
+338 {
+339 module_sockets.erase(a);
+340 return;
+341 }
+342 }
+343 }
.fi
.PP
.SS "bool Server::DelZLine (\fBstd::string\fP ipaddr)\fC [virtual]\fP"
.PP
Deletes a Z-Line from all servers on the mesh.
.PP
-Definition at line 675 of file modules.cpp.
+Definition at line 674 of file modules.cpp.
.PP
References del_zline().
.PP
.nf
-676 {
-677 return del_zline(ipaddr.c_str());
-678 }
+675 {
+676 return del_zline(ipaddr.c_str());
+677 }
.fi
.PP
.SS "\fBchanrec\fP * Server::FindChannel (\fBstd::string\fP channel)\fC [virtual]\fP"
@@ -698,14 +698,14 @@ Attempts to look up a channel and return a pointer to it.
.PP
This function will return NULL if the channel does not exist.
.PP
-Definition at line 519 of file modules.cpp.
+Definition at line 518 of file modules.cpp.
.PP
References FindChan().
.PP
.nf
-520 {
-521 return FindChan(channel.c_str());
-522 }
+519 {
+520 return FindChan(channel.c_str());
+521 }
.fi
.PP
.SS "\fBuserrec\fP * Server::FindDescriptor (int socket)\fC [virtual]\fP"
@@ -714,12 +714,12 @@ Attempts to look up a nick using the file descriptor associated with that nick.
.PP
This function will return NULL if the file descriptor is not associated with a valid user.
.PP
-Definition at line 514 of file modules.cpp.
+Definition at line 513 of file modules.cpp.
.PP
.nf
-515 {
-516 return (socket < 65536 ? fd_ref_table[socket] : NULL);
-517 }
+514 {
+515 return (socket < 65536 ? fd_ref_table[socket] : NULL);
+516 }
.fi
.PP
.SS "\fBModule\fP * Server::FindModule (\fBstd::string\fP name)\fC [virtual]\fP"
@@ -728,21 +728,21 @@ This function finds a module by name.
.PP
You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL.
.PP
-Definition at line 724 of file modules.cpp.
+Definition at line 723 of file modules.cpp.
.PP
References MODCOUNT, ServerConfig::module_names, and modules.
.PP
.nf
-725 {
-726 for (int i = 0; i <= MODCOUNT; i++)
-727 {
-728 if (Config->module_names[i] == name)
-729 {
-730 return modules[i];
-731 }
-732 }
-733 return NULL;
-734 }
+724 {
+725 for (int i = 0; i <= MODCOUNT; i++)
+726 {
+727 if (Config->module_names[i] == name)
+728 {
+729 return modules[i];
+730 }
+731 }
+732 return NULL;
+733 }
.fi
.PP
.SS "\fBuserrec\fP * Server::FindNick (\fBstd::string\fP nick)\fC [virtual]\fP"
@@ -751,14 +751,14 @@ Attempts to look up a nick and return a pointer to it.
.PP
This function will return NULL if the nick does not exist.
.PP
-Definition at line 509 of file modules.cpp.
+Definition at line 508 of file modules.cpp.
.PP
References Find().
.PP
.nf
-510 {
-511 return Find(nick);
-512 }
+509 {
+510 return Find(nick);
+511 }
.fi
.PP
.SS "\fBAdmin\fP Server::GetAdmin ()\fC [virtual]\fP"
@@ -767,14 +767,14 @@ Returns the information of the server as returned by the /ADMIN command.
.PP
See the \fBAdmin\fP class for further information of the return value. The members \fBAdmin::Nick\fP, \fBAdmin::Email\fP and \fBAdmin::Name\fP contain the information for the server where the module is loaded.
.PP
-Definition at line 549 of file modules.cpp.
+Definition at line 548 of file modules.cpp.
.PP
References ServerConfig::AdminEmail, ServerConfig::AdminName, and ServerConfig::AdminNick.
.PP
.nf
-550 {
-551 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
-552 }
+549 {
+550 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
+551 }
.fi
.PP
.SS "\fBServerConfig\fP * Server::GetConfig ()"
@@ -783,54 +783,54 @@ Obtains a pointer to the server's \fBServerConfig\fP object.
.PP
The \fBServerConfig\fP object contains most of the configuration data of the IRC server, as read from the config file by the core.
.PP
-Definition at line 324 of file modules.cpp.
+Definition at line 323 of file modules.cpp.
.PP
.nf
-325 {
-326 return Config;
-327 }
+324 {
+325 return Config;
+326 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetNetworkName ()\fC [virtual]\fP"
.PP
Returns the network name, global to all linked servers.
.PP
-Definition at line 539 of file modules.cpp.
+Definition at line 538 of file modules.cpp.
.PP
References ServerConfig::Network.
.PP
.nf
-540 {
-541 return Config->Network;
-542 }
+539 {
+540 return Config->Network;
+541 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetServerDescription ()\fC [virtual]\fP"
.PP
Returns the server description string of the local server.
.PP
-Definition at line 544 of file modules.cpp.
+Definition at line 543 of file modules.cpp.
.PP
References ServerConfig::ServerDesc.
.PP
.nf
-545 {
-546 return Config->ServerDesc;
-547 }
+544 {
+545 return Config->ServerDesc;
+546 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetServerName ()\fC [virtual]\fP"
.PP
Returns the server name of the server where the module is loaded.
.PP
-Definition at line 534 of file modules.cpp.
+Definition at line 533 of file modules.cpp.
.PP
References ServerConfig::ServerName.
.PP
.nf
-535 {
-536 return Config->ServerName;
-537 }
+534 {
+535 return Config->ServerName;
+536 }
.fi
.PP
.SS "\fBchanuserlist\fP Server::GetUsers (\fBchanrec\fP * chan)\fC [virtual]\fP"
@@ -839,36 +839,36 @@ Fetches the userlist of a channel.
.PP
This function must be here and not a member of userrec or chanrec due to include constraints.
.PP
-Definition at line 374 of file modules.cpp.
+Definition at line 373 of file modules.cpp.
.PP
References chanrec::GetUsers().
.PP
.nf
-375 {
-376 chanuserlist userl;
-377 userl.clear();
-378 std::vector<char*> *list = chan->GetUsers();
-379 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
-380 {
-381 char* o = *i;
-382 userl.push_back((userrec*)o);
-383 }
-384 return userl;
-385 }
+374 {
+375 chanuserlist userl;
+376 userl.clear();
+377 std::vector<char*> *list = chan->GetUsers();
+378 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
+379 {
+380 char* o = *i;
+381 userl.push_back((userrec*)o);
+382 }
+383 return userl;
+384 }
.fi
.PP
.SS "\fBstd::string\fP Server::GetVersion ()"
.PP
Returns the version string of this server.
.PP
-Definition at line 329 of file modules.cpp.
+Definition at line 328 of file modules.cpp.
.PP
References InspIRCd::GetVersionString().
.PP
.nf
-330 {
-331 return ServerInstance->GetVersionString();
-332 }
+329 {
+330 return ServerInstance->GetVersionString();
+331 }
.fi
.PP
.SS "bool Server::IsNick (\fBstd::string\fP nick)\fC [virtual]\fP"
@@ -877,14 +877,14 @@ Returns true if a nick is valid.
.PP
Nicks for unregistered connections will return false.
.PP
-Definition at line 504 of file modules.cpp.
+Definition at line 503 of file modules.cpp.
.PP
References isnick().
.PP
.nf
-505 {
-506 return (isnick(nick.c_str()) != 0);
-507 }
+504 {
+505 return (isnick(nick.c_str()) != 0);
+506 }
.fi
.PP
.SS "bool Server::IsOnChannel (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP"
@@ -893,14 +893,14 @@ Checks if a user is on a channel.
.PP
This function will return true or false to indicate if user 'User' is on channel 'Chan'.
.PP
-Definition at line 529 of file modules.cpp.
+Definition at line 528 of file modules.cpp.
.PP
References has_channel().
.PP
.nf
-530 {
-531 return has_channel(User,Chan);
-532 }
+529 {
+530 return has_channel(User,Chan);
+531 }
.fi
.PP
.SS "bool Server::IsUlined (\fBstd::string\fP server)\fC [virtual]\fP"
@@ -909,62 +909,62 @@ Returns true if the servername you give is ulined.
.PP
ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner.
.PP
-Definition at line 396 of file modules.cpp.
+Definition at line 395 of file modules.cpp.
.PP
References is_uline().
.PP
.nf
-397 {
-398 return is_uline(server.c_str());
-399 }
+396 {
+397 return is_uline(server.c_str());
+398 }
.fi
.PP
.SS "bool Server::IsValidMask (\fBstd::string\fP mask)\fC [virtual]\fP"
.PP
Returns true if a nick!ident string is correctly formatted, false if otherwise.
.PP
-Definition at line 695 of file modules.cpp.
+Definition at line 694 of file modules.cpp.
.PP
.nf
-696 {
-697 const char* dest = mask.c_str();
-698 if (strchr(dest,'!')==0)
-699 return false;
-700 if (strchr(dest,'@')==0)
-701 return false;
-702 for (unsigned int i = 0; i < strlen(dest); i++)
-703 if (dest[i] < 32)
-704 return false;
-705 for (unsigned int i = 0; i < strlen(dest); i++)
-706 if (dest[i] > 126)
-707 return false;
-708 unsigned int c = 0;
-709 for (unsigned int i = 0; i < strlen(dest); i++)
-710 if (dest[i] == '!')
-711 c++;
-712 if (c>1)
-713 return false;
-714 c = 0;
-715 for (unsigned int i = 0; i < strlen(dest); i++)
-716 if (dest[i] == '@')
-717 c++;
-718 if (c>1)
-719 return false;
-720
-721 return true;
-722 }
+695 {
+696 const char* dest = mask.c_str();
+697 if (strchr(dest,'!')==0)
+698 return false;
+699 if (strchr(dest,'@')==0)
+700 return false;
+701 for (unsigned int i = 0; i < strlen(dest); i++)
+702 if (dest[i] < 32)
+703 return false;
+704 for (unsigned int i = 0; i < strlen(dest); i++)
+705 if (dest[i] > 126)
+706 return false;
+707 unsigned int c = 0;
+708 for (unsigned int i = 0; i < strlen(dest); i++)
+709 if (dest[i] == '!')
+710 c++;
+711 if (c>1)
+712 return false;
+713 c = 0;
+714 for (unsigned int i = 0; i < strlen(dest); i++)
+715 if (dest[i] == '@')
+716 c++;
+717 if (c>1)
+718 return false;
+719
+720 return true;
+721 }
.fi
.PP
.SS "bool Server::IsValidModuleCommand (\fBstd::string\fP commandname, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
.PP
-Definition at line 406 of file modules.cpp.
+Definition at line 405 of file modules.cpp.
.PP
-References is_valid_cmd().
+References InspIRCd::Parser.
.PP
.nf
-407 {
-408 return is_valid_cmd(commandname.c_str(), pcnt, user);
-409 }
+406 {
+407 return ServerInstance->Parser->IsValidCommand(commandname, pcnt, user);
+408 }
.fi
.PP
.SS "\fBchanrec\fP * Server::JoinUserToChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP key)\fC [virtual]\fP"
@@ -973,14 +973,14 @@ Forces a user to join a channel.
.PP
This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.
.PP
-Definition at line 364 of file modules.cpp.
+Definition at line 363 of file modules.cpp.
.PP
References add_channel().
.PP
.nf
-365 {
-366 return add_channel(user,cname.c_str(),key.c_str(),false);
-367 }
+364 {
+365 return add_channel(user,cname.c_str(),key.c_str(),false);
+366 }
.fi
.PP
.SS "void Server::Log (int level, \fBstd::string\fP s)\fC [virtual]\fP"
@@ -989,14 +989,14 @@ Writes a log string.
.PP
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
.PP
-Definition at line 411 of file modules.cpp.
+Definition at line 410 of file modules.cpp.
.PP
References log().
.PP
.nf
-412 {
-413 log(level,'%s',s.c_str());
-414 }
+411 {
+412 log(level,'%s',s.c_str());
+413 }
.fi
.PP
.SS "bool Server::MatchText (\fBstd::string\fP sliteral, \fBstd::string\fP spattern)\fC [virtual]\fP"
@@ -1005,15 +1005,15 @@ Matches text against a glob pattern.
.PP
Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.
.PP
-Definition at line 351 of file modules.cpp.
+Definition at line 350 of file modules.cpp.
.PP
.nf
-352 {
-353 char literal[MAXBUF],pattern[MAXBUF];
-354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-356 return match(literal,pattern);
-357 }
+351 {
+352 char literal[MAXBUF],pattern[MAXBUF];
+353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+355 return match(literal,pattern);
+356 }
.fi
.PP
.SS "\fBchanrec\fP * Server::PartUserFromChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1022,14 +1022,14 @@ Forces a user to part a channel.
.PP
This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.
.PP
-Definition at line 369 of file modules.cpp.
+Definition at line 368 of file modules.cpp.
.PP
References del_channel().
.PP
.nf
-370 {
-371 return del_channel(user,cname.c_str(),reason.c_str(),false);
-372 }
+369 {
+370 return del_channel(user,cname.c_str(),reason.c_str(),false);
+371 }
.fi
.PP
.SS "bool Server::PseudoToUser (\fBuserrec\fP * alive, \fBuserrec\fP * zombie, \fBstd::string\fP message)\fC [virtual]\fP"
@@ -1038,39 +1038,39 @@ This user takes one user, and switches their file descriptor with another user,
.PP
The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive.
.PP
-Definition at line 610 of file modules.cpp.
+Definition at line 609 of file modules.cpp.
.PP
References userrec::chans, userrec::ClearBuffer(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, kill_link(), chanrec::name, userrec::nick, chanrec::setby, chanrec::topic, chanrec::topicset, Write(), WriteFrom(), and WriteServ().
.PP
.nf
-611 {
-612 zombie->fd = alive->fd;
-613 alive->fd = FD_MAGIC_NUMBER;
-614 alive->ClearBuffer();
-615 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick);
-616 kill_link(alive,message.c_str());
-617 fd_ref_table[zombie->fd] = zombie;
-618 for (unsigned int i = 0; i < zombie->chans.size(); i++)
-619 {
-620 if (zombie->chans[i].channel != NULL)
-621 {
-622 if (zombie->chans[i].channel->name)
-623 {
-624 chanrec* Ptr = zombie->chans[i].channel;
-625 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name);
-626 if (Ptr->topicset)
-627 {
-628 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic);
-629 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
-630 }
-631 userlist(zombie,Ptr);
-632 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name);
-633
-634 }
-635 }
-636 }
-637 return true;
-638 }
+610 {
+611 zombie->fd = alive->fd;
+612 alive->fd = FD_MAGIC_NUMBER;
+613 alive->ClearBuffer();
+614 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick);
+615 kill_link(alive,message.c_str());
+616 fd_ref_table[zombie->fd] = zombie;
+617 for (unsigned int i = 0; i < zombie->chans.size(); i++)
+618 {
+619 if (zombie->chans[i].channel != NULL)
+620 {
+621 if (zombie->chans[i].channel->name)
+622 {
+623 chanrec* Ptr = zombie->chans[i].channel;
+624 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name);
+625 if (Ptr->topicset)
+626 {
+627 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic);
+628 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
+629 }
+630 userlist(zombie,Ptr);
+631 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name);
+632
+633 }
+634 }
+635 }
+636 return true;
+637 }
.fi
.PP
.SS "void Server::QuitUser (\fBuserrec\fP * user, \fBstd::string\fP reason)\fC [virtual]\fP"
@@ -1083,27 +1083,27 @@ WARNING!
.PP
Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
.PP
-Definition at line 391 of file modules.cpp.
+Definition at line 390 of file modules.cpp.
.PP
References kill_link().
.PP
.nf
-392 {
-393 kill_link(user,reason.c_str());
-394 }
+391 {
+392 kill_link(user,reason.c_str());
+393 }
.fi
.PP
.SS "void Server::RehashServer ()\fC [virtual]\fP"
.PP
-Definition at line 318 of file modules.cpp.
+Definition at line 317 of file modules.cpp.
.PP
References ServerConfig::Read(), and WriteOpers().
.PP
.nf
-319 {
-320 WriteOpers('*** Rehashing config file');
-321 Config->Read(false,NULL);
-322 }
+318 {
+319 WriteOpers('*** Rehashing config file');
+320 Config->Read(false,NULL);
+321 }
.fi
.PP
.SS "void Server::Send (int Socket, \fBstd::string\fP s)\fC [virtual]\fP"
@@ -1112,14 +1112,14 @@ Sends a line of text down a TCP/IP socket.
.PP
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
.PP
-Definition at line 426 of file modules.cpp.
+Definition at line 425 of file modules.cpp.
.PP
References Write().
.PP
.nf
-427 {
-428 Write(Socket,'%s',s.c_str());
-429 }
+426 {
+427 Write(Socket,'%s',s.c_str());
+428 }
.fi
.PP
.SS "void Server::SendChannel (\fBuserrec\fP * User, \fBchanrec\fP * Channel, \fBstd::string\fP s, bool IncludeSender)\fC [virtual]\fP"
@@ -1128,21 +1128,21 @@ Sends text from a user to a channel (mulicast).
.PP
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
.PP
-Definition at line 460 of file modules.cpp.
+Definition at line 459 of file modules.cpp.
.PP
References ChanExceptSender(), and WriteChannel().
.PP
.nf
-461 {
-462 if (IncludeSender)
-463 {
-464 WriteChannel(Channel,User,'%s',s.c_str());
-465 }
-466 else
-467 {
-468 ChanExceptSender(Channel,User,'%s',s.c_str());
-469 }
-470 }
+460 {
+461 if (IncludeSender)
+462 {
+463 WriteChannel(Channel,User,'%s',s.c_str());
+464 }
+465 else
+466 {
+467 ChanExceptSender(Channel,User,'%s',s.c_str());
+468 }
+469 }
.fi
.PP
.SS "void Server::SendChannelServerNotice (\fBstd::string\fP ServName, \fBchanrec\fP * Channel, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1151,12 +1151,12 @@ Writes text to a channel, but from a server, including all.
.PP
This can be used to send server notices to a group of users.
.PP
-Definition at line 455 of file modules.cpp.
+Definition at line 454 of file modules.cpp.
.PP
.nf
-456 {
-457 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str());
-458 }
+455 {
+456 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str());
+457 }
.fi
.PP
.SS "void Server::SendCommon (\fBuserrec\fP * User, \fBstd::string\fP text, bool IncludeSender)\fC [virtual]\fP"
@@ -1165,21 +1165,21 @@ Sends text from a user to one or more channels (mulicast).
.PP
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
.PP
-Definition at line 477 of file modules.cpp.
+Definition at line 476 of file modules.cpp.
.PP
References WriteCommon(), and WriteCommonExcept().
.PP
.nf
-478 {
-479 if (IncludeSender)
-480 {
-481 WriteCommon(User,'%s',text.c_str());
-482 }
-483 else
-484 {
-485 WriteCommonExcept(User,'%s',text.c_str());
-486 }
-487 }
+477 {
+478 if (IncludeSender)
+479 {
+480 WriteCommon(User,'%s',text.c_str());
+481 }
+482 else
+483 {
+484 WriteCommonExcept(User,'%s',text.c_str());
+485 }
+486 }
.fi
.PP
.SS "void Server::SendFrom (int Socket, \fBuserrec\fP * User, \fBstd::string\fP s)\fC [virtual]\fP"
@@ -1188,14 +1188,14 @@ Sends text from a user to a socket.
.PP
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
.PP
-Definition at line 436 of file modules.cpp.
+Definition at line 435 of file modules.cpp.
.PP
References WriteFrom().
.PP
.nf
-437 {
-438 WriteFrom(Socket,User,'%s',s.c_str());
-439 }
+436 {
+437 WriteFrom(Socket,User,'%s',s.c_str());
+438 }
.fi
.PP
.SS "void Server::SendMode (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP"
@@ -1218,14 +1218,14 @@ Srv->SendMode(modes,3,user);
.PP
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
.PP
-Definition at line 421 of file modules.cpp.
+Definition at line 420 of file modules.cpp.
.PP
-References server_mode().
+References InspIRCd::ModeGrok, and ModeParser::ServerMode().
.PP
.nf
-422 {
-423 server_mode(parameters,pcnt,user);
-424 }
+421 {
+422 ServerInstance->ModeGrok->ServerMode(parameters,pcnt,user);
+423 }
.fi
.PP
.SS "void Server::SendOpers (\fBstd::string\fP s)\fC [virtual]\fP"
@@ -1234,14 +1234,14 @@ Sends text to all opers.
.PP
This method sends a server notice to all opers with the usermode +s.
.PP
-Definition at line 346 of file modules.cpp.
+Definition at line 345 of file modules.cpp.
.PP
References WriteOpers().
.PP
.nf
-347 {
-348 WriteOpers('%s',s.c_str());
-349 }
+346 {
+347 WriteOpers('%s',s.c_str());
+348 }
.fi
.PP
.SS "void Server::SendServ (int Socket, \fBstd::string\fP s)\fC [virtual]\fP"
@@ -1250,14 +1250,14 @@ Sends text from the server to a socket.
.PP
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
.PP
-Definition at line 431 of file modules.cpp.
+Definition at line 430 of file modules.cpp.
.PP
References WriteServ().
.PP
.nf
-432 {
-433 WriteServ(Socket,'%s',s.c_str());
-434 }
+431 {
+432 WriteServ(Socket,'%s',s.c_str());
+433 }
.fi
.PP
.SS "void Server::SendTo (\fBuserrec\fP * Source, \fBuserrec\fP * Dest, \fBstd::string\fP s)\fC [virtual]\fP"
@@ -1274,23 +1274,23 @@ The format will become:
.PP
Which is useful for numerics and server notices to single users, etc.
.PP
-Definition at line 441 of file modules.cpp.
+Definition at line 440 of file modules.cpp.
.PP
References connection::fd, Write(), and WriteTo().
.PP
.nf
-442 {
-443 if (!Source)
-444 {
-445 // if source is NULL, then the message originates from the local server
-446 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str());
-447 }
-448 else
-449 {
-450 // otherwise it comes from the user specified
-451 WriteTo(Source,Dest,'%s',s.c_str());
-452 }
-453 }
+441 {
+442 if (!Source)
+443 {
+444 // if source is NULL, then the message originates from the local server
+445 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str());
+446 }
+447 else
+448 {
+449 // otherwise it comes from the user specified
+450 WriteTo(Source,Dest,'%s',s.c_str());
+451 }
+452 }
.fi
.PP
.SS "void Server::SendToModeMask (\fBstd::string\fP modes, int flags, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1303,12 +1303,12 @@ Serv->SendToModeMask('xi', WM_OR, 'm00');
.PP
Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
.PP
-Definition at line 359 of file modules.cpp.
+Definition at line 358 of file modules.cpp.
.PP
.nf
-360 {
-361 WriteMode(modes.c_str(),flags,'%s',text.c_str());
-362 }
+359 {
+360 WriteMode(modes.c_str(),flags,'%s',text.c_str());
+361 }
.fi
.PP
.SS "void Server::SendWallops (\fBuserrec\fP * User, \fBstd::string\fP text)\fC [virtual]\fP"
@@ -1317,14 +1317,14 @@ Sends a WALLOPS message.
.PP
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
.PP
-Definition at line 489 of file modules.cpp.
+Definition at line 488 of file modules.cpp.
.PP
References WriteWallOps().
.PP
.nf
-490 {
-491 WriteWallOps(User,false,'%s',text.c_str());
-492 }
+489 {
+490 WriteWallOps(User,false,'%s',text.c_str());
+491 }
.fi
.PP
.SS "bool Server::UserToPseudo (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP"
@@ -1333,21 +1333,21 @@ Remove a user's connection to the irc server, but leave their client in existenc
.PP
When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid.
.PP
-Definition at line 598 of file modules.cpp.
+Definition at line 597 of file modules.cpp.
.PP
-References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, and Write().
+References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, InspIRCd::SE, and Write().
.PP
.nf
-599 {
-600 unsigned int old_fd = user->fd;
-601 user->fd = FD_MAGIC_NUMBER;
-602 user->ClearBuffer();
-603 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str());
-604 SE->DelFd(old_fd);
-605 shutdown(old_fd,2);
-606 close(old_fd);
-607 return true;
-608 }
+598 {
+599 unsigned int old_fd = user->fd;
+600 user->fd = FD_MAGIC_NUMBER;
+601 user->ClearBuffer();
+602 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str());
+603 ServerInstance->SE->DelFd(old_fd);
+604 shutdown(old_fd,2);
+605 close(old_fd);
+606 return true;
+607 }
.fi
.PP
diff --git a/docs/man/man3/ServerConfig.3 b/docs/man/man3/ServerConfig.3
index 445d8b097..e35314eae 100644
--- a/docs/man/man3/ServerConfig.3
+++ b/docs/man/man3/ServerConfig.3
@@ -1,4 +1,4 @@
-.TH "ServerConfig" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ServerConfig" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -44,6 +44,15 @@ Inherits \fBclassbase\fP.
.ti -1c
.RI "int \fBEnumValues\fP (std::stringstream *config, const char *tag, int index)"
.br
+.ti -1c
+.RI "\fBModule\fP * \fBGetIOHook\fP (int port)"
+.br
+.ti -1c
+.RI "bool \fBAddIOHook\fP (int port, \fBModule\fP *iomod)"
+.br
+.ti -1c
+.RI "bool \fBDelIOHook\fP (int port)"
+.br
.in -1c
.SS "Public Attributes"
@@ -191,6 +200,10 @@ Inherits \fBclassbase\fP.
.RI "int \fBports\fP [255]"
.br
.RI "\fIA list of ports which the server is listening on. \fP"
+.ti -1c
+.RI "std::map< int, \fBModule\fP * > \fBIOHookModule\fP"
+.br
+.RI "\fIA list of ports claimed by IO Modules. \fP"
.in -1c
.SS "Private Member Functions"
@@ -218,13 +231,15 @@ This class holds the bulk of the runtime configuration for the ircd.
It allows for reading new config values, accessing configuration files, and storage of the configuration data needed to run the ircd, such as the servername, connect classes, /ADMIN data, MOTDs and filenames etc.
.PP
-Definition at line 39 of file inspircd_io.h.
+Definition at line 40 of file inspircd_io.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "ServerConfig::ServerConfig ()"
.PP
.SH "Member Function Documentation"
.PP
+.SS "bool ServerConfig::AddIOHook (int port, \fBModule\fP * iomod)"
+.PP
.SS "void ServerConfig::ClearStack ()"
.PP
Clears the include stack in preperation for a \fBRead()\fP call.
@@ -239,6 +254,8 @@ This private method processes one line of configutation, appending errors to err
Referenced by userrec::HasPermission().
.SS "int ServerConfig::ConfValueEnum (char * tag, std::stringstream * config)"
.PP
+.SS "bool ServerConfig::DelIOHook (int port)"
+.PP
.SS "int ServerConfig::EnumConf (std::stringstream * config_f, const char * tag)"
.PP
Referenced by ConfigReader::Enumerate().
@@ -250,6 +267,9 @@ Referenced by ConfigReader::EnumerateValues().
Used by the config file subsystem to safely read a C-style string without dependency upon any certain style of linefeed, e.g.
.PP
it can read both windows and UNIX style linefeeds transparently.
+.SS "\fBModule\fP* ServerConfig::GetIOHook (int port)"
+.PP
+Referenced by kill_link(), and kill_link_silent().
.SS "bool ServerConfig::LoadConf (const char * filename, std::stringstream * target, std::stringstream * errorstream)"
.PP
Referenced by ConfigReader::ConfigReader().
@@ -269,213 +289,224 @@ Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigR
.PP
A list of IP addresses the server is listening on.
.PP
-Definition at line 216 of file inspircd_io.h.
+Definition at line 217 of file inspircd_io.h.
.SS "char \fBServerConfig::AdminEmail\fP[MAXBUF]"
.PP
Holds the email address of the admin, for output in the /ADMIN command.
.PP
-Definition at line 89 of file inspircd_io.h.
+Definition at line 90 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "char \fBServerConfig::AdminName\fP[MAXBUF]"
.PP
Holds the admin's name, for output in the /ADMIN command.
.PP
-Definition at line 84 of file inspircd_io.h.
+Definition at line 85 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "char \fBServerConfig::AdminNick\fP[MAXBUF]"
.PP
Holds the admin's nickname, for output in the /ADMIN command.
.PP
-Definition at line 94 of file inspircd_io.h.
+Definition at line 95 of file inspircd_io.h.
.PP
Referenced by Server::GetAdmin().
.SS "bool \fBServerConfig::AllowHalfop\fP"
.PP
If this value is true, halfops have been enabled in the configuration file.
.PP
-Definition at line 171 of file inspircd_io.h.
+Definition at line 172 of file inspircd_io.h.
.SS "\fBClassVector\fP \fBServerConfig::Classes\fP"
.PP
The connect classes in use by the IRC server.
.PP
-Definition at line 242 of file inspircd_io.h.
+Definition at line 243 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "std::stringstream \fBServerConfig::config_f\fP"
.PP
The parsed configuration file as a stringstream.
.PP
You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use \fBConfigReader\fP instead which provides a simpler abstraction of configuration files.
.PP
-Definition at line 238 of file inspircd_io.h.
+Definition at line 239 of file inspircd_io.h.
.PP
Referenced by userrec::HasPermission().
.SS "int \fBServerConfig::debugging\fP"
.PP
True if the DEBUG loglevel is selected.
.PP
-Definition at line 202 of file inspircd_io.h.
+Definition at line 203 of file inspircd_io.h.
.SS "int \fBServerConfig::DieDelay\fP"
.PP
How many seconds to wait before exiting the program when /DIE is correctly issued.
.PP
-Definition at line 211 of file inspircd_io.h.
+Definition at line 212 of file inspircd_io.h.
.SS "char \fBServerConfig::diepass\fP[MAXBUF]"
.PP
The admin-configured /DIE password.
.PP
-Definition at line 98 of file inspircd_io.h.
+Definition at line 99 of file inspircd_io.h.
.SS "char \fBServerConfig::DieValue\fP[MAXBUF]"
.PP
The last string found within a <die> tag, or an empty string.
.PP
-Definition at line 121 of file inspircd_io.h.
+Definition at line 122 of file inspircd_io.h.
.SS "char \fBServerConfig::DisabledCommands\fP[MAXBUF]"
.PP
This variable contains a space-seperated list of commands which are disabled by the administrator of the server for non-opers.
.PP
-Definition at line 131 of file inspircd_io.h.
+Definition at line 132 of file inspircd_io.h.
.SS "int \fBServerConfig::dns_timeout\fP"
.PP
The number of seconds the \fBDNS\fP subsystem will wait before timing out any request.
.PP
-Definition at line 176 of file inspircd_io.h.
+Definition at line 177 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "char \fBServerConfig::DNSServer\fP[MAXBUF]"
.PP
The \fBDNS\fP server to use for \fBDNS\fP queries.
.PP
-Definition at line 125 of file inspircd_io.h.
+Definition at line 126 of file inspircd_io.h.
.SS "std::vector<\fBstd::string\fP> \fBServerConfig::include_stack\fP\fC [private]\fP"
.PP
This variable holds the names of all files included from the main one.
.PP
This is used to make sure that no files are recursively included.
.PP
-Definition at line 47 of file inspircd_io.h.
+Definition at line 48 of file inspircd_io.h.
+.SS "std::map<int,\fBModule\fP*> \fBServerConfig::IOHookModule\fP"
+.PP
+A list of ports claimed by IO Modules.
+.PP
+Definition at line 256 of file inspircd_io.h.
.SS "FILE* \fBServerConfig::log_file\fP"
.PP
The file handle of the logfile.
.PP
If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!).
.PP
-Definition at line 151 of file inspircd_io.h.
+Definition at line 152 of file inspircd_io.h.
.SS "int \fBServerConfig::LogLevel\fP"
.PP
The loglevel in use by the IRC server.
.PP
-Definition at line 206 of file inspircd_io.h.
+Definition at line 207 of file inspircd_io.h.
.SS "int \fBServerConfig::MaxConn\fP"
.PP
The value to be used for listen() backlogs as default.
.PP
-Definition at line 187 of file inspircd_io.h.
+Definition at line 188 of file inspircd_io.h.
.SS "int \fBServerConfig::MaxWhoResults\fP"
.PP
The maximum number of /WHO results allowed in any single /WHO command.
.PP
-Definition at line 198 of file inspircd_io.h.
+Definition at line 199 of file inspircd_io.h.
.SS "char \fBServerConfig::ModPath\fP[1024]"
.PP
The full path to the modules directory.
.PP
This is either set at compile time, or overridden in the configuration file via the <options> tag.
.PP
-Definition at line 138 of file inspircd_io.h.
+Definition at line 139 of file inspircd_io.h.
.SS "std::vector<\fBstd::string\fP> \fBServerConfig::module_names\fP"
.PP
A list of module names (names only, no paths) which are currently loaded by the server.
.PP
-Definition at line 247 of file inspircd_io.h.
+Definition at line 248 of file inspircd_io.h.
.PP
Referenced by Server::FindModule().
.SS "\fBfile_cache\fP \fBServerConfig::MOTD\fP"
.PP
The MOTD file, cached in a file_cache type.
.PP
-Definition at line 220 of file inspircd_io.h.
+Definition at line 221 of file inspircd_io.h.
.SS "char \fBServerConfig::motd\fP[MAXBUF]"
.PP
The pathname and filename of the message of the day file, as defined by the administrator.
.PP
-Definition at line 107 of file inspircd_io.h.
+Definition at line 108 of file inspircd_io.h.
.SS "char \fBServerConfig::MyExecutable\fP[1024]"
.PP
The full pathname to the executable, as given in argv[0] when the program starts.
.PP
-Definition at line 143 of file inspircd_io.h.
+Definition at line 144 of file inspircd_io.h.
.SS "int \fBServerConfig::NetBufferSize\fP"
.PP
The size of the read() buffer in the user handling code, used to read data into a user's recvQ.
.PP
-Definition at line 182 of file inspircd_io.h.
+Definition at line 183 of file inspircd_io.h.
.SS "char \fBServerConfig::Network\fP[MAXBUF]"
.PP
-Definition at line 74 of file inspircd_io.h.
+Definition at line 75 of file inspircd_io.h.
.PP
-Referenced by Server::GetNetworkName().
+Referenced by FullConnectUser(), and Server::GetNetworkName().
.SS "bool \fBServerConfig::nofork\fP"
.PP
If this value is true, the owner of the server specified -nofork on the command line, causing the daemon to stay in the foreground.
.PP
-Definition at line 158 of file inspircd_io.h.
+Definition at line 159 of file inspircd_io.h.
.SS "char \fBServerConfig::PID\fP[1024]"
.PP
The full pathname and filename of the PID file as defined in the configuration.
.PP
-Definition at line 229 of file inspircd_io.h.
+Definition at line 230 of file inspircd_io.h.
.SS "int \fBServerConfig::ports\fP[255]"
.PP
A list of ports which the server is listening on.
.PP
-Definition at line 251 of file inspircd_io.h.
+Definition at line 252 of file inspircd_io.h.
.SS "char \fBServerConfig::PrefixQuit\fP[MAXBUF]"
.PP
The quit prefix in use, or an empty string.
.PP
-Definition at line 116 of file inspircd_io.h.
+Definition at line 117 of file inspircd_io.h.
.SS "char \fBServerConfig::restartpass\fP[MAXBUF]"
.PP
The admin-configured /RESTART password.
.PP
-Definition at line 102 of file inspircd_io.h.
+Definition at line 103 of file inspircd_io.h.
.SS "\fBfile_cache\fP \fBServerConfig::RULES\fP"
.PP
The RULES file, cached in a file_cache type.
.PP
-Definition at line 224 of file inspircd_io.h.
+Definition at line 225 of file inspircd_io.h.
.SS "char \fBServerConfig::rules\fP[MAXBUF]"
.PP
The pathname and filename of the rules file, as defined by the administrator.
.PP
-Definition at line 112 of file inspircd_io.h.
+Definition at line 113 of file inspircd_io.h.
.SS "char \fBServerConfig::ServerDesc\fP[MAXBUF]"
.PP
Holds the description of the local server as defined by the administrator.
.PP
-Definition at line 79 of file inspircd_io.h.
+Definition at line 80 of file inspircd_io.h.
.PP
Referenced by Server::GetServerDescription().
.SS "char \fBServerConfig::ServerName\fP[MAXBUF]"
.PP
Holds the server name of the local server as defined by the administrator.
.PP
-Definition at line 68 of file inspircd_io.h.
+Definition at line 69 of file inspircd_io.h.
.PP
-Referenced by Server::GetServerName(), and userrec::userrec().
+Referenced by AddClient(), FullConnectUser(), Server::GetServerName(), and userrec::userrec().
.SS "unsigned int \fBServerConfig::SoftLimit\fP"
.PP
The soft limit value assigned to the irc server.
.PP
The IRC server will not allow more than this number of local users.
.PP
-Definition at line 193 of file inspircd_io.h.
+Definition at line 194 of file inspircd_io.h.
+.PP
+Referenced by AddClient().
.SS "bool \fBServerConfig::unlimitcore\fP"
.PP
If this value is true, the owner of the server has chosen to unlimit the coredump size to as large a value as his account settings will allow.
.PP
This is often used when debugging.
.PP
-Definition at line 166 of file inspircd_io.h.
+Definition at line 167 of file inspircd_io.h.
.SH "Author"
.PP
diff --git a/docs/man/man3/SocketEngine.3 b/docs/man/man3/SocketEngine.3
index e61149335..46b4f51ff 100644
--- a/docs/man/man3/SocketEngine.3
+++ b/docs/man/man3/SocketEngine.3
@@ -1,4 +1,4 @@
-.TH "SocketEngine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "SocketEngine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -121,7 +121,7 @@ Definition at line 65 of file socketengine.cpp.
.PP
References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.
.PP
-Referenced by InspSocket::InspSocket(), and InspSocket::Poll().
+Referenced by AddClient(), InspSocket::InspSocket(), and InspSocket::Poll().
.PP
.nf
66 {
@@ -170,7 +170,7 @@ Definition at line 103 of file socketengine.cpp.
.PP
References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.
.PP
-Referenced by InspSocket::Poll(), and Server::UserToPseudo().
+Referenced by kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().
.PP
.nf
104 {
diff --git a/docs/man/man3/Version.3 b/docs/man/man3/Version.3
index 003e3723c..a20d493b0 100644
--- a/docs/man/man3/Version.3
+++ b/docs/man/man3/Version.3
@@ -1,4 +1,4 @@
-.TH "Version" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "Version" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -44,34 +44,34 @@ Holds a module's Version information The four members (set by the constructor on
A class of type Version is returned by the GetVersion method of the \fBModule\fP class.
.PP
-Definition at line 113 of file modules.h.
+Definition at line 131 of file modules.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "Version::Version (int major, int minor, int revision, int build, int flags)"
.PP
-Definition at line 159 of file modules.cpp.
+Definition at line 158 of file modules.cpp.
.PP
.nf
-159 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+158 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "const int \fBVersion::Build\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Flags\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Major\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Minor\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SS "const int \fBVersion::Revision\fP"
.PP
-Definition at line 116 of file modules.h.
+Definition at line 134 of file modules.h.
.SH "Author"
.PP
diff --git a/docs/man/man3/WhoWasUser.3 b/docs/man/man3/WhoWasUser.3
index 094ed41ae..fb447c6eb 100644
--- a/docs/man/man3/WhoWasUser.3
+++ b/docs/man/man3/WhoWasUser.3
@@ -1,4 +1,4 @@
-.TH "WhoWasUser" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "WhoWasUser" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -39,30 +39,44 @@ WhoWasUser \- A lightweight userrec used by WHOWAS.
.PP
A lightweight userrec used by WHOWAS.
.PP
-Definition at line 332 of file users.h.
+Definition at line 336 of file users.h.
.SH "Member Data Documentation"
.PP
.SS "char \fBWhoWasUser::dhost\fP[160]"
.PP
-Definition at line 337 of file users.h.
+Definition at line 341 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::fullname\fP[MAXGECOS+1]"
.PP
-Definition at line 339 of file users.h.
+Definition at line 343 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::host\fP[160]"
.PP
-Definition at line 338 of file users.h.
+Definition at line 342 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::ident\fP[IDENTMAX+1]"
.PP
-Definition at line 336 of file users.h.
+Definition at line 340 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::nick\fP[NICKMAX]"
.PP
-Definition at line 335 of file users.h.
+Definition at line 339 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "char \fBWhoWasUser::server\fP[256]"
.PP
-Definition at line 340 of file users.h.
+Definition at line 344 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SS "time_t \fBWhoWasUser::signon\fP"
.PP
-Definition at line 341 of file users.h.
+Definition at line 345 of file users.h.
+.PP
+Referenced by AddWhoWas().
.SH "Author"
.PP
diff --git a/docs/man/man3/XLine.3 b/docs/man/man3/XLine.3
index 216576090..9141d13fd 100644
--- a/docs/man/man3/XLine.3
+++ b/docs/man/man3/XLine.3
@@ -1,4 +1,4 @@
-.TH "XLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "XLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ZLine.3 b/docs/man/man3/ZLine.3
index 06d8663f6..a8435b5d7 100644
--- a/docs/man/man3/ZLine.3
+++ b/docs/man/man3/ZLine.3
@@ -1,4 +1,4 @@
-.TH "ZLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ZLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/_home_.3 b/docs/man/man3/_home_.3
index 49efbaddf..4fc80ad81 100644
--- a/docs/man/man3/_home_.3
+++ b/docs/man/man3/_home_.3
@@ -1,4 +1,4 @@
-.TH "/home/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/_home_brain_.3 b/docs/man/man3/_home_brain_.3
index babca30f7..29118884a 100644
--- a/docs/man/man3/_home_brain_.3
+++ b/docs/man/man3/_home_brain_.3
@@ -1,4 +1,4 @@
-.TH "/home/brain/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_.3 b/docs/man/man3/_home_brain_inspircd-cvs_.3
index 1479abc84..1ee75654f 100644
--- a/docs/man/man3/_home_brain_inspircd-cvs_.3
+++ b/docs/man/man3/_home_brain_inspircd-cvs_.3
@@ -1,4 +1,4 @@
-.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3
index 0284e0651..43c5f6676 100644
--- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3
@@ -1,4 +1,4 @@
-.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3
index e10e04e57..b9dcc0d80 100644
--- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3
@@ -1,4 +1,4 @@
-.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -7,6 +7,9 @@
.in +1c
.ti -1c
+.RI "file \fBaes.h\fP"
+.br
+.ti -1c
.RI "file \fBbase.h\fP"
.br
.ti -1c
diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3
index 9071df9e9..d3d18d775 100644
--- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3
+++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3
@@ -1,4 +1,4 @@
-.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/aes.h.3 b/docs/man/man3/aes.h.3
new file mode 100644
index 000000000..9d0352f33
--- /dev/null
+++ b/docs/man/man3/aes.h.3
@@ -0,0 +1,60 @@
+.TH "aes.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+aes.h \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <cstring>\fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "class \fBAES\fP"
+.br
+.RI "\fIThe AES class is a utility class for use in modules and the core for encryption of data. \fP"
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBto64frombits\fP (unsigned char *out, const unsigned char *in, int inlen)"
+.br
+.RI "\fIConvert from binary to base64. \fP"
+.ti -1c
+.RI "int \fBfrom64tobits\fP (char *out, const char *in, int maxlen)"
+.br
+.RI "\fIConvert from base64 to binary Output Input Size of output buffer. \fP"
+.in -1c
+.SH "Function Documentation"
+.PP
+.SS "int from64tobits (char * out, const char * in, int maxlen)"
+.PP
+Convert from base64 to binary Output Input Size of output buffer.
+.PP
+\fBReturns:\fP
+.RS 4
+Number of bytes actually converted
+.RE
+.PP
+
+.SS "void to64frombits (unsigned char * out, const unsigned char * in, int inlen)"
+.PP
+Convert from binary to base64.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIout\fP Output
+.br
+\fIin\fP Input
+.br
+\fIinlen\fP Number of bytes in input buffer
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/base.h.3 b/docs/man/man3/base.h.3
index 31b4deb84..e8445793c 100644
--- a/docs/man/man3/base.h.3
+++ b/docs/man/man3/base.h.3
@@ -1,4 +1,4 @@
-.TH "base.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "base.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/channels.cpp.3 b/docs/man/man3/channels.cpp.3
index 443276105..d9d19e355 100644
--- a/docs/man/man3/channels.cpp.3
+++ b/docs/man/man3/channels.cpp.3
@@ -1,4 +1,4 @@
-.TH "channels.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "channels.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -12,8 +12,6 @@ channels.cpp \-
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include <unistd.h>\fP
.br
\fC#include <sys/errno.h>\fP
@@ -128,107 +126,108 @@ channels.cpp \-
.PP
.SS "#define nspace std"
.PP
-Definition at line 55 of file channels.cpp.
+Definition at line 54 of file channels.cpp.
.SH "Function Documentation"
.PP
.SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)"
.PP
-Definition at line 195 of file channels.cpp.
+Definition at line 194 of file channels.cpp.
.PP
References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ().
.PP
Referenced by Server::JoinUserToChannel().
.PP
.nf
-196 {
-197 if ((!user) || (!cn))
-198 {
-199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
-200 return 0;
-201 }
-202
-203 int created = 0;
-204 char cname[MAXBUF];
-205 int MOD_RESULT = 0;
-206 strncpy(cname,cn,CHANMAX);
-207
-208 log(DEBUG,'add_channel: %s %s',user->nick,cname);
-209
-210 chanrec* Ptr = FindChan(cname);
-211
-212 if (!Ptr)
-213 {
-214 if (user->fd > -1)
-215 {
-216 MOD_RESULT = 0;
-217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-218 if (MOD_RESULT == 1)
-219 return NULL;
-220 }
-221 /* create a new one */
-222 chanlist[cname] = new chanrec();
-223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-225 chanlist[cname]->created = TIME;
-226 strcpy(chanlist[cname]->topic, '');
-227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-228 chanlist[cname]->topicset = 0;
-229 Ptr = chanlist[cname];
-230 log(DEBUG,'add_channel: created: %s',cname);
-231 /* set created to 2 to indicate user
-232 * is the first in the channel
-233 * and should be given ops */
-234 created = 2;
-235 }
-236 else
-237 {
-238 /* Already on the channel */
-239 if (has_channel(user,Ptr))
-240 return NULL;
-241
-242 // remote users are allowed us to bypass channel modes
-243 // and bans (used by servers)
-244 if (user->fd > -1)
-245 {
-246 MOD_RESULT = 0;
-247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-248 if (MOD_RESULT == 1)
-249 {
-250 return NULL;
-251 }
-252 else
-253 {
-254 if (*Ptr->key)
-255 {
-256 MOD_RESULT = 0;
-257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
-258 if (!MOD_RESULT)
-259 {
-260 if (!key)
-261 {
-262 log(DEBUG,'add_channel: no key given in JOIN');
-263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
-264 return NULL;
-265 }
-266 else
-267 {
-268 if (strcasecmp(key,Ptr->key))
-269 {
-270 log(DEBUG,'add_channel: bad key given in JOIN');
-271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
-272 return NULL;
-273 }
-274 }
-275 }
-276 }
-277 if (Ptr->binarymodes & CM_INVITEONLY)
-278 {
-279 MOD_RESULT = 0;
+195 {
+196 if ((!user) || (!cn))
+197 {
+198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
+199 return 0;
+200 }
+201
+202 int created = 0;
+203 char cname[MAXBUF];
+204 int MOD_RESULT = 0;
+205 strncpy(cname,cn,CHANMAX);
+206
+207 log(DEBUG,'add_channel: %s %s',user->nick,cname);
+208
+209 chanrec* Ptr = FindChan(cname);
+210
+211 if (!Ptr)
+212 {
+213 if (user->fd > -1)
+214 {
+215 MOD_RESULT = 0;
+216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+217 if (MOD_RESULT == 1)
+218 return NULL;
+219 }
+220 /* create a new one */
+221 chanlist[cname] = new chanrec();
+222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+224 chanlist[cname]->created = TIME;
+225 strcpy(chanlist[cname]->topic, '');
+226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+227 chanlist[cname]->topicset = 0;
+228 Ptr = chanlist[cname];
+229 log(DEBUG,'add_channel: created: %s',cname);
+230 /* set created to 2 to indicate user
+231 * is the first in the channel
+232 * and should be given ops */
+233 created = 2;
+234 }
+235 else
+236 {
+237 /* Already on the channel */
+238 if (has_channel(user,Ptr))
+239 return NULL;
+240
+241 // remote users are allowed us to bypass channel modes
+242 // and bans (used by servers)
+243 if (user->fd > -1)
+244 {
+245 MOD_RESULT = 0;
+246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+247 if (MOD_RESULT == 1)
+248 {
+249 return NULL;
+250 }
+251 else
+252 {
+253 if (*Ptr->key)
+254 {
+255 MOD_RESULT = 0;
+256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
+257 if (!MOD_RESULT)
+258 {
+259 if (!key)
+260 {
+261 log(DEBUG,'add_channel: no key given in JOIN');
+262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
+263 return NULL;
+264 }
+265 else
+266 {
+267 if (strcasecmp(key,Ptr->key))
+268 {
+269 log(DEBUG,'add_channel: bad key given in JOIN');
+270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
+271 return NULL;
+272 }
+273 }
+274 }
+275 }
+276 if (Ptr->binarymodes & CM_INVITEONLY)
+277 {
+278 MOD_RESULT = 0;
+279 irc::string xname(Ptr->name);
280 FOREACH_RESULT(OnCheckInvite(user, Ptr));
281 if (!MOD_RESULT)
282 {
283 log(DEBUG,'add_channel: channel is +i');
-284 if (user->IsInvited(Ptr->name))
+284 if (user->IsInvited(xname))
285 {
286 /* user was invited to channel */
287 /* there may be an optional channel NOTICE here */
@@ -239,7 +238,7 @@ Referenced by Server::JoinUserToChannel().
292 return NULL;
293 }
294 }
-295 user->RemoveInvite(Ptr->name);
+295 user->RemoveInvite(xname);
296 }
297 if (Ptr->limit)
298 {
@@ -520,14 +519,14 @@ Referenced by add_channel(), del_channel(), and kick_channel().
.PP
.SS "std::vector<\fBModeParameter\fP> \fBcustom_mode_params\fP"
.PP
-Definition at line 70 of file channels.cpp.
+Definition at line 69 of file channels.cpp.
.PP
Referenced by chanrec::GetModeParameter(), and chanrec::SetCustomModeParam().
.SS "std::vector<\fBircd_module\fP*> factory"
.PP
.SS "int \fBMODCOUNT\fP = -1"
.PP
-Definition at line 935 of file modules.cpp.
+Definition at line 934 of file modules.cpp.
.PP
Referenced by Server::FindModule().
.SS "std::vector<\fBModule\fP*> modules"
@@ -535,11 +534,13 @@ Referenced by Server::FindModule().
Referenced by Server::FindModule().
.SS "time_t \fBTIME\fP"
.PP
-Referenced by add_channel(), and userrec::userrec().
+Referenced by add_channel(), AddClient(), AddWhoWas(), FullConnectUser(), and userrec::userrec().
.SS "int \fBWHOWAS_MAX\fP"
.PP
+Referenced by AddWhoWas().
.SS "int \fBWHOWAS_STALE\fP"
.PP
+Referenced by AddWhoWas().
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/channels.h.3 b/docs/man/man3/channels.h.3
index f8f81e705..1686d1a89 100644
--- a/docs/man/man3/channels.h.3
+++ b/docs/man/man3/channels.h.3
@@ -1,4 +1,4 @@
-.TH "channels.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "channels.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -179,102 +179,103 @@ Definition at line 97 of file channels.h.
.PP
.SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)"
.PP
-Definition at line 195 of file channels.cpp.
+Definition at line 194 of file channels.cpp.
.PP
References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ().
.PP
Referenced by Server::JoinUserToChannel().
.PP
.nf
-196 {
-197 if ((!user) || (!cn))
-198 {
-199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
-200 return 0;
-201 }
-202
-203 int created = 0;
-204 char cname[MAXBUF];
-205 int MOD_RESULT = 0;
-206 strncpy(cname,cn,CHANMAX);
-207
-208 log(DEBUG,'add_channel: %s %s',user->nick,cname);
-209
-210 chanrec* Ptr = FindChan(cname);
-211
-212 if (!Ptr)
-213 {
-214 if (user->fd > -1)
-215 {
-216 MOD_RESULT = 0;
-217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-218 if (MOD_RESULT == 1)
-219 return NULL;
-220 }
-221 /* create a new one */
-222 chanlist[cname] = new chanrec();
-223 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-225 chanlist[cname]->created = TIME;
-226 strcpy(chanlist[cname]->topic, '');
-227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-228 chanlist[cname]->topicset = 0;
-229 Ptr = chanlist[cname];
-230 log(DEBUG,'add_channel: created: %s',cname);
-231 /* set created to 2 to indicate user
-232 * is the first in the channel
-233 * and should be given ops */
-234 created = 2;
-235 }
-236 else
-237 {
-238 /* Already on the channel */
-239 if (has_channel(user,Ptr))
-240 return NULL;
-241
-242 // remote users are allowed us to bypass channel modes
-243 // and bans (used by servers)
-244 if (user->fd > -1)
-245 {
-246 MOD_RESULT = 0;
-247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-248 if (MOD_RESULT == 1)
-249 {
-250 return NULL;
-251 }
-252 else
-253 {
-254 if (*Ptr->key)
-255 {
-256 MOD_RESULT = 0;
-257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
-258 if (!MOD_RESULT)
-259 {
-260 if (!key)
-261 {
-262 log(DEBUG,'add_channel: no key given in JOIN');
-263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
-264 return NULL;
-265 }
-266 else
-267 {
-268 if (strcasecmp(key,Ptr->key))
-269 {
-270 log(DEBUG,'add_channel: bad key given in JOIN');
-271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
-272 return NULL;
-273 }
-274 }
-275 }
-276 }
-277 if (Ptr->binarymodes & CM_INVITEONLY)
-278 {
-279 MOD_RESULT = 0;
+195 {
+196 if ((!user) || (!cn))
+197 {
+198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter');
+199 return 0;
+200 }
+201
+202 int created = 0;
+203 char cname[MAXBUF];
+204 int MOD_RESULT = 0;
+205 strncpy(cname,cn,CHANMAX);
+206
+207 log(DEBUG,'add_channel: %s %s',user->nick,cname);
+208
+209 chanrec* Ptr = FindChan(cname);
+210
+211 if (!Ptr)
+212 {
+213 if (user->fd > -1)
+214 {
+215 MOD_RESULT = 0;
+216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+217 if (MOD_RESULT == 1)
+218 return NULL;
+219 }
+220 /* create a new one */
+221 chanlist[cname] = new chanrec();
+222 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+224 chanlist[cname]->created = TIME;
+225 strcpy(chanlist[cname]->topic, '');
+226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+227 chanlist[cname]->topicset = 0;
+228 Ptr = chanlist[cname];
+229 log(DEBUG,'add_channel: created: %s',cname);
+230 /* set created to 2 to indicate user
+231 * is the first in the channel
+232 * and should be given ops */
+233 created = 2;
+234 }
+235 else
+236 {
+237 /* Already on the channel */
+238 if (has_channel(user,Ptr))
+239 return NULL;
+240
+241 // remote users are allowed us to bypass channel modes
+242 // and bans (used by servers)
+243 if (user->fd > -1)
+244 {
+245 MOD_RESULT = 0;
+246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+247 if (MOD_RESULT == 1)
+248 {
+249 return NULL;
+250 }
+251 else
+252 {
+253 if (*Ptr->key)
+254 {
+255 MOD_RESULT = 0;
+256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ''));
+257 if (!MOD_RESULT)
+258 {
+259 if (!key)
+260 {
+261 log(DEBUG,'add_channel: no key given in JOIN');
+262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name);
+263 return NULL;
+264 }
+265 else
+266 {
+267 if (strcasecmp(key,Ptr->key))
+268 {
+269 log(DEBUG,'add_channel: bad key given in JOIN');
+270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name);
+271 return NULL;
+272 }
+273 }
+274 }
+275 }
+276 if (Ptr->binarymodes & CM_INVITEONLY)
+277 {
+278 MOD_RESULT = 0;
+279 irc::string xname(Ptr->name);
280 FOREACH_RESULT(OnCheckInvite(user, Ptr));
281 if (!MOD_RESULT)
282 {
283 log(DEBUG,'add_channel: channel is +i');
-284 if (user->IsInvited(Ptr->name))
+284 if (user->IsInvited(xname))
285 {
286 /* user was invited to channel */
287 /* there may be an optional channel NOTICE here */
@@ -285,7 +286,7 @@ Referenced by Server::JoinUserToChannel().
292 return NULL;
293 }
294 }
-295 user->RemoveInvite(Ptr->name);
+295 user->RemoveInvite(xname);
296 }
297 if (Ptr->limit)
298 {
diff --git a/docs/man/man3/chanrec.3 b/docs/man/man3/chanrec.3
index fbd6260ec..83c154d23 100644
--- a/docs/man/man3/chanrec.3
+++ b/docs/man/man3/chanrec.3
@@ -1,4 +1,4 @@
-.TH "chanrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "chanrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -116,21 +116,21 @@ Definition at line 103 of file channels.h.
.PP
Creates a channel record and initialises it with default values.
.PP
-Definition at line 74 of file channels.cpp.
+Definition at line 73 of file channels.cpp.
.PP
References binarymodes, created, custom_modes, internal_userlist, key, limit, name, setby, topic, and topicset.
.PP
.nf
-75 {
-76 strcpy(name,'');
-77 strcpy(custom_modes,'');
-78 strcpy(topic,'');
-79 strcpy(setby,'');
-80 strcpy(key,'');
-81 created = topicset = limit = 0;
-82 binarymodes = 0;
-83 internal_userlist.clear();
-84 }
+74 {
+75 strcpy(name,'');
+76 strcpy(custom_modes,'');
+77 strcpy(topic,'');
+78 strcpy(setby,'');
+79 strcpy(key,'');
+80 created = topicset = limit = 0;
+81 binarymodes = 0;
+82 internal_userlist.clear();
+83 }
.fi
.PP
.SS "virtual chanrec::~chanrec ()\fC [inline, virtual]\fP"
@@ -154,17 +154,17 @@ Add a user pointer to the internal reference list.
.PP
The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
.PP
-Definition at line 167 of file channels.cpp.
+Definition at line 166 of file channels.cpp.
.PP
References DEBUG, internal_userlist, and log().
.PP
Referenced by ForceChan().
.PP
.nf
-168 {
-169 internal_userlist.push_back(castuser);
-170 log(DEBUG,'Added casted user to channel's internal list');
-171 }
+167 {
+168 internal_userlist.push_back(castuser);
+169 log(DEBUG,'Added casted user to channel's internal list');
+170 }
.fi
.PP
.SS "void chanrec::DelUser (char * castuser)"
@@ -178,25 +178,25 @@ Delete a user pointer to the internal reference list.
.PP
The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
.PP
-Definition at line 173 of file channels.cpp.
+Definition at line 172 of file channels.cpp.
.PP
References DEBUG, internal_userlist, log(), and name.
.PP
Referenced by del_channel(), and kick_channel().
.PP
.nf
-174 {
-175 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
-176 {
-177 if (*a == castuser)
-178 {
-179 log(DEBUG,'Removed casted user from channel's internal list');
-180 internal_userlist.erase(a);
-181 return;
-182 }
-183 }
-184 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name);
-185 }
+173 {
+174 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
+175 {
+176 if (*a == castuser)
+177 {
+178 log(DEBUG,'Removed casted user from channel's internal list');
+179 internal_userlist.erase(a);
+180 return;
+181 }
+182 }
+183 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name);
+184 }
.fi
.PP
.SS "\fBstd::string\fP chanrec::GetModeParameter (char mode)"
@@ -217,24 +217,24 @@ The parameter for this mode is returned, or an empty string
.PP
.PP
-Definition at line 147 of file channels.cpp.
+Definition at line 146 of file channels.cpp.
.PP
References custom_mode_params.
.PP
.nf
-148 {
-149 if (custom_mode_params.size())
-150 {
-151 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-152 {
-153 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-154 {
-155 return i->parameter;
-156 }
-157 }
-158 }
-159 return '';
-160 }
+147 {
+148 if (custom_mode_params.size())
+149 {
+150 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+151 {
+152 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+153 {
+154 return i->parameter;
+155 }
+156 }
+157 }
+158 return '';
+159 }
.fi
.PP
.SS "long chanrec::GetUserCounter ()"
@@ -248,12 +248,12 @@ The number of users on this channel
.PP
.PP
-Definition at line 162 of file channels.cpp.
+Definition at line 161 of file channels.cpp.
.PP
.nf
-163 {
-164 return (this->internal_userlist.size());
-165 }
+162 {
+163 return (this->internal_userlist.size());
+164 }
.fi
.PP
.SS "std::vector< char * > * chanrec::GetUsers ()"
@@ -269,16 +269,16 @@ This function returns a vector of userrec pointers, each of which has been caste
.PP
.PP
-Definition at line 187 of file channels.cpp.
+Definition at line 186 of file channels.cpp.
.PP
References internal_userlist.
.PP
Referenced by Server::GetUsers().
.PP
.nf
-188 {
-189 return &internal_userlist;
-190 }
+187 {
+188 return &internal_userlist;
+189 }
.fi
.PP
.SS "bool chanrec::IsCustomModeSet (char mode)"
@@ -297,12 +297,12 @@ True if the custom mode is set, false if otherwise
.PP
.PP
-Definition at line 142 of file channels.cpp.
+Definition at line 141 of file channels.cpp.
.PP
.nf
-143 {
-144 return (strchr(this->custom_modes,mode));
-145 }
+142 {
+143 return (strchr(this->custom_modes,mode));
+144 }
.fi
.PP
.SS "void chanrec::SetCustomMode (char mode, bool mode_on)"
@@ -318,33 +318,33 @@ Sets or unsets a custom mode in the channels info.
.PP
.PP
-Definition at line 86 of file channels.cpp.
+Definition at line 85 of file channels.cpp.
.PP
References custom_modes, DEBUG, log(), and SetCustomModeParam().
.PP
.nf
-87 {
-88 if (mode_on) {
-89 static char m[3];
-90 m[0] = mode;
-91 m[1] = '\0';
-92 if (!strchr(this->custom_modes,mode))
-93 {
-94 strlcat(custom_modes,m,MAXMODES);
-95 }
-96 log(DEBUG,'Custom mode %c set',mode);
-97 }
-98 else {
-99
-100 std::string a = this->custom_modes;
-101 int pos = a.find(mode);
-102 a.erase(pos,1);
-103 strncpy(this->custom_modes,a.c_str(),MAXMODES);
-104
-105 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes);
-106 this->SetCustomModeParam(mode,'',false);
-107 }
-108 }
+86 {
+87 if (mode_on) {
+88 static char m[3];
+89 m[0] = mode;
+90 m[1] = '\0';
+91 if (!strchr(this->custom_modes,mode))
+92 {
+93 strlcat(custom_modes,m,MAXMODES);
+94 }
+95 log(DEBUG,'Custom mode %c set',mode);
+96 }
+97 else {
+98
+99 std::string a = this->custom_modes;
+100 int pos = a.find(mode);
+101 a.erase(pos,1);
+102 strncpy(this->custom_modes,a.c_str(),MAXMODES);
+103
+104 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes);
+105 this->SetCustomModeParam(mode,'',false);
+106 }
+107 }
.fi
.PP
.SS "void chanrec::SetCustomModeParam (char mode, char * parameter, bool mode_on)"
@@ -362,42 +362,42 @@ Sets or unsets the parameters for a custom mode in a channels info.
.PP
.PP
-Definition at line 111 of file channels.cpp.
+Definition at line 110 of file channels.cpp.
.PP
References ModeParameter::channel, custom_mode_params, DEBUG, log(), ModeParameter::mode, and ModeParameter::parameter.
.PP
Referenced by SetCustomMode().
.PP
.nf
-112 {
-113
-114 log(DEBUG,'SetCustomModeParam called');
-115 ModeParameter M;
-116 M.mode = mode;
-117 strlcpy(M.channel,this->name,CHANMAX);
-118 strlcpy(M.parameter,parameter,MAXBUF);
-119 if (mode_on)
-120 {
-121 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter);
-122 custom_mode_params.push_back(M);
-123 }
-124 else
-125 {
-126 if (custom_mode_params.size())
-127 {
-128 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-129 {
-130 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-131 {
-132 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter);
-133 custom_mode_params.erase(i);
-134 return;
-135 }
-136 }
-137 }
-138 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!');
-139 }
-140 }
+111 {
+112
+113 log(DEBUG,'SetCustomModeParam called');
+114 ModeParameter M;
+115 M.mode = mode;
+116 strlcpy(M.channel,this->name,CHANMAX);
+117 strlcpy(M.parameter,parameter,MAXBUF);
+118 if (mode_on)
+119 {
+120 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter);
+121 custom_mode_params.push_back(M);
+122 }
+123 else
+124 {
+125 if (custom_mode_params.size())
+126 {
+127 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+128 {
+129 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+130 {
+131 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter);
+132 custom_mode_params.erase(i);
+133 return;
+134 }
+135 }
+136 }
+137 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!');
+138 }
+139 }
.fi
.PP
.SH "Member Data Documentation"
diff --git a/docs/man/man3/classbase.3 b/docs/man/man3/classbase.3
index de085033f..53f4bb176 100644
--- a/docs/man/man3/classbase.3
+++ b/docs/man/man3/classbase.3
@@ -1,4 +1,4 @@
-.TH "classbase" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "classbase" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/command_t.3 b/docs/man/man3/command_t.3
index 1e49a2996..0e69a9a09 100644
--- a/docs/man/man3/command_t.3
+++ b/docs/man/man3/command_t.3
@@ -1,4 +1,4 @@
-.TH "command_t" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "command_t" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -10,19 +10,28 @@ command_t \- A structure that defines a command.
.PP
\fC#include <ctables.h>\fP
.PP
-Inherits \fBExtensible\fP.
+Inherited by \fBcmd_mode\fP.
.PP
-.SS "Public Attributes"
+.SS "Public Member Functions"
.in +1c
.ti -1c
-.RI "char \fBcommand\fP [MAXBUF]"
+.RI "\fBcommand_t\fP (\fBstd::string\fP cmd, char flags, int minpara)"
.br
-.RI "\fICommand name. \fP"
.ti -1c
-.RI "\fBhandlerfunc\fP * \fBhandler_function\fP"
+.RI "virtual void \fBHandle\fP (char **parameters, int pcnt, \fBuserrec\fP *user)=0"
+.br
+.ti -1c
+.RI "virtual \fB~command_t\fP ()"
+.br
+.in -1c
+.SS "Public Attributes"
+
+.in +1c
+.ti -1c
+.RI "\fBstd::string\fP \fBcommand\fP"
.br
-.RI "\fIHandler function as in typedef. \fP"
+.RI "\fICommand name. \fP"
.ti -1c
.RI "char \fBflags_needed\fP"
.br
@@ -40,7 +49,7 @@ Inherits \fBExtensible\fP.
.br
.RI "\fIused by /stats m \fP"
.ti -1c
-.RI "char \fBsource\fP [MAXBUF]"
+.RI "\fBstd::string\fP \fBsource\fP"
.br
.RI "\fIused for resource tracking between modules \fP"
.in -1c
@@ -48,44 +57,74 @@ Inherits \fBExtensible\fP.
.PP
A structure that defines a command.
.PP
-Definition at line 26 of file ctables.h.
+Definition at line 29 of file ctables.h.
+.SH "Constructor & Destructor Documentation"
+.PP
+.SS "command_t::command_t (\fBstd::string\fP cmd, char flags, int minpara)\fC [inline]\fP"
+.PP
+Definition at line 51 of file ctables.h.
+.PP
+References source, total_bytes, and use_count.
+.PP
+.nf
+51 : command(cmd), flags_needed(flags), min_params(minpara)
+52 {
+53 use_count = total_bytes = 0;
+54 source = '<core>';
+55 }
+.fi
+.PP
+.SS "virtual command_t::~command_t ()\fC [inline, virtual]\fP"
+.PP
+Definition at line 59 of file ctables.h.
+.PP
+.nf
+59 {}
+.fi
+.PP
+.SH "Member Function Documentation"
+.PP
+.SS "virtual void command_t::Handle (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [pure virtual]\fP"
+.PP
+Implemented in \fBcmd_mode\fP.
.SH "Member Data Documentation"
.PP
-.SS "char \fBcommand_t::command\fP[MAXBUF]"
+.SS "\fBstd::string\fP \fBcommand_t::command\fP"
.PP
Command name.
.PP
-Definition at line 31 of file ctables.h.
+Definition at line 34 of file ctables.h.
.SS "char \fBcommand_t::flags_needed\fP"
.PP
User flags needed to execute the command or 0.
.PP
Definition at line 37 of file ctables.h.
-.SS "\fBhandlerfunc\fP* \fBcommand_t::handler_function\fP"
-.PP
-Handler function as in typedef.
-.PP
-Definition at line 34 of file ctables.h.
.SS "int \fBcommand_t::min_params\fP"
.PP
Minimum number of parameters command takes.
.PP
Definition at line 40 of file ctables.h.
-.SS "char \fBcommand_t::source\fP[MAXBUF]"
+.SS "\fBstd::string\fP \fBcommand_t::source\fP"
.PP
used for resource tracking between modules
.PP
Definition at line 49 of file ctables.h.
+.PP
+Referenced by command_t().
.SS "long \fBcommand_t::total_bytes\fP"
.PP
used by /stats m
.PP
Definition at line 46 of file ctables.h.
+.PP
+Referenced by command_t().
.SS "long \fBcommand_t::use_count\fP"
.PP
used by /stats m
.PP
Definition at line 43 of file ctables.h.
+.PP
+Referenced by command_t().
.SH "Author"
.PP
diff --git a/docs/man/man3/commands.h.3 b/docs/man/man3/commands.h.3
index 4d4920f53..de75f72c1 100644
--- a/docs/man/man3/commands.h.3
+++ b/docs/man/man3/commands.h.3
@@ -1,4 +1,4 @@
-.TH "commands.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "commands.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -22,294 +22,159 @@ commands.h \-
.br
\fC#include 'channels.h'\fP
.br
-
-.SS "Functions"
-
-.in +1c
-.ti -1c
-.RI "void \fBhandle_join\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_admin.h'\fP
.br
-.RI "\fIThese are the handlers for user commands. \fP"
-.ti -1c
-.RI "void \fBhandle_part\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_away.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_commands.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_die\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_connect.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_restart\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_die.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kill\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_eline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_summon\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_gline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_users\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_info.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_pass\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_invite.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_invite\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_ison.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_topic\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_join.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_names\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kick.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_privmsg\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kill.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_notice\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_kline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_info\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_links.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_time\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_list.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_whois\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_loadmodule.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_quit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_lusers.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_who\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_map.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_wallops\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_modules.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_list\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_motd.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_rehash\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_names.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_lusers\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_nick.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_admin\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_notice.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_ping\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_oper.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_pong\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_part.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_motd\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_pass.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_rules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_ping.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_user\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_pong.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_userhost\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_privmsg.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_ison\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_qline.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_away\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_quit.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_whowas\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_rehash.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_trace\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_restart.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_modules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_rules.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_stats\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_server.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_connect\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_squit.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_squit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_stats.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_links\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_summon.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_map\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_time.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_oper\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_topic.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_nick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_trace.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_kline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_unloadmodule.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_gline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_user.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_zline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_userhost.h'\fP
.br
-.ti -1c
-.RI "void \fBhandle_qline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+\fC#include 'cmd_users.h'\fP
+.br
+\fC#include 'cmd_version.h'\fP
+.br
+\fC#include 'cmd_wallops.h'\fP
+.br
+\fC#include 'cmd_who.h'\fP
+.br
+\fC#include 'cmd_whois.h'\fP
.br
+\fC#include 'cmd_whowas.h'\fP
+.br
+\fC#include 'cmd_zline.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
.ti -1c
-.RI "void \fBhandle_eline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "char * \fBCleanFilename\fP (char *name)"
.br
.ti -1c
-.RI "void \fBhandle_server\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "bool \fBis_uline\fP (const char *server)"
.br
.ti -1c
-.RI "void \fBhandle_loadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "long \fBduration\fP (const char *str)"
.br
.ti -1c
-.RI "void \fBhandle_unloadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)"
.br
.ti -1c
-.RI "void \fBhandle_commands\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "bool \fBhost_matches_everyone\fP (\fBstd::string\fP mask, \fBuserrec\fP *user)"
.br
.ti -1c
-.RI "bool \fBis_uline\fP (const char *server)"
+.RI "bool \fBip_matches_everyone\fP (\fBstd::string\fP ip, \fBuserrec\fP *user)"
.br
-.RI "\fIFunctions for u:lined servers. \fP"
.ti -1c
-.RI "long \fBduration\fP (const char *str)"
+.RI "bool \fBnick_matches_everyone\fP (\fBstd::string\fP nick, \fBuserrec\fP *user)"
.br
-.RI "\fIOther useful functions. \fP"
.ti -1c
-.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)"
+.RI "int \fBoperstrcmp\fP (char *data, char *input)"
.br
.in -1c
.SH "Function Documentation"
.PP
+.SS "char* CleanFilename (char * name)"
+.PP
.SS "void do_whois (\fBuserrec\fP * user, \fBuserrec\fP * dest, unsigned long signon, unsigned long idle, char * nick)"
.PP
.SS "long duration (const char * str)"
.PP
-Other useful functions.
-.PP
Referenced by Server::CalcDuration().
-.SS "void handle_admin (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_away (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_commands (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_connect (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_die (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_eline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_gline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_info (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_invite (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_ison (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_join (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-These are the handlers for user commands.
-.PP
-.SS "void handle_kick (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_kill (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_kline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_links (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_list (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_loadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_lusers (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_map (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_modules (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_motd (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_names (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_nick (char ** parameters, int pcnt, \fBuserrec\fP * user)"
+.SS "bool host_matches_everyone (\fBstd::string\fP mask, \fBuserrec\fP * user)"
.PP
-.SS "void handle_notice (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_oper (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_part (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_pass (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_ping (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_pong (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_privmsg (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_qline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_quit (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_rehash (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_restart (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_rules (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_server (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_squit (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_stats (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_summon (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_time (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_topic (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_trace (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_unloadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_user (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_userhost (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_users (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_wallops (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_who (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_whois (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_whowas (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void handle_zline (char ** parameters, int pcnt, \fBuserrec\fP * user)"
+.SS "bool ip_matches_everyone (\fBstd::string\fP ip, \fBuserrec\fP * user)"
.PP
.SS "bool is_uline (const char * server)"
.PP
-Functions for u:lined servers.
-.PP
Referenced by userrec::HasPermission(), Server::IsUlined(), and kick_channel().
+.SS "bool nick_matches_everyone (\fBstd::string\fP nick, \fBuserrec\fP * user)"
+.PP
+.SS "int operstrcmp (char * data, char * input)"
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/connection.3 b/docs/man/man3/connection.3
index 841c792f1..a133ab846 100644
--- a/docs/man/man3/connection.3
+++ b/docs/man/man3/connection.3
@@ -1,4 +1,4 @@
-.TH "connection" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "connection" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -139,14 +139,14 @@ File descriptor of the connection.
.PP
Definition at line 42 of file connection.h.
.PP
-Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), kick_channel(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo().
+Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo().
.SS "bool \fBconnection::haspassed\fP"
.PP
True if server/user has authenticated, false if otherwise.
.PP
Definition at line 70 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "char \fBconnection::host\fP[160]"
.PP
Hostname of connection.
@@ -155,21 +155,21 @@ Not used if this is a serverrec
.PP
Definition at line 46 of file connection.h.
.PP
-Referenced by userrec::GetFullRealHost(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo().
+Referenced by AddWhoWas(), FullConnectUser(), userrec::GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo().
.SS "time_t \fBconnection::idle_lastmsg\fP"
.PP
Time that the connection last sent data, used to calculate idle time.
.PP
Definition at line 92 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "char \fBconnection::ip\fP[16]"
.PP
IP of connection.
.PP
Definition at line 50 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), and userrec::userrec().
.SS "time_t \fBconnection::lastping\fP"
.PP
Time the connection was last pinged.
@@ -192,21 +192,21 @@ For a serverrec this is the current listening port of the serverrec object.
.PP
Definition at line 76 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().
.SS "char \fBconnection::registered\fP"
.PP
Used by userrec to indicate the registration status of the connection.
.PP
Definition at line 80 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by ConnectUser(), force_nickchange(), FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().
.SS "time_t \fBconnection::signon\fP"
.PP
Time the connection was created, set in the constructor.
.PP
Definition at line 88 of file connection.h.
.PP
-Referenced by userrec::userrec().
+Referenced by AddWhoWas(), and userrec::userrec().
.SH "Author"
.PP
diff --git a/docs/man/man3/connection.h.3 b/docs/man/man3/connection.h.3
index 7e78e8aab..cbbe6fa27 100644
--- a/docs/man/man3/connection.h.3
+++ b/docs/man/man3/connection.h.3
@@ -1,4 +1,4 @@
-.TH "connection.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "connection.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/ctables.h.3 b/docs/man/man3/ctables.h.3
index 72fbad97b..740c740c0 100644
--- a/docs/man/man3/ctables.h.3
+++ b/docs/man/man3/ctables.h.3
@@ -1,4 +1,4 @@
-.TH "ctables.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ctables.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -8,9 +8,7 @@ ctables.h \-
.PP
\fC#include 'inspircd_config.h'\fP
.br
-\fC#include 'inspircd.h'\fP
-.br
-\fC#include 'base.h'\fP
+\fC#include <deque>\fP
.br
.SS "Classes"
@@ -21,6 +19,18 @@ ctables.h \-
.br
.RI "\fIA structure that defines a command. \fP"
.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef std::deque< \fBcommand_t\fP * > \fBcommand_table\fP"
+.br
+.in -1c
+.SH "Typedef Documentation"
+.PP
+.SS "typedef std::deque<\fBcommand_t\fP*> \fBcommand_table\fP"
+.PP
+Definition at line 62 of file ctables.h.
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/cull_list.h.3 b/docs/man/man3/cull_list.h.3
index b6ded78a3..78b9f49a9 100644
--- a/docs/man/man3/cull_list.h.3
+++ b/docs/man/man3/cull_list.h.3
@@ -1,4 +1,4 @@
-.TH "cull_list.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "cull_list.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/dns.h.3 b/docs/man/man3/dns.h.3
index 03f36a822..df94d7ad2 100644
--- a/docs/man/man3/dns.h.3
+++ b/docs/man/man3/dns.h.3
@@ -1,4 +1,4 @@
-.TH "dns.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "dns.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -26,6 +26,21 @@ dns.h \-
.br
.RI "\fIThe DNS class allows fast nonblocking resolution of hostnames and ip addresses. \fP"
.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void * \fBdns_task\fP (void *arg)"
+.br
+.RI "\fIThis is the handler function for multi-threaded \fBDNS\fP. \fP"
+.in -1c
+.SH "Function Documentation"
+.PP
+.SS "void* dns_task (void * arg)"
+.PP
+This is the handler function for multi-threaded \fBDNS\fP.
+.PP
+It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh).
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/dns_ip4list.3 b/docs/man/man3/dns_ip4list.3
index 9a31009aa..ddd834dd4 100644
--- a/docs/man/man3/dns_ip4list.3
+++ b/docs/man/man3/dns_ip4list.3
@@ -1,4 +1,4 @@
-.TH "dns_ip4list" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "dns_ip4list" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/globals.h.3 b/docs/man/man3/globals.h.3
index f60a9448d..6625e0c1a 100644
--- a/docs/man/man3/globals.h.3
+++ b/docs/man/man3/globals.h.3
@@ -1,4 +1,4 @@
-.TH "globals.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "globals.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -136,7 +136,7 @@ Referenced by add_channel(), del_channel(), and Server::FindChannel().
Referenced by Server::IsNick().
.SS "void log (int level, char * text, ...)"
.PP
-Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), Server::Log(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
+Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), Server::Log(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
.SS "int ModeDefiend (char c, int i)"
.PP
.SS "void readfile (\fBfile_cache\fP & F, const char * fname)"
@@ -144,7 +144,7 @@ Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), c
Referenced by FileReader::FileReader(), and FileReader::LoadFile().
.SS "void Write (int sock, char * text, ...)"
.PP
-Referenced by Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo().
+Referenced by kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo().
.SS "void WriteChannel (\fBchanrec\fP * Ptr, \fBuserrec\fP * user, char * text, ...)"
.PP
Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChannel().
@@ -153,16 +153,16 @@ Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChanne
Referenced by Server::SendCommon().
.SS "void WriteCommonExcept (\fBuserrec\fP * u, char * text, ...)"
.PP
-Referenced by Server::SendCommon().
+Referenced by kill_link(), kill_link_silent(), and Server::SendCommon().
.SS "void WriteFrom (int sock, \fBuserrec\fP * user, char * text, ...)"
.PP
Referenced by Server::PseudoToUser(), and Server::SendFrom().
.SS "void WriteOpers (char * text, ...)"
.PP
-Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), Server::RehashServer(), and Server::SendOpers().
+Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), FullConnectUser(), kill_link(), Server::RehashServer(), and Server::SendOpers().
.SS "void WriteServ (int sock, char * text, ...)"
.PP
-Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), kick_channel(), Server::PseudoToUser(), and Server::SendServ().
+Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), FullConnectUser(), kick_channel(), Server::PseudoToUser(), and Server::SendServ().
.SS "void WriteTo (\fBuserrec\fP * source, \fBuserrec\fP * dest, char * data, ...)"
.PP
Referenced by Server::SendTo().
diff --git a/docs/man/man3/hashcomp.h.3 b/docs/man/man3/hashcomp.h.3
index 21ba40560..cd2cfe35e 100644
--- a/docs/man/man3/hashcomp.h.3
+++ b/docs/man/man3/hashcomp.h.3
@@ -1,4 +1,4 @@
-.TH "hashcomp.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "hashcomp.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/inspircd.h.3 b/docs/man/man3/inspircd.h.3
index 32e2fdb01..545c22f41 100644
--- a/docs/man/man3/inspircd.h.3
+++ b/docs/man/man3/inspircd.h.3
@@ -1,4 +1,4 @@
-.TH "inspircd.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "inspircd.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -38,14 +38,18 @@ inspircd.h \-
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include 'users.h'\fP
.br
\fC#include 'channels.h'\fP
.br
\fC#include 'socket.h'\fP
.br
+\fC#include 'mode.h'\fP
+.br
+\fC#include 'socketengine.h'\fP
+.br
+\fC#include 'command_parse.h'\fP
+.br
.SS "Classes"
@@ -75,182 +79,43 @@ inspircd.h \-
.ti -1c
.RI "#define \fBMAXCOMMAND\fP 32"
.br
-.ti -1c
-.RI "#define \fBWM_AND\fP 1"
-.br
-.ti -1c
-.RI "#define \fBWM_OR\fP 2"
-.br
-.ti -1c
-.RI "#define \fBTYPE_USER\fP 1"
-.br
-.ti -1c
-.RI "#define \fBTYPE_CHANNEL\fP 2"
-.br
-.ti -1c
-.RI "#define \fBTYPE_SERVER\fP 3"
-.br
-.ti -1c
-.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)"
-.br
-.ti -1c
-.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)"
-.br
-.ti -1c
-.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)"
-.br
-.in -1c
-.SS "Typedefs"
-
-.in +1c
-.ti -1c
-.RI "typedef void( \fBhandlerfunc\fP )(char **, int, \fBuserrec\fP *)"
-.br
.in -1c
.SS "Functions"
.in +1c
.ti -1c
-.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
-.br
-.ti -1c
-.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
-.br
-.ti -1c
-.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
-.br
-.ti -1c
-.RI "void \fBcall_handler\fP (const char *commandname, char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "bool \fBis_valid_cmd\fP (const char *commandname, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "int \fBloop_call\fP (\fBhandlerfunc\fP fn, char **parameters, int pcnt, \fBuserrec\fP *u, int start, int end, int joins)"
-.br
-.ti -1c
-.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
-.br
-.ti -1c
-.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
-.br
-.ti -1c
-.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBhandle_version\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
.RI "void \fBAddServerName\fP (\fBstd::string\fP servername)"
.br
.ti -1c
.RI "const char * \fBFindServerNamePtr\fP (\fBstd::string\fP servername)"
.br
-.ti -1c
-.RI "void * \fBdns_task\fP (void *arg)"
-.br
-.ti -1c
-.RI "void \fBprocess_buffer\fP (const char *cmdbuf, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
-.br
.in -1c
.SH "Define Documentation"
.PP
.SS "#define ERROR -1"
.PP
-Definition at line 49 of file inspircd.h.
+Definition at line 51 of file inspircd.h.
.PP
Referenced by InspSocket::InspSocket().
.SS "#define FALSE 0"
.PP
-Definition at line 51 of file inspircd.h.
-.SS "#define IS_LOCAL(x) (x->fd > -1)"
-.PP
-Definition at line 66 of file inspircd.h.
-.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)"
-.PP
-Definition at line 68 of file inspircd.h.
-.SS "#define IS_REMOTE(x) (x->fd < 0)"
-.PP
-Definition at line 67 of file inspircd.h.
+Definition at line 53 of file inspircd.h.
.SS "#define MAXCOMMAND 32"
.PP
-Definition at line 53 of file inspircd.h.
+Definition at line 55 of file inspircd.h.
.SS "#define MAXSOCKS 64"
.PP
-Definition at line 52 of file inspircd.h.
+Definition at line 54 of file inspircd.h.
.SS "#define TRUE 1"
.PP
-Definition at line 50 of file inspircd.h.
-.SS "#define TYPE_CHANNEL 2"
-.PP
-Definition at line 63 of file inspircd.h.
-.SS "#define TYPE_SERVER 3"
-.PP
-Definition at line 64 of file inspircd.h.
-.SS "#define TYPE_USER 1"
-.PP
-Definition at line 62 of file inspircd.h.
-.SS "#define WM_AND 1"
-.PP
-Definition at line 57 of file inspircd.h.
-.SS "#define WM_OR 2"
-.PP
-Definition at line 58 of file inspircd.h.
-.SH "Typedef Documentation"
-.PP
-.SS "typedef void( \fBhandlerfunc\fP)(char **, int, \fBuserrec\fP *)"
-.PP
-Definition at line 70 of file inspircd.h.
+Definition at line 52 of file inspircd.h.
.SH "Function Documentation"
.PP
-.SS "void AddOper (\fBuserrec\fP * user)"
-.PP
.SS "void AddServerName (\fBstd::string\fP servername)"
.PP
-.SS "void AddWhoWas (\fBuserrec\fP * u)"
-.PP
-.SS "void call_handler (const char * commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::CallCommandHandler().
-.SS "void ConnectUser (\fBuserrec\fP * user)"
-.PP
-.SS "void DeleteOper (\fBuserrec\fP * user)"
-.PP
-.SS "void* dns_task (void * arg)"
-.PP
.SS "const char* FindServerNamePtr (\fBstd::string\fP servername)"
.PP
-Referenced by userrec::userrec().
-.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
-.PP
-Referenced by Server::ChangeUserNick().
-.SS "void FullConnectUser (\fBuserrec\fP * user)"
-.PP
-.SS "void handle_version (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "bool is_valid_cmd (const char * commandname, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::IsValidModuleCommand().
-.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
-.PP
-Referenced by Server::PseudoToUser(), and Server::QuitUser().
-.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
-.PP
-.SS "int loop_call (\fBhandlerfunc\fP fn, char ** parameters, int pcnt, \fBuserrec\fP * u, int start, int end, int joins)"
-.PP
-.SS "void process_buffer (const char * cmdbuf, \fBuserrec\fP * user)"
-.PP
-.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
-.PP
+Referenced by AddClient(), and userrec::userrec().
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/inspircd_io.h.3 b/docs/man/man3/inspircd_io.h.3
index 9ed14e7be..006d467e0 100644
--- a/docs/man/man3/inspircd_io.h.3
+++ b/docs/man/man3/inspircd_io.h.3
@@ -1,4 +1,4 @@
-.TH "inspircd_io.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "inspircd_io.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -16,6 +16,8 @@ inspircd_io.h \-
.br
\fC#include 'globals.h'\fP
.br
+\fC#include 'modules.h'\fP
+.br
.SS "Classes"
@@ -79,23 +81,23 @@ inspircd_io.h \-
.PP
Flags for use with \fBlog()\fP.
.PP
-Definition at line 28 of file inspircd_io.h.
+Definition at line 29 of file inspircd_io.h.
.PP
-Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
+Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
.SS "#define DEFAULT 30"
.PP
-Definition at line 30 of file inspircd_io.h.
+Definition at line 31 of file inspircd_io.h.
.PP
Referenced by add_channel(), del_channel(), and kick_channel().
.SS "#define NONE 50"
.PP
-Definition at line 32 of file inspircd_io.h.
+Definition at line 33 of file inspircd_io.h.
.SS "#define SPARSE 40"
.PP
-Definition at line 31 of file inspircd_io.h.
+Definition at line 32 of file inspircd_io.h.
.SS "#define VERBOSE 20"
.PP
-Definition at line 29 of file inspircd_io.h.
+Definition at line 30 of file inspircd_io.h.
.SH "Function Documentation"
.PP
.SS "int BindPorts ()"
diff --git a/docs/man/man3/irc.3 b/docs/man/man3/irc.3
index 357498a3b..b7f85d31a 100644
--- a/docs/man/man3/irc.3
+++ b/docs/man/man3/irc.3
@@ -1,4 +1,4 @@
-.TH "irc" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/irc_InAddr_HashComp.3 b/docs/man/man3/irc_InAddr_HashComp.3
index 2530f430d..ce9006fe9 100644
--- a/docs/man/man3/irc_InAddr_HashComp.3
+++ b/docs/man/man3/irc_InAddr_HashComp.3
@@ -1,4 +1,4 @@
-.TH "irc::InAddr_HashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::InAddr_HashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/irc_StrHashComp.3 b/docs/man/man3/irc_StrHashComp.3
index c27aab162..765c1fd52 100644
--- a/docs/man/man3/irc_StrHashComp.3
+++ b/docs/man/man3/irc_StrHashComp.3
@@ -1,4 +1,4 @@
-.TH "irc::StrHashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::StrHashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/irc_irc_char_traits.3 b/docs/man/man3/irc_irc_char_traits.3
index 4b94560db..bb9f4f6fd 100644
--- a/docs/man/man3/irc_irc_char_traits.3
+++ b/docs/man/man3/irc_irc_char_traits.3
@@ -1,4 +1,4 @@
-.TH "irc::irc_char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "irc::irc_char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/message.h.3 b/docs/man/man3/message.h.3
index ab4a63db8..a6f935c18 100644
--- a/docs/man/man3/message.h.3
+++ b/docs/man/man3/message.h.3
@@ -1,4 +1,4 @@
-.TH "message.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "message.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/mode.h.3 b/docs/man/man3/mode.h.3
index c00c3947e..e42b845a3 100644
--- a/docs/man/man3/mode.h.3
+++ b/docs/man/man3/mode.h.3
@@ -1,4 +1,4 @@
-.TH "mode.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "mode.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -22,89 +22,19 @@ mode.h \-
.br
\fC#include 'channels.h'\fP
.br
+\fC#include 'ctables.h'\fP
+.br
-.SS "Functions"
+.SS "Classes"
.in +1c
.ti -1c
-.RI "char * \fBgive_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBgive_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBgive_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
+.RI "class \fBModeParser\fP"
.br
.ti -1c
-.RI "char * \fBadd_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "char * \fBtake_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)"
-.br
-.ti -1c
-.RI "void \fBprocess_modes\fP (char **parameters, \fBuserrec\fP *user, \fBchanrec\fP *chan, int status, int pcnt, bool servermode, bool silent, bool local)"
-.br
-.ti -1c
-.RI "bool \fBallowed_umode\fP (char umode, char *sourcemodes, bool adding)"
-.br
-.ti -1c
-.RI "bool \fBprocess_module_umode\fP (char umode, \fBuserrec\fP *source, void *dest, bool adding)"
-.br
-.ti -1c
-.RI "void \fBhandle_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
-.RI "void \fBmerge_mode\fP (char **parameters, int pcnt)"
-.br
-.ti -1c
-.RI "void \fBmerge_mode2\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
+.RI "class \fBcmd_mode\fP"
.br
.in -1c
-.SH "Function Documentation"
-.PP
-.SS "char* add_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "bool allowed_umode (char umode, char * sourcemodes, bool adding)"
-.PP
-.SS "char* give_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* give_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* give_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "void handle_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void merge_mode (char ** parameters, int pcnt)"
-.PP
-.SS "void merge_mode2 (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-.SS "void process_modes (char ** parameters, \fBuserrec\fP * user, \fBchanrec\fP * chan, int status, int pcnt, bool servermode, bool silent, bool local)"
-.PP
-.SS "bool process_module_umode (char umode, \fBuserrec\fP * source, void * dest, bool adding)"
-.PP
-.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
-Referenced by Server::SendMode().
-.SS "char* take_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
-.SS "char* take_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)"
-.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/modules.cpp.3 b/docs/man/man3/modules.cpp.3
index 6a58ebacd..8ec07b6cd 100644
--- a/docs/man/man3/modules.cpp.3
+++ b/docs/man/man3/modules.cpp.3
@@ -1,4 +1,4 @@
-.TH "modules.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "modules.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -12,8 +12,6 @@ modules.cpp \-
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include <unistd.h>\fP
.br
\fC#include <sys/errno.h>\fP
@@ -64,6 +62,8 @@ modules.cpp \-
.br
\fC#include 'typedefs.h'\fP
.br
+\fC#include 'command_parse.h'\fP
+.br
.SS "Functions"
@@ -100,9 +100,6 @@ modules.cpp \-
.in +1c
.ti -1c
-.RI "\fBSocketEngine\fP * \fBSE\fP"
-.br
-.ti -1c
.RI "\fBServerConfig\fP * \fBConfig\fP"
.br
.ti -1c
@@ -143,141 +140,141 @@ modules.cpp \-
.PP
.SS "bool DoAddExtendedMode (char modechar, int type, bool requires_oper, int params_on, int params_off)"
.PP
-Definition at line 134 of file modules.cpp.
+Definition at line 133 of file modules.cpp.
.PP
References EMode, and ModeDefined().
.PP
Referenced by Server::AddExtendedListMode(), and Server::AddExtendedMode().
.PP
.nf
-135 {
-136 if (ModeDefined(modechar,type)) {
-137 return false;
-138 }
-139 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
-140 return true;
-141 }
+134 {
+135 if (ModeDefined(modechar,type)) {
+136 return false;
+137 }
+138 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
+139 return true;
+140 }
.fi
.PP
.SS "std::vector<\fBircd_module\fP*> factory (255)"
.PP
.SS "bool ModeDefined (char modechar, int type)"
.PP
-Definition at line 71 of file modules.cpp.
+Definition at line 70 of file modules.cpp.
.PP
References EMode.
.PP
Referenced by DoAddExtendedMode().
.PP
.nf
-72 {
-73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-74 {
-75 if ((i->modechar == modechar) && (i->type == type))
-76 {
-77 return true;
-78 }
-79 }
-80 return false;
-81 }
+71 {
+72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+73 {
+74 if ((i->modechar == modechar) && (i->type == type))
+75 {
+76 return true;
+77 }
+78 }
+79 return false;
+80 }
.fi
.PP
.SS "int ModeDefinedOff (char modechar, int type)"
.PP
-Definition at line 121 of file modules.cpp.
+Definition at line 120 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-122 {
-123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-124 {
-125 if ((i->modechar == modechar) && (i->type == type))
-126 {
-127 return i->params_when_off;
-128 }
-129 }
-130 return 0;
-131 }
+121 {
+122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+123 {
+124 if ((i->modechar == modechar) && (i->type == type))
+125 {
+126 return i->params_when_off;
+127 }
+128 }
+129 return 0;
+130 }
.fi
.PP
.SS "int ModeDefinedOn (char modechar, int type)"
.PP
-Definition at line 108 of file modules.cpp.
+Definition at line 107 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-109 {
-110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-111 {
-112 if ((i->modechar == modechar) && (i->type == type))
-113 {
-114 return i->params_when_on;
-115 }
-116 }
-117 return 0;
-118 }
+108 {
+109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+110 {
+111 if ((i->modechar == modechar) && (i->type == type))
+112 {
+113 return i->params_when_on;
+114 }
+115 }
+116 return 0;
+117 }
.fi
.PP
.SS "bool ModeDefinedOper (char modechar, int type)"
.PP
-Definition at line 95 of file modules.cpp.
+Definition at line 94 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-96 {
-97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-98 {
-99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
-100 {
-101 return true;
-102 }
-103 }
-104 return false;
-105 }
+95 {
+96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+97 {
+98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
+99 {
+100 return true;
+101 }
+102 }
+103 return false;
+104 }
.fi
.PP
.SS "bool ModeIsListMode (char modechar, int type)"
.PP
-Definition at line 83 of file modules.cpp.
+Definition at line 82 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-84 {
-85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-86 {
-87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
-88 {
-89 return true;
-90 }
-91 }
-92 return false;
-93 }
+83 {
+84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+85 {
+86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
+87 {
+88 return true;
+89 }
+90 }
+91 return false;
+92 }
.fi
.PP
.SS "void ModeMakeList (char modechar)"
.PP
-Definition at line 144 of file modules.cpp.
+Definition at line 143 of file modules.cpp.
.PP
References EMode, and MT_CHANNEL.
.PP
Referenced by Server::AddExtendedListMode().
.PP
.nf
-145 {
-146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-147 {
-148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
-149 {
-150 i->list = true;
-151 return;
-152 }
-153 }
-154 return;
-155 }
+144 {
+145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+146 {
+147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
+148 {
+149 i->list = true;
+150 return;
+151 }
+152 }
+153 return;
+154 }
.fi
.PP
.SS "std::vector<\fBModule\fP*> modules (255)"
@@ -288,13 +285,14 @@ Referenced by Server::AddExtendedListMode().
.PP
.SS "\fBuser_hash\fP \fBclientlist\fP"
.PP
+Referenced by AddClient(), kill_link(), kill_link_silent(), and ReHashNick().
.SS "\fBcommand_table\fP \fBcmdlist\fP"
.PP
.SS "\fBServerConfig\fP* \fBConfig\fP"
.PP
.SS "\fBExtModeList\fP \fBEMode\fP"
.PP
-Definition at line 68 of file modules.cpp.
+Definition at line 67 of file modules.cpp.
.PP
Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedOn(), ModeDefinedOper(), ModeIsListMode(), and ModeMakeList().
.SS "std::vector<\fBircd_module\fP*> factory"
@@ -303,14 +301,12 @@ Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedO
.PP
.SS "int \fBMODCOUNT\fP = -1"
.PP
-Definition at line 935 of file modules.cpp.
+Definition at line 934 of file modules.cpp.
.SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP"
.PP
Referenced by Server::AddSocket(), and Server::DelSocket().
.SS "std::vector<\fBModule\fP*> modules"
.PP
-.SS "\fBSocketEngine\fP* \fBSE\fP"
-.PP
.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
.PP
.SS "time_t \fBTIME\fP"
diff --git a/docs/man/man3/modules.h.3 b/docs/man/man3/modules.h.3
index 481aeaa57..e326f26c4 100644
--- a/docs/man/man3/modules.h.3
+++ b/docs/man/man3/modules.h.3
@@ -1,4 +1,4 @@
-.TH "modules.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "modules.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -158,6 +158,30 @@ modules.h \-
.RI "#define \fBFD_MAGIC_NUMBER\fP -42"
.br
.ti -1c
+.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)"
+.br
+.ti -1c
+.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)"
+.br
+.ti -1c
+.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)"
+.br
+.ti -1c
+.RI "#define \fBWM_AND\fP 1"
+.br
+.ti -1c
+.RI "#define \fBWM_OR\fP 2"
+.br
+.ti -1c
+.RI "#define \fBTYPE_USER\fP 1"
+.br
+.ti -1c
+.RI "#define \fBTYPE_CHANNEL\fP 2"
+.br
+.ti -1c
+.RI "#define \fBTYPE_SERVER\fP 3"
+.br
+.ti -1c
.RI "#define \fBCONF_NOT_A_NUMBER\fP 0x000010"
.br
.ti -1c
@@ -192,12 +216,6 @@ modules.h \-
.in +1c
.ti -1c
-.RI "void \fBcreatecommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)"
-.br
-.ti -1c
-.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)"
-.br
-.ti -1c
.RI "bool \fBModeDefined\fP (char c, int i)"
.br
.ti -1c
@@ -264,22 +282,22 @@ Definition at line 38 of file modules.h.
Referenced by kick_channel().
.SS "#define CONF_FILE_NOT_FOUND 0x000200"
.PP
-Definition at line 1523 of file modules.h.
+Definition at line 1541 of file modules.h.
.PP
Referenced by ConfigReader::ConfigReader().
.SS "#define CONF_NOT_A_NUMBER 0x000010"
.PP
-Definition at line 1520 of file modules.h.
+Definition at line 1538 of file modules.h.
.PP
Referenced by ConfigReader::ReadInteger().
.SS "#define CONF_NOT_UNSIGNED 0x000080"
.PP
-Definition at line 1521 of file modules.h.
+Definition at line 1539 of file modules.h.
.PP
Referenced by ConfigReader::ReadInteger().
.SS "#define CONF_VALUE_NOT_FOUND 0x000100"
.PP
-Definition at line 1522 of file modules.h.
+Definition at line 1540 of file modules.h.
.PP
Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue().
.SS "#define DEBUG 10"
@@ -292,14 +310,14 @@ Definition at line 23 of file modules.h.
Definition at line 25 of file modules.h.
.SS "#define FD_MAGIC_NUMBER -42"
.PP
-Definition at line 101 of file modules.h.
+Definition at line 102 of file modules.h.
.PP
Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
.SS "#define FOREACH_MOD for (int _i = 0; _i <= \fBMODCOUNT\fP; _i++) modules[_i]->"
.PP
-Definition at line 81 of file modules.h.
+Definition at line 82 of file modules.h.
.PP
-Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send().
+Referenced by del_channel(), ForceChan(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), and Event::Send().
.SS "#define FOREACH_RESULT(x)"
.PP
\fBValue:\fP
@@ -316,9 +334,18 @@ Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send().
}
.fi
.PP
-Definition at line 89 of file modules.h.
+Definition at line 90 of file modules.h.
+.PP
+Referenced by add_channel(), force_nickchange(), and kick_channel().
+.SS "#define IS_LOCAL(x) (x->fd > -1)"
+.PP
+Definition at line 106 of file modules.h.
+.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)"
+.PP
+Definition at line 108 of file modules.h.
+.SS "#define IS_REMOTE(x) (x->fd < 0)"
.PP
-Referenced by add_channel(), and kick_channel().
+Definition at line 107 of file modules.h.
.SS "#define MT_CHANNEL 1"
.PP
Used with OnExtendedMode() method of modules.
@@ -342,6 +369,15 @@ Definition at line 27 of file modules.h.
.SS "#define SPARSE 40"
.PP
Definition at line 26 of file modules.h.
+.SS "#define TYPE_CHANNEL 2"
+.PP
+Definition at line 118 of file modules.h.
+.SS "#define TYPE_SERVER 3"
+.PP
+Definition at line 119 of file modules.h.
+.SS "#define TYPE_USER 1"
+.PP
+Definition at line 117 of file modules.h.
.SS "#define VERBOSE 20"
.PP
Definition at line 24 of file modules.h.
@@ -361,150 +397,151 @@ Definition at line 52 of file modules.h.
Definition at line 53 of file modules.h.
.PP
Referenced by Module::GetVersion().
+.SS "#define WM_AND 1"
+.PP
+Definition at line 112 of file modules.h.
+.SS "#define WM_OR 2"
+.PP
+Definition at line 113 of file modules.h.
.SH "Typedef Documentation"
.PP
.SS "typedef std::deque<\fBuserrec\fP*> \fBchanuserlist\fP"
.PP
Holds a list of users in a channel.
.PP
-Definition at line 74 of file modules.h.
+Definition at line 75 of file modules.h.
.SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP"
.PP
Low level definition of a \fBFileReader\fP classes file cache area.
.PP
-Definition at line 65 of file modules.h.
+Definition at line 66 of file modules.h.
.SS "typedef DLLFactory<\fBModuleFactory\fP> \fBircd_module\fP"
.PP
-Definition at line 1689 of file modules.h.
+Definition at line 1707 of file modules.h.
.SS "typedef \fBfile_cache\fP \fBstring_list\fP"
.PP
-Definition at line 70 of file modules.h.
+Definition at line 71 of file modules.h.
.SH "Function Documentation"
.PP
-.SS "void createcommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)"
-.PP
-Referenced by Server::AddCommand().
.SS "bool ModeDefined (char c, int i)"
.PP
-Definition at line 71 of file modules.cpp.
+Definition at line 70 of file modules.cpp.
.PP
References EMode.
.PP
Referenced by DoAddExtendedMode().
.PP
.nf
-72 {
-73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-74 {
-75 if ((i->modechar == modechar) && (i->type == type))
-76 {
-77 return true;
-78 }
-79 }
-80 return false;
-81 }
+71 {
+72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+73 {
+74 if ((i->modechar == modechar) && (i->type == type))
+75 {
+76 return true;
+77 }
+78 }
+79 return false;
+80 }
.fi
.PP
.SS "int ModeDefinedOff (char c, int i)"
.PP
-Definition at line 121 of file modules.cpp.
+Definition at line 120 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-122 {
-123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-124 {
-125 if ((i->modechar == modechar) && (i->type == type))
-126 {
-127 return i->params_when_off;
-128 }
-129 }
-130 return 0;
-131 }
+121 {
+122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+123 {
+124 if ((i->modechar == modechar) && (i->type == type))
+125 {
+126 return i->params_when_off;
+127 }
+128 }
+129 return 0;
+130 }
.fi
.PP
.SS "int ModeDefinedOn (char c, int i)"
.PP
-Definition at line 108 of file modules.cpp.
+Definition at line 107 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-109 {
-110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-111 {
-112 if ((i->modechar == modechar) && (i->type == type))
-113 {
-114 return i->params_when_on;
-115 }
-116 }
-117 return 0;
-118 }
+108 {
+109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+110 {
+111 if ((i->modechar == modechar) && (i->type == type))
+112 {
+113 return i->params_when_on;
+114 }
+115 }
+116 return 0;
+117 }
.fi
.PP
.SS "bool ModeDefinedOper (char c, int i)"
.PP
-Definition at line 95 of file modules.cpp.
+Definition at line 94 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-96 {
-97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-98 {
-99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
-100 {
-101 return true;
-102 }
-103 }
-104 return false;
-105 }
+95 {
+96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+97 {
+98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
+99 {
+100 return true;
+101 }
+102 }
+103 return false;
+104 }
.fi
.PP
.SS "bool ModeIsListMode (char modechar, int type)"
.PP
-Definition at line 83 of file modules.cpp.
+Definition at line 82 of file modules.cpp.
.PP
References EMode.
.PP
.nf
-84 {
-85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-86 {
-87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
-88 {
-89 return true;
-90 }
-91 }
-92 return false;
-93 }
+83 {
+84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+85 {
+86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
+87 {
+88 return true;
+89 }
+90 }
+91 return false;
+92 }
.fi
.PP
.SS "void ModeMakeList (char modechar)"
.PP
-Definition at line 144 of file modules.cpp.
+Definition at line 143 of file modules.cpp.
.PP
References EMode, and MT_CHANNEL.
.PP
Referenced by Server::AddExtendedListMode().
.PP
.nf
-145 {
-146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
-147 {
-148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
-149 {
-150 i->list = true;
-151 return;
-152 }
-153 }
-154 return;
-155 }
+144 {
+145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
+146 {
+147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
+148 {
+149 i->list = true;
+150 return;
+151 }
+152 }
+153 return;
+154 }
.fi
.PP
-.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)"
-.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/nspace.3 b/docs/man/man3/nspace.3
index 710faf6e3..6f94db022 100644
--- a/docs/man/man3/nspace.3
+++ b/docs/man/man3/nspace.3
@@ -1,4 +1,4 @@
-.TH "nspace" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/nspace_hash_ in_addr _.3 b/docs/man/man3/nspace_hash_ in_addr _.3
index 1957a8802..71b1b92a8 100644
--- a/docs/man/man3/nspace_hash_ in_addr _.3
+++ b/docs/man/man3/nspace_hash_ in_addr _.3
@@ -1,4 +1,4 @@
-.TH "nspace::hash< in_addr >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace::hash< in_addr >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/nspace_hash_ string _.3 b/docs/man/man3/nspace_hash_ string _.3
index aba6882af..ea101e76b 100644
--- a/docs/man/man3/nspace_hash_ string _.3
+++ b/docs/man/man3/nspace_hash_ string _.3
@@ -1,4 +1,4 @@
-.TH "nspace::hash< string >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "nspace::hash< string >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/serverstats.3 b/docs/man/man3/serverstats.3
index c3448337f..9a3d5480c 100644
--- a/docs/man/man3/serverstats.3
+++ b/docs/man/man3/serverstats.3
@@ -1,4 +1,4 @@
-.TH "serverstats" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "serverstats" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -48,76 +48,85 @@ serverstats \-
.ti -1c
.RI "int \fBstatsRecv\fP"
.br
+.ti -1c
+.RI "int \fBBoundPortCount\fP"
+.br
.in -1c
.SH "Detailed Description"
.PP
-Definition at line 72 of file inspircd.h.
+Definition at line 74 of file inspircd.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "serverstats::serverstats ()\fC [inline]\fP"
.PP
-Definition at line 86 of file inspircd.h.
+Definition at line 89 of file inspircd.h.
.PP
-References statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown.
+References BoundPortCount, statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown.
.PP
.nf
-87 {
-88 statsAccept = statsRefused = statsUnknown = 0;
-89 statsCollisions = statsDns = statsDnsGood = 0;
-90 statsDnsBad = statsConnects = statsSent = statsRecv = 0;
-91 }
+90 {
+91 statsAccept = statsRefused = statsUnknown = 0;
+92 statsCollisions = statsDns = statsDnsGood = 0;
+93 statsDnsBad = statsConnects = statsSent = statsRecv = 0;
+94 BoundPortCount = 0;
+95 }
.fi
.PP
.SH "Member Data Documentation"
.PP
+.SS "int \fBserverstats::BoundPortCount\fP"
+.PP
+Definition at line 87 of file inspircd.h.
+.PP
+Referenced by serverstats().
.SS "int \fBserverstats::statsAccept\fP"
.PP
-Definition at line 75 of file inspircd.h.
+Definition at line 77 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsCollisions\fP"
.PP
-Definition at line 78 of file inspircd.h.
+Definition at line 80 of file inspircd.h.
.PP
-Referenced by serverstats().
+Referenced by force_nickchange(), and serverstats().
.SS "int \fBserverstats::statsConnects\fP"
.PP
-Definition at line 82 of file inspircd.h.
+Definition at line 84 of file inspircd.h.
.PP
-Referenced by serverstats().
+Referenced by FullConnectUser(), and serverstats().
.SS "int \fBserverstats::statsDns\fP"
.PP
-Definition at line 79 of file inspircd.h.
+Definition at line 81 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsDnsBad\fP"
.PP
-Definition at line 81 of file inspircd.h.
+Definition at line 83 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsDnsGood\fP"
.PP
-Definition at line 80 of file inspircd.h.
+Definition at line 82 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsRecv\fP"
.PP
-Definition at line 84 of file inspircd.h.
+Definition at line 86 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsRefused\fP"
.PP
-Definition at line 76 of file inspircd.h.
+Definition at line 78 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsSent\fP"
.PP
-Definition at line 83 of file inspircd.h.
+Definition at line 85 of file inspircd.h.
.PP
Referenced by serverstats().
.SS "int \fBserverstats::statsUnknown\fP"
.PP
-Definition at line 77 of file inspircd.h.
+Definition at line 79 of file inspircd.h.
.PP
Referenced by serverstats().
diff --git a/docs/man/man3/socket.cpp.3 b/docs/man/man3/socket.cpp.3
index 4960cafd7..9a9ca61d2 100644
--- a/docs/man/man3/socket.cpp.3
+++ b/docs/man/man3/socket.cpp.3
@@ -1,4 +1,4 @@
-.TH "socket.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socket.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -38,8 +38,6 @@ socket.cpp \-
.br
\fC#include 'inspircd_io.h'\fP
.br
-\fC#include 'inspircd_util.h'\fP
-.br
\fC#include 'inspstring.h'\fP
.br
\fC#include 'helperfuncs.h'\fP
@@ -51,13 +49,7 @@ socket.cpp \-
.in +1c
.ti -1c
-.RI "\fBSocketEngine\fP * \fBSE\fP"
-.br
-.ti -1c
-.RI "int \fBboundPortCount\fP"
-.br
-.ti -1c
-.RI "int \fBopenSockfd\fP [MAXSOCKS]"
+.RI "\fBInspIRCd\fP * \fBServerInstance\fP"
.br
.ti -1c
.RI "time_t \fBTIME\fP"
@@ -68,15 +60,11 @@ socket.cpp \-
.in -1c
.SH "Variable Documentation"
.PP
-.SS "int \fBboundPortCount\fP"
-.PP
-.SS "int \fBopenSockfd\fP[MAXSOCKS]"
-.PP
-.SS "\fBSocketEngine\fP* \fBSE\fP"
+.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
.PP
.SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]"
.PP
-Definition at line 46 of file socket.cpp.
+Definition at line 43 of file socket.cpp.
.SS "time_t \fBTIME\fP"
.PP
.SH "Author"
diff --git a/docs/man/man3/socket.h.3 b/docs/man/man3/socket.h.3
index 788e52df6..9e9c0dbf7 100644
--- a/docs/man/man3/socket.h.3
+++ b/docs/man/man3/socket.h.3
@@ -1,4 +1,4 @@
-.TH "socket.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socket.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/socketengine.cpp.3 b/docs/man/man3/socketengine.cpp.3
index 9be381503..38cc4d5ea 100644
--- a/docs/man/man3/socketengine.cpp.3
+++ b/docs/man/man3/socketengine.cpp.3
@@ -1,4 +1,4 @@
-.TH "socketengine.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socketengine.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/socketengine.h.3 b/docs/man/man3/socketengine.h.3
index 35bf728c1..835dcc8f3 100644
--- a/docs/man/man3/socketengine.h.3
+++ b/docs/man/man3/socketengine.h.3
@@ -1,4 +1,4 @@
-.TH "socketengine.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "socketengine.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -67,6 +67,8 @@ Referenced by SocketEngine::GetType().
.SS "const char \fBX_ESTAB_CLIENT\fP = 2"
.PP
Definition at line 43 of file socketengine.h.
+.PP
+Referenced by AddClient().
.SS "const char \fBX_ESTAB_DNS\fP = 4"
.PP
Definition at line 45 of file socketengine.h.
diff --git a/docs/man/man3/std.3 b/docs/man/man3/std.3
index a420bba50..55b862598 100644
--- a/docs/man/man3/std.3
+++ b/docs/man/man3/std.3
@@ -1,4 +1,4 @@
-.TH "std" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "std" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/std_char_traits.3 b/docs/man/man3/std_char_traits.3
index 599987085..42e503317 100644
--- a/docs/man/man3/std_char_traits.3
+++ b/docs/man/man3/std_char_traits.3
@@ -1,4 +1,4 @@
-.TH "std::char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "std::char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff --git a/docs/man/man3/typedefs.h.3 b/docs/man/man3/typedefs.h.3
index f2a9a31ea..859161214 100644
--- a/docs/man/man3/typedefs.h.3
+++ b/docs/man/man3/typedefs.h.3
@@ -1,4 +1,4 @@
-.TH "typedefs.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "typedefs.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -45,9 +45,6 @@ typedefs.h \-
.RI "typedef nspace::hash_map< \fBstd::string\fP, \fBWhoWasUser\fP *, nspace::hash< \fBstring\fP >, \fBirc::StrHashComp\fP > \fBwhowas_hash\fP"
.br
.ti -1c
-.RI "typedef std::deque< \fBcommand_t\fP > \fBcommand_table\fP"
-.br
-.ti -1c
.RI "typedef std::vector< \fBstd::string\fP > \fBservernamelist\fP"
.br
.ti -1c
@@ -68,21 +65,18 @@ Definition at line 22 of file typedefs.h.
.SS "typedef nspace::hash_map<\fBstd::string\fP, \fBchanrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBchan_hash\fP"
.PP
Definition at line 21 of file typedefs.h.
-.SS "typedef std::deque<\fBcommand_t\fP> \fBcommand_table\fP"
-.PP
-Definition at line 24 of file typedefs.h.
.SS "typedef std::vector<\fBExtMode\fP> \fBExtModeList\fP"
.PP
-Definition at line 26 of file typedefs.h.
+Definition at line 25 of file typedefs.h.
.SS "typedef ExtModeList::iterator \fBExtModeListIter\fP"
.PP
-Definition at line 27 of file typedefs.h.
+Definition at line 26 of file typedefs.h.
.SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP"
.PP
-Definition at line 28 of file typedefs.h.
+Definition at line 27 of file typedefs.h.
.SS "typedef std::vector<\fBstd::string\fP> \fBservernamelist\fP"
.PP
-Definition at line 25 of file typedefs.h.
+Definition at line 24 of file typedefs.h.
.SS "typedef nspace::hash_map<\fBstd::string\fP, \fBuserrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBuser_hash\fP"
.PP
Definition at line 20 of file typedefs.h.
diff --git a/docs/man/man3/ucrec.3 b/docs/man/man3/ucrec.3
index ba427060b..3f0226786 100644
--- a/docs/man/man3/ucrec.3
+++ b/docs/man/man3/ucrec.3
@@ -1,4 +1,4 @@
-.TH "ucrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "ucrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -69,7 +69,7 @@ If the record is not in use, this value will be NULL.
.PP
Definition at line 254 of file channels.h.
.PP
-Referenced by ForceChan().
+Referenced by AddClient(), and ForceChan().
.SS "char \fBucrec::uc_modes\fP"
.PP
Contains a bitmask of the UCMODE_OP .
@@ -78,7 +78,7 @@ Contains a bitmask of the UCMODE_OP .
.PP
Definition at line 249 of file channels.h.
.PP
-Referenced by ForceChan().
+Referenced by AddClient(), and ForceChan().
.SH "Author"
.PP
diff --git a/docs/man/man3/userprocess.h.3 b/docs/man/man3/userprocess.h.3
index 70e681727..8a1b46b91 100644
--- a/docs/man/man3/userprocess.h.3
+++ b/docs/man/man3/userprocess.h.3
@@ -1,4 +1,4 @@
-.TH "userprocess.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "userprocess.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -8,6 +8,8 @@ userprocess.h \-
.PP
\fC#include 'users.h'\fP
.br
+\fC#include 'inspircd.h'\fP
+.br
.SS "Functions"
@@ -16,7 +18,7 @@ userprocess.h \-
.RI "void \fBCheckDie\fP ()"
.br
.ti -1c
-.RI "void \fBLoadAllModules\fP ()"
+.RI "void \fBLoadAllModules\fP (\fBInspIRCd\fP *\fBServerInstance\fP)"
.br
.ti -1c
.RI "void \fBCheckRoot\fP ()"
@@ -39,7 +41,7 @@ userprocess.h \-
.PP
.SS "bool DoBackgroundUserStuff (time_t TIME)"
.PP
-.SS "void LoadAllModules ()"
+.SS "void LoadAllModules (\fBInspIRCd\fP * ServerInstance)"
.PP
.SS "void OpenLog (char ** argv, int argc)"
.PP
diff --git a/docs/man/man3/userrec.3 b/docs/man/man3/userrec.3
index 9c34db700..e0c938e5e 100644
--- a/docs/man/man3/userrec.3
+++ b/docs/man/man3/userrec.3
@@ -1,4 +1,4 @@
-.TH "userrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "userrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -27,19 +27,19 @@ Inherits \fBconnection\fP.
.br
.RI "\fIReturns 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. \fP"
.ti -1c
-.RI "virtual bool \fBIsInvited\fP (char *channel)"
+.RI "virtual bool \fBIsInvited\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIReturns true if a user is invited to a channel. \fP"
.ti -1c
-.RI "virtual void \fBInviteTo\fP (char *channel)"
+.RI "virtual void \fBInviteTo\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIAdds a channel to a users invite list (invites them to a channel). \fP"
.ti -1c
-.RI "virtual void \fBRemoveInvite\fP (char *channel)"
+.RI "virtual void \fBRemoveInvite\fP (\fBirc::string\fP &channel)"
.br
.RI "\fIRemoves a channel from a users invite list. \fP"
.ti -1c
-.RI "bool \fBHasPermission\fP (char *command)"
+.RI "bool \fBHasPermission\fP (\fBstd::string\fP &command)"
.br
.RI "\fIReturns true or false for if a user can execute a privilaged oper command. \fP"
.ti -1c
@@ -192,49 +192,49 @@ Holds all information about a user This class stores all information about a use
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.
.PP
-Definition at line 111 of file users.h.
+Definition at line 115 of file users.h.
.SH "Constructor & Destructor Documentation"
.PP
.SS "userrec::userrec ()"
.PP
-Definition at line 36 of file users.cpp.
+Definition at line 63 of file users.cpp.
.PP
References awaymsg, connection::bytes_in, connection::bytes_out, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, FindServerNamePtr(), flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, sendq, server, ServerConfig::ServerName, connection::signon, TIME, and timeout.
.PP
.nf
-37 {
-38 // the PROPER way to do it, AVOID bzero at *ALL* costs
-39 strcpy(nick,'');
-40 strcpy(ip,'127.0.0.1');
-41 timeout = 0;
-42 strcpy(ident,'');
-43 strcpy(host,'');
-44 strcpy(dhost,'');
-45 strcpy(fullname,'');
-46 strcpy(modes,'');
-47 server = (char*)FindServerNamePtr(Config->ServerName);
-48 strcpy(awaymsg,'');
-49 strcpy(oper,'');
-50 reset_due = TIME;
-51 lines_in = 0;
-52 fd = lastping = signon = idle_lastmsg = nping = registered = 0;
-53 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
-54 haspassed = false;
-55 dns_done = false;
-56 recvq = '';
-57 sendq = '';
-58 chans.clear();
-59 invites.clear();
-60 }
+64 {
+65 // the PROPER way to do it, AVOID bzero at *ALL* costs
+66 strcpy(nick,'');
+67 strcpy(ip,'127.0.0.1');
+68 timeout = 0;
+69 strcpy(ident,'');
+70 strcpy(host,'');
+71 strcpy(dhost,'');
+72 strcpy(fullname,'');
+73 strcpy(modes,'');
+74 server = (char*)FindServerNamePtr(Config->ServerName);
+75 strcpy(awaymsg,'');
+76 strcpy(oper,'');
+77 reset_due = TIME;
+78 lines_in = 0;
+79 fd = lastping = signon = idle_lastmsg = nping = registered = 0;
+80 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
+81 haspassed = false;
+82 dns_done = false;
+83 recvq = '';
+84 sendq = '';
+85 chans.clear();
+86 invites.clear();
+87 }
.fi
.PP
.SS "userrec::~userrec ()\fC [virtual]\fP"
.PP
-Definition at line 62 of file users.cpp.
+Definition at line 89 of file users.cpp.
.PP
.nf
-63 {
-64 }
+90 {
+91 }
.fi
.PP
.SH "Member Function Documentation"
@@ -245,35 +245,35 @@ This method adds data to the buffer of the user.
.PP
The buffer can grow to any size within limits of the available memory, managed by the size of a \fBstd::string\fP, 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.
.PP
-Definition at line 198 of file users.cpp.
+Definition at line 219 of file users.cpp.
.PP
References recvq, recvqmax, SetWriteError(), and WriteOpers().
.PP
.nf
-199 {
-200 std::string b = '';
-201 for (unsigned int i = 0; i < a.length(); i++)
-202 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
-203 b = b + a[i];
-204 std::stringstream stream(recvq);
-205 stream << b;
-206 recvq = stream.str();
-207 unsigned int i = 0;
-208 // count the size of the first line in the buffer.
-209 while (i < recvq.length())
-210 {
-211 if (recvq[i++] == '\n')
-212 break;
-213 }
-214 if (recvq.length() > (unsigned)this->recvqmax)
-215 {
-216 this->SetWriteError('RecvQ exceeded');
-217 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax);
-218 }
-219 // return false if we've had more than 600 characters WITHOUT
-220 // a carriage return (this is BAD, drop the socket)
-221 return (i < 600);
-222 }
+220 {
+221 std::string b = '';
+222 for (unsigned int i = 0; i < a.length(); i++)
+223 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
+224 b = b + a[i];
+225 std::stringstream stream(recvq);
+226 stream << b;
+227 recvq = stream.str();
+228 unsigned int i = 0;
+229 // count the size of the first line in the buffer.
+230 while (i < recvq.length())
+231 {
+232 if (recvq[i++] == '\n')
+233 break;
+234 }
+235 if (recvq.length() > (unsigned)this->recvqmax)
+236 {
+237 this->SetWriteError('RecvQ exceeded');
+238 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax);
+239 }
+240 // return false if we've had more than 600 characters WITHOUT
+241 // a carriage return (this is BAD, drop the socket)
+242 return (i < 600);
+243 }
.fi
.PP
.SS "void userrec::AddWriteBuf (\fBstd::string\fP data)"
@@ -282,24 +282,28 @@ Adds to the user's write buffer.
.PP
You may add any amount of text up to this users sendq value, if you exceed the sendq value, \fBSetWriteError()\fP will be called to set the users error string to 'SendQ exceeded', and further buffer adds will be dropped.
.PP
-Definition at line 254 of file users.cpp.
+Definition at line 275 of file users.cpp.
.PP
References sendq, sendqmax, SetWriteError(), and WriteOpers().
.PP
.nf
-255 {
-256 if (this->GetWriteError() != '')
-257 return;
-258 if (sendq.length() + data.length() > (unsigned)this->sendqmax)
-259 {
-260 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax);
-261 this->SetWriteError('SendQ exceeded');
-262 return;
-263 }
-264 std::stringstream stream;
-265 stream << sendq << data;
-266 sendq = stream.str();
-267 }
+276 {
+277 if (this->GetWriteError() != '')
+278 return;
+279 if (sendq.length() + data.length() > (unsigned)this->sendqmax)
+280 {
+281 /* Fix by brain - Set the error text BEFORE calling writeopers, because
+282 * if we dont it'll recursively call here over and over again trying
+283 * to repeatedly add the text to the sendq!
+284 */
+285 this->SetWriteError('SendQ exceeded');
+286 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax);
+287 return;
+288 }
+289 std::stringstream stream;
+290 stream << sendq << data;
+291 sendq = stream.str();
+292 }
.fi
.PP
.SS "bool userrec::BufferIsReady ()"
@@ -308,46 +312,48 @@ This method returns true if the buffer contains at least one carriage return cha
.PP
one complete line may be read)
.PP
-Definition at line 224 of file users.cpp.
+Definition at line 245 of file users.cpp.
.PP
References recvq.
.PP
.nf
-225 {
-226 for (unsigned int i = 0; i < recvq.length(); i++)
-227 if (recvq[i] == '\n')
-228 return true;
-229 return false;
-230 }
+246 {
+247 for (unsigned int i = 0; i < recvq.length(); i++)
+248 if (recvq[i] == '\n')
+249 return true;
+250 return false;
+251 }
.fi
.PP
.SS "void userrec::ClearBuffer ()"
.PP
This function clears the entire buffer by setting it to an empty string.
.PP
-Definition at line 232 of file users.cpp.
+Definition at line 253 of file users.cpp.
.PP
References recvq.
.PP
Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
.PP
.nf
-233 {
-234 recvq = '';
-235 }
+254 {
+255 recvq = '';
+256 }
.fi
.PP
.SS "void userrec::CloseSocket ()"
.PP
Shuts down and closes the user's socket.
.PP
-Definition at line 66 of file users.cpp.
+Definition at line 93 of file users.cpp.
+.PP
+Referenced by kill_link(), and kill_link_silent().
.PP
.nf
-67 {
-68 shutdown(this->fd,2);
-69 close(this->fd);
-70 }
+94 {
+95 shutdown(this->fd,2);
+96 close(this->fd);
+97 }
.fi
.PP
.SS "void userrec::FlushWriteBuf ()"
@@ -356,31 +362,33 @@ Flushes as much of the user's buffer to the file descriptor as possible.
.PP
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.
.PP
-Definition at line 270 of file users.cpp.
+Definition at line 295 of file users.cpp.
.PP
References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError().
.PP
+Referenced by kill_link(), and kill_link_silent().
+.PP
.nf
-271 {
-272 if (sendq.length())
-273 {
-274 char* tb = (char*)this->sendq.c_str();
-275 int n_sent = write(this->fd,tb,this->sendq.length());
-276 if (n_sent == -1)
-277 {
-278 this->SetWriteError(strerror(errno));
-279 }
-280 else
-281 {
-282 // advance the queue
-283 tb += n_sent;
-284 this->sendq = tb;
-285 // update the user's stats counters
-286 this->bytes_out += n_sent;
-287 this->cmds_out++;
-288 }
-289 }
-290 }
+296 {
+297 if (sendq.length())
+298 {
+299 char* tb = (char*)this->sendq.c_str();
+300 int n_sent = write(this->fd,tb,this->sendq.length());
+301 if (n_sent == -1)
+302 {
+303 this->SetWriteError(strerror(errno));
+304 }
+305 else
+306 {
+307 // advance the queue
+308 tb += n_sent;
+309 this->sendq = tb;
+310 // update the user's stats counters
+311 this->bytes_out += n_sent;
+312 this->cmds_out++;
+313 }
+314 }
+315 }
.fi
.PP
.SS "\fBstd::string\fP userrec::GetBuffer ()"
@@ -389,44 +397,44 @@ This method returns the first available string at the tail end of the buffer and
.PP
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 \fBBufferIsReady()\fP to check if it is ok to read the buffer before calling \fBGetBuffer()\fP.
.PP
-Definition at line 237 of file users.cpp.
+Definition at line 258 of file users.cpp.
.PP
References recvq.
.PP
.nf
-238 {
-239 if (recvq == '')
-240 return '';
-241 char* line = (char*)recvq.c_str();
-242 std::string ret = '';
-243 while ((*line != '\n') && (strlen(line)))
-244 {
-245 ret = ret + *line;
-246 line++;
-247 }
-248 if ((*line == '\n') || (*line == '\r'))
-249 line++;
-250 recvq = line;
-251 return ret;
-252 }
+259 {
+260 if (recvq == '')
+261 return '';
+262 char* line = (char*)recvq.c_str();
+263 std::string ret = '';
+264 while ((*line != '\n') && (strlen(line)))
+265 {
+266 ret = ret + *line;
+267 line++;
+268 }
+269 if ((*line == '\n') || (*line == '\r'))
+270 line++;
+271 recvq = line;
+272 return ret;
+273 }
.fi
.PP
.SS "char * userrec::GetFullHost ()\fC [virtual]\fP"
.PP
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.
.PP
-Definition at line 72 of file users.cpp.
+Definition at line 99 of file users.cpp.
.PP
References dhost, ident, and nick.
.PP
Referenced by add_channel().
.PP
.nf
-73 {
-74 static char result[MAXBUF];
-75 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost);
-76 return result;
-77 }
+100 {
+101 static char result[MAXBUF];
+102 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost);
+103 return result;
+104 }
.fi
.PP
.SS "char * userrec::GetFullRealHost ()\fC [virtual]\fP"
@@ -435,200 +443,194 @@ Returns the full real host of the user This member function returns the hostname
.PP
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.
.PP
-Definition at line 89 of file users.cpp.
+Definition at line 116 of file users.cpp.
.PP
References connection::host, ident, and nick.
.PP
.nf
-90 {
-91 static char fresult[MAXBUF];
-92 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host);
-93 return fresult;
-94 }
+117 {
+118 static char fresult[MAXBUF];
+119 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host);
+120 return fresult;
+121 }
.fi
.PP
.SS "\fBInvitedList\fP * userrec::GetInviteList ()"
.PP
Returns the list of channels this user has been invited to but has not yet joined.
.PP
-Definition at line 110 of file users.cpp.
+Definition at line 136 of file users.cpp.
.PP
References invites.
.PP
.nf
-111 {
-112 return &invites;
-113 }
+137 {
+138 return &invites;
+139 }
.fi
.PP
.SS "\fBstd::string\fP userrec::GetWriteError ()"
.PP
Returns the write error which last occured on this connection or an empty string if none occured.
.PP
-Definition at line 300 of file users.cpp.
+Definition at line 325 of file users.cpp.
.PP
References WriteError.
.PP
.nf
-301 {
-302 return this->WriteError;
-303 }
+326 {
+327 return this->WriteError;
+328 }
.fi
.PP
-.SS "bool userrec::HasPermission (char * command)"
+.SS "bool userrec::HasPermission (\fBstd::string\fP & command)"
.PP
Returns true or false for if a user can execute a privilaged oper command.
.PP
This is done by looking up their oper type from \fBuserrec::oper\fP, then referencing this to their oper classes and checking the commands they can execute.
.PP
-Definition at line 144 of file users.cpp.
+Definition at line 165 of file users.cpp.
.PP
References ServerConfig::config_f, ServerConfig::ConfValue(), and is_uline().
.PP
.nf
-145 {
-146 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-147 char* mycmd;
-148 char* savept;
-149 char* savept2;
-150
-151 // users on u-lined servers can completely bypass
-152 // all permissions based checks.
-153 //
-154 // of course, if this is sent to a remote server and this
-155 // server is not ulined there, then that other server
-156 // silently drops the command.
-157 if (is_uline(this->server))
-158 return true;
-159
-160 // are they even an oper at all?
-161 if (strchr(this->modes,'o'))
-162 {
-163 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++)
-164 {
-165 Config->ConfValue('type','name',j,TypeName,&Config->config_f);
-166 if (!strcmp(TypeName,this->oper))
-167 {
-168 Config->ConfValue('type','classes',j,Classes,&Config->config_f);
-169 char* myclass = strtok_r(Classes,' ',&savept);
-170 while (myclass)
-171 {
-172 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++)
-173 {
-174 Config->ConfValue('class','name',k,ClassName,&Config->config_f);
-175 if (!strcmp(ClassName,myclass))
-176 {
-177 Config->ConfValue('class','commands',k,CommandList,&Config->config_f);
-178 mycmd = strtok_r(CommandList,' ',&savept2);
-179 while (mycmd)
-180 {
-181 if ((!strcasecmp(mycmd,command)) || (*mycmd == '*'))
-182 {
-183 return true;
-184 }
-185 mycmd = strtok_r(NULL,' ',&savept2);
-186 }
-187 }
-188 }
-189 myclass = strtok_r(NULL,' ',&savept);
-190 }
-191 }
-192 }
-193 }
-194 return false;
-195 }
+166 {
+167 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+168 char* mycmd;
+169 char* savept;
+170 char* savept2;
+171
+172 // users on u-lined servers can completely bypass
+173 // all permissions based checks.
+174 //
+175 // of course, if this is sent to a remote server and this
+176 // server is not ulined there, then that other server
+177 // silently drops the command.
+178 if (is_uline(this->server))
+179 return true;
+180
+181 // are they even an oper at all?
+182 if (strchr(this->modes,'o'))
+183 {
+184 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++)
+185 {
+186 Config->ConfValue('type','name',j,TypeName,&Config->config_f);
+187 if (!strcmp(TypeName,this->oper))
+188 {
+189 Config->ConfValue('type','classes',j,Classes,&Config->config_f);
+190 char* myclass = strtok_r(Classes,' ',&savept);
+191 while (myclass)
+192 {
+193 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++)
+194 {
+195 Config->ConfValue('class','name',k,ClassName,&Config->config_f);
+196 if (!strcmp(ClassName,myclass))
+197 {
+198 Config->ConfValue('class','commands',k,CommandList,&Config->config_f);
+199 mycmd = strtok_r(CommandList,' ',&savept2);
+200 while (mycmd)
+201 {
+202 if ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == '*'))
+203 {
+204 return true;
+205 }
+206 mycmd = strtok_r(NULL,' ',&savept2);
+207 }
+208 }
+209 }
+210 myclass = strtok_r(NULL,' ',&savept);
+211 }
+212 }
+213 }
+214 }
+215 return false;
+216 }
.fi
.PP
-.SS "void userrec::InviteTo (char * channel)\fC [virtual]\fP"
+.SS "void userrec::InviteTo (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Adds a channel to a users invite list (invites them to a channel).
.PP
-Definition at line 115 of file users.cpp.
+Definition at line 141 of file users.cpp.
.PP
References Invited::channel, and invites.
.PP
.nf
-116 {
-117 Invited i;
-118 strlcpy(i.channel,channel,CHANMAX);
-119 invites.push_back(i);
-120 }
+142 {
+143 Invited i;
+144 i.channel = channel;
+145 invites.push_back(i);
+146 }
.fi
.PP
-.SS "bool userrec::IsInvited (char * channel)\fC [virtual]\fP"
+.SS "bool userrec::IsInvited (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Returns true if a user is invited to a channel.
.PP
-Definition at line 96 of file users.cpp.
+Definition at line 123 of file users.cpp.
.PP
References invites.
.PP
Referenced by add_channel().
.PP
.nf
-97 {
-98 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-99 {
-100 if (i->channel) {
-101 if (!strcasecmp(i->channel,channel))
-102 {
-103 return true;
-104 }
-105 }
-106 }
-107 return false;
-108 }
+124 {
+125 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+126 {
+127 irc::string compare = i->channel;
+128 if (compare == channel)
+129 {
+130 return true;
+131 }
+132 }
+133 return false;
+134 }
.fi
.PP
.SS "int userrec::ReadData (void * buffer, size_t size)"
.PP
Calls read() to read some data for this user using their fd.
.PP
-Definition at line 79 of file users.cpp.
+Definition at line 106 of file users.cpp.
.PP
.nf
-80 {
-81 if (this->fd > -1)
-82 {
-83 return read(this->fd, buffer, size);
-84 }
-85 else return 0;
-86 }
+107 {
+108 if (this->fd > -1)
+109 {
+110 return read(this->fd, buffer, size);
+111 }
+112 else return 0;
+113 }
.fi
.PP
-.SS "void userrec::RemoveInvite (char * channel)\fC [virtual]\fP"
+.SS "void userrec::RemoveInvite (\fBirc::string\fP & channel)\fC [virtual]\fP"
.PP
Removes a channel from a users invite list.
.PP
This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
.PP
-Definition at line 122 of file users.cpp.
+Definition at line 148 of file users.cpp.
.PP
References DEBUG, invites, and log().
.PP
Referenced by add_channel().
.PP
.nf
-123 {
-124 log(DEBUG,'Removing invites');
-125 if (channel)
-126 {
-127 if (invites.size())
-128 {
-129 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-130 {
-131 if (i->channel)
-132 {
-133 if (!strcasecmp(i->channel,channel))
-134 {
-135 invites.erase(i);
-136 return;
-137 }
-138 }
-139 }
-140 }
-141 }
-142 }
+149 {
+150 log(DEBUG,'Removing invites');
+151 if (invites.size())
+152 {
+153 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+154 {
+155 irc::string compare = i->channel;
+156 if (compare == channel)
+157 {
+158 invites.erase(i);
+159 return;
+160 }
+161 }
+162 }
+163 }
.fi
.PP
.SS "void userrec::SetWriteError (\fBstd::string\fP error)"
@@ -637,19 +639,19 @@ Sets the write error for a connection.
.PP
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.
.PP
-Definition at line 292 of file users.cpp.
+Definition at line 317 of file users.cpp.
.PP
References DEBUG, log(), and WriteError.
.PP
Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf().
.PP
.nf
-293 {
-294 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str());
-295 // don't try to set the error twice, its already set take the first string.
-296 if (this->WriteError == '')
-297 this->WriteError = error;
-298 }
+318 {
+319 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str());
+320 // don't try to set the error twice, its already set take the first string.
+321 if (this->WriteError == '')
+322 this->WriteError = error;
+323 }
.fi
.PP
.SH "Member Data Documentation"
@@ -660,12 +662,12 @@ The user's away message.
.PP
If this string is empty, the user is not marked as away.
.PP
-Definition at line 158 of file users.h.
+Definition at line 162 of file users.h.
.PP
Referenced by userrec().
.SS "std::vector<\fBucrec\fP> \fBuserrec::chans\fP"
.PP
-Definition at line 149 of file users.h.
+Definition at line 153 of file users.h.
.PP
Referenced by add_channel(), del_channel(), kick_channel(), Server::PseudoToUser(), and userrec().
.SS "char \fBuserrec::dhost\fP[160]"
@@ -674,51 +676,51 @@ The host displayed to non-opers (used for cloaking etc).
.PP
This usually matches the value of \fBuserrec::host\fP.
.PP
-Definition at line 134 of file users.h.
+Definition at line 138 of file users.h.
.PP
-Referenced by GetFullHost(), and userrec().
+Referenced by AddWhoWas(), GetFullHost(), and userrec().
.SS "bool \fBuserrec::dns_done\fP"
.PP
True when \fBDNS\fP lookups are completed.
.PP
-Definition at line 181 of file users.h.
+Definition at line 185 of file users.h.
.PP
-Referenced by userrec().
+Referenced by ConnectUser(), and userrec().
.SS "int \fBuserrec::flood\fP"
.PP
Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood.
.PP
-Definition at line 164 of file users.h.
+Definition at line 168 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::fullname\fP[MAXGECOS+1]"
.PP
The users full name.
.PP
-Definition at line 138 of file users.h.
+Definition at line 142 of file users.h.
.PP
-Referenced by userrec().
+Referenced by AddWhoWas(), and userrec().
.SS "char \fBuserrec::ident\fP[IDENTMAX+2]"
.PP
The users ident reply.
.PP
Two characters are added to the user-defined limit to compensate for the tilde etc.
.PP
-Definition at line 129 of file users.h.
+Definition at line 133 of file users.h.
.PP
-Referenced by GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().
+Referenced by AddWhoWas(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().
.SS "\fBInvitedList\fP \fBuserrec::invites\fP\fC [private]\fP"
.PP
A list of channels the user has a pending invite to.
.PP
-Definition at line 117 of file users.h.
+Definition at line 121 of file users.h.
.PP
Referenced by GetInviteList(), InviteTo(), IsInvited(), RemoveInvite(), and userrec().
.SS "int \fBuserrec::lines_in\fP"
.PP
Flood counters.
.PP
-Definition at line 206 of file users.h.
+Definition at line 210 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::modes\fP[54]"
@@ -727,7 +729,7 @@ The user's mode string.
.PP
This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
.PP
-Definition at line 147 of file users.h.
+Definition at line 151 of file users.h.
.PP
Referenced by add_channel(), and userrec().
.SS "char \fBuserrec::nick\fP[NICKMAX]"
@@ -736,16 +738,16 @@ The users nickname.
.PP
An invalid nickname indicates an unregistered connection prior to the NICK command.
.PP
-Definition at line 124 of file users.h.
+Definition at line 128 of file users.h.
.PP
-Referenced by add_channel(), del_channel(), ConfigReader::DumpErrors(), GetFullHost(), GetFullRealHost(), kick_channel(), Server::PseudoToUser(), and userrec().
+Referenced by add_channel(), AddWhoWas(), del_channel(), ConfigReader::DumpErrors(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), and userrec().
.SS "char \fBuserrec::oper\fP[NICKMAX]"
.PP
The oper type they logged in as, if they are an oper.
.PP
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.
.PP
-Definition at line 177 of file users.h.
+Definition at line 181 of file users.h.
.PP
Referenced by userrec().
.SS "char \fBuserrec::password\fP[MAXBUF]"
@@ -754,31 +756,31 @@ Password specified by the user when they registered.
.PP
This is stored even if the <connect> block doesnt need a password, so that modules may check it.
.PP
-Definition at line 191 of file users.h.
+Definition at line 195 of file users.h.
.SS "unsigned int \fBuserrec::pingmax\fP"
.PP
Number of seconds between PINGs for this user (set from <connect:allow> tag.
.PP
-Definition at line 185 of file users.h.
+Definition at line 189 of file users.h.
.SS "\fBstd::string\fP \fBuserrec::recvq\fP"
.PP
User's receive queue.
.PP
Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
.PP
-Definition at line 197 of file users.h.
+Definition at line 201 of file users.h.
.PP
Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec().
.SS "long \fBuserrec::recvqmax\fP"
.PP
Maximum size this user's recvq can become.
.PP
-Definition at line 220 of file users.h.
+Definition at line 224 of file users.h.
.PP
Referenced by AddBuffer().
.SS "time_t \fBuserrec::reset_due\fP"
.PP
-Definition at line 207 of file users.h.
+Definition at line 211 of file users.h.
.PP
Referenced by userrec().
.SS "\fBstd::string\fP \fBuserrec::sendq\fP"
@@ -787,36 +789,36 @@ User's send queue.
.PP
Lines waiting to be sent are stored here until their buffer is flushed.
.PP
-Definition at line 202 of file users.h.
+Definition at line 206 of file users.h.
.PP
Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec().
.SS "long \fBuserrec::sendqmax\fP"
.PP
Maximum size this user's sendq can become.
.PP
-Definition at line 216 of file users.h.
+Definition at line 220 of file users.h.
.PP
Referenced by AddWriteBuf().
.SS "char* \fBuserrec::server\fP"
.PP
The server the user is connected to.
.PP
-Definition at line 153 of file users.h.
+Definition at line 157 of file users.h.
.PP
-Referenced by kick_channel(), and userrec().
+Referenced by AddWhoWas(), kick_channel(), and userrec().
.SS "long \fBuserrec::threshold\fP"
.PP
-Definition at line 208 of file users.h.
+Definition at line 212 of file users.h.
.SS "unsigned int \fBuserrec::timeout\fP"
.PP
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.
.PP
-Definition at line 170 of file users.h.
+Definition at line 174 of file users.h.
.PP
Referenced by userrec().
.SS "\fBstd::string\fP \fBuserrec::WriteError\fP"
.PP
-Definition at line 212 of file users.h.
+Definition at line 216 of file users.h.
.PP
Referenced by GetWriteError(), and SetWriteError().
diff --git a/docs/man/man3/users.cpp.3 b/docs/man/man3/users.cpp.3
index 05915282e..af36eb556 100644
--- a/docs/man/man3/users.cpp.3
+++ b/docs/man/man3/users.cpp.3
@@ -1,4 +1,4 @@
-.TH "users.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "users.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -24,23 +24,708 @@ users.cpp \-
.br
\fC#include 'helperfuncs.h'\fP
.br
+\fC#include 'typedefs.h'\fP
+.br
+\fC#include 'socketengine.h'\fP
+.br
+\fC#include 'hashcomp.h'\fP
+.br
+\fC#include 'message.h'\fP
+.br
+\fC#include 'wildcard.h'\fP
+.br
+\fC#include 'xline.h'\fP
+.br
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "template<typename T> \fBstring\fP \fBConvToStr\fP (const T &in)"
+.br
+.ti -1c
+.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
+.br
+.ti -1c
+.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)"
+.br
+.ti -1c
+.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
+.br
+.ti -1c
+.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
+.br
+.in -1c
.SS "Variables"
.in +1c
.ti -1c
-.RI "\fBServerConfig\fP * \fBConfig\fP"
+.RI "\fBInspIRCd\fP * \fBServerInstance\fP"
+.br
+.ti -1c
+.RI "int \fBWHOWAS_STALE\fP"
+.br
+.ti -1c
+.RI "int \fBWHOWAS_MAX\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBModule\fP * > \fBmodules\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBircd_module\fP * > \fBfactory\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBInspSocket\fP * > \fBmodule_sockets\fP"
+.br
+.ti -1c
+.RI "int \fBMODCOUNT\fP"
+.br
+.ti -1c
+.RI "\fBInspSocket\fP * \fBsocket_ref\fP [65535]"
.br
.ti -1c
.RI "time_t \fBTIME\fP"
.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBfd_ref_table\fP [65536]"
+.br
+.ti -1c
+.RI "\fBServerConfig\fP * \fBConfig\fP"
+.br
+.ti -1c
+.RI "\fBuser_hash\fP \fBclientlist\fP"
+.br
+.ti -1c
+.RI "\fBwhowas_hash\fP \fBwhowas\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBuserrec\fP * > \fBlocal_users\fP"
+.br
+.ti -1c
+.RI "std::vector< \fBuserrec\fP * > \fBall_opers\fP"
+.br
.in -1c
+.SH "Function Documentation"
+.PP
+.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)"
+.PP
+Definition at line 524 of file users.cpp.
+.PP
+References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.
+.PP
+.nf
+525 {
+526 string tempnick;
+527 char tn2[MAXBUF];
+528 user_hash::iterator iter;
+529
+530 tempnick = ConvToStr(socket) + '-unknown';
+531 sprintf(tn2,'%lu-unknown',(unsigned long)socket);
+532
+533 iter = clientlist.find(tempnick);
+534
+535 // fix by brain.
+536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
+537 // using one as a registered connection. As theyre per fd, we can also safely assume
+538 // that we wont have collisions. Therefore, if the nick exists in the list, its only
+539 // used by a dead socket, erase the iterator so that the new client may reclaim it.
+540 // this was probably the cause of 'server ignores me when i hammer it with reconnects'
+541 // issue in earlier alphas/betas
+542 if (iter != clientlist.end())
+543 {
+544 userrec* goner = iter->second;
+545 delete goner;
+546 clientlist.erase(iter);
+547 }
+548
+549 /*
+550 * It is OK to access the value here this way since we know
+551 * it exists, we just created it above.
+552 *
+553 * At NO other time should you access a value in a map or a
+554 * hash_map this way.
+555 */
+556 clientlist[tempnick] = new userrec();
+557
+558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip);
+559
+560 clientlist[tempnick]->fd = socket;
+561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+562 strlcpy(clientlist[tempnick]->host, host,160);
+563 strlcpy(clientlist[tempnick]->dhost, host,160);
+564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
+565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX);
+566 clientlist[tempnick]->registered = 0;
+567 clientlist[tempnick]->signon = TIME + Config->dns_timeout;
+568 clientlist[tempnick]->lastping = 1;
+569 clientlist[tempnick]->port = port;
+570 strlcpy(clientlist[tempnick]->ip,ip,16);
+571
+572 // set the registration timeout for this user
+573 unsigned long class_regtimeout = 90;
+574 int class_flood = 0;
+575 long class_threshold = 5;
+576 long class_sqmax = 262144; // 256kb
+577 long class_rqmax = 4096; // 4k
+578
+579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
+580 {
+581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
+582 {
+583 class_regtimeout = (unsigned long)i->registration_timeout;
+584 class_flood = i->flood;
+585 clientlist[tempnick]->pingmax = i->pingtime;
+586 class_threshold = i->threshold;
+587 class_sqmax = i->sendqmax;
+588 class_rqmax = i->recvqmax;
+589 break;
+590 }
+591 }
+592
+593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
+594 clientlist[tempnick]->timeout = TIME+class_regtimeout;
+595 clientlist[tempnick]->flood = class_flood;
+596 clientlist[tempnick]->threshold = class_threshold;
+597 clientlist[tempnick]->sendqmax = class_sqmax;
+598 clientlist[tempnick]->recvqmax = class_rqmax;
+599
+600 ucrec a;
+601 a.channel = NULL;
+602 a.uc_modes = 0;
+603 for (int i = 0; i < MAXCHANS; i++)
+604 clientlist[tempnick]->chans.push_back(a);
+605
+606 if (clientlist.size() > Config->SoftLimit)
+607 {
+608 kill_link(clientlist[tempnick],'No more connections allowed');
+609 return;
+610 }
+611
+612 if (clientlist.size() >= MAXCLIENTS)
+613 {
+614 kill_link(clientlist[tempnick],'No more connections allowed');
+615 return;
+616 }
+617
+618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
+619 // its a pretty big but for the moment valid assumption:
+620 // file descriptors are handed out starting at 0, and are recycled as theyre freed.
+621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
+622 // irc server at once (or the irc server otherwise initiating this many connections, files etc)
+623 // which for the time being is a physical impossibility (even the largest networks dont have more
+624 // than about 10,000 users on ONE server!)
+625 if ((unsigned)socket > 65534)
+626 {
+627 kill_link(clientlist[tempnick],'Server is full');
+628 return;
+629 }
+630 char* e = matches_exception(ip);
+631 if (!e)
+632 {
+633 char* r = matches_zline(ip);
+634 if (r)
+635 {
+636 char reason[MAXBUF];
+637 snprintf(reason,MAXBUF,'Z-Lined: %s',r);
+638 kill_link(clientlist[tempnick],reason);
+639 return;
+640 }
+641 }
+642 fd_ref_table[socket] = clientlist[tempnick];
+643 local_users.push_back(clientlist[tempnick]);
+644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
+645 }
+.fi
+.PP
+.SS "void AddOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 330 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+331 {
+332 log(DEBUG,'Oper added to optimization list');
+333 all_opers.push_back(user);
+334 }
+.fi
+.PP
+.SS "void AddWhoWas (\fBuserrec\fP * u)"
+.PP
+Definition at line 471 of file users.cpp.
+.PP
+References DEBUG, WhoWasUser::dhost, userrec::dhost, WhoWasUser::fullname, userrec::fullname, WhoWasUser::host, connection::host, WhoWasUser::ident, userrec::ident, log(), userrec::nick, WhoWasUser::nick, WhoWasUser::server, userrec::server, WhoWasUser::signon, connection::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE.
+.PP
+Referenced by kill_link().
+.PP
+.nf
+472 {
+473 whowas_hash::iterator iter = whowas.find(u->nick);
+474 WhoWasUser *a = new WhoWasUser();
+475 strlcpy(a->nick,u->nick,NICKMAX);
+476 strlcpy(a->ident,u->ident,IDENTMAX);
+477 strlcpy(a->dhost,u->dhost,160);
+478 strlcpy(a->host,u->host,160);
+479 strlcpy(a->fullname,u->fullname,MAXGECOS);
+480 strlcpy(a->server,u->server,256);
+481 a->signon = u->signon;
+482
+483 /* MAX_WHOWAS: max number of /WHOWAS items
+484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
+485 * can be replaced by a newer one
+486 */
+487
+488 if (iter == whowas.end())
+489 {
+490 if (whowas.size() >= (unsigned)WHOWAS_MAX)
+491 {
+492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
+493 {
+494 // 3600 seconds in an hour ;)
+495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+496 {
+497 // delete the old one
+498 if (i->second) delete i->second;
+499 // replace with new one
+500 i->second = a;
+501 log(DEBUG,'added WHOWAS entry, purged an old record');
+502 return;
+503 }
+504 }
+505 // no space left and user doesnt exist. Don't leave ram in use!
+506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram');
+507 delete a;
+508 }
+509 else
+510 {
+511 log(DEBUG,'added fresh WHOWAS entry');
+512 whowas[a->nick] = a;
+513 }
+514 }
+515 else
+516 {
+517 log(DEBUG,'updated WHOWAS entry');
+518 if (iter->second) delete iter->second;
+519 iter->second = a;
+520 }
+521 }
+.fi
+.PP
+.SS "void ConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 731 of file users.cpp.
+.PP
+References userrec::dns_done, FullConnectUser(), and connection::registered.
+.PP
+.nf
+732 {
+733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
+734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
+735 {
+736 FullConnectUser(user);
+737 }
+738 }
+.fi
+.PP
+.SS "template<typename T> \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP"
+.PP
+Definition at line 56 of file users.cpp.
+.PP
+Referenced by AddClient().
+.PP
+.nf
+57 {
+58 stringstream tmp;
+59 if (!(tmp << in)) return string();
+60 return tmp.str();
+61 }
+.fi
+.PP
+.SS "void DeleteOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 336 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+337 {
+338 for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
+339 {
+340 if (*a == user)
+341 {
+342 log(DEBUG,'Oper removed from optimization list');
+343 all_opers.erase(a);
+344 return;
+345 }
+346 }
+347 }
+.fi
+.PP
+.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
+.PP
+Definition at line 769 of file users.cpp.
+.PP
+References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions.
+.PP
+Referenced by Server::ChangeUserNick().
+.PP
+.nf
+770 {
+771 char nick[MAXBUF];
+772 int MOD_RESULT = 0;
+773
+774 strcpy(nick,'');
+775
+776 FOREACH_RESULT(OnUserPreNick(user,newnick));
+777 if (MOD_RESULT) {
+778 ServerInstance->stats->statsCollisions++;
+779 kill_link(user,'Nickname collision');
+780 return;
+781 }
+782 if (matches_qline(newnick))
+783 {
+784 ServerInstance->stats->statsCollisions++;
+785 kill_link(user,'Nickname collision');
+786 return;
+787 }
+788
+789 if (user)
+790 {
+791 if (newnick)
+792 {
+793 strncpy(nick,newnick,MAXBUF);
+794 }
+795 if (user->registered == 7)
+796 {
+797 char* pars[1];
+798 pars[0] = nick;
+799 std::string cmd = 'NICK';
+800 ServerInstance->Parser->CallHandler(cmd,pars,1,user);
+801 }
+802 }
+803 }
+.fi
+.PP
+.SS "void FullConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 647 of file users.cpp.
+.PP
+References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ().
+.PP
+Referenced by ConnectUser().
+.PP
+.nf
+648 {
+649 ServerInstance->stats->statsConnects++;
+650 user->idle_lastmsg = TIME;
+651 log(DEBUG,'ConnectUser: %s',user->nick);
+652
+653 if ((strcmp(Passwd(user),'')) && (!user->haspassed))
+654 {
+655 kill_link(user,'Invalid password');
+656 return;
+657 }
+658 if (IsDenied(user))
+659 {
+660 kill_link(user,'Unauthorised connection');
+661 return;
+662 }
+663
+664 char match_against[MAXBUF];
+665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host);
+666 char* e = matches_exception(match_against);
+667 if (!e)
+668 {
+669 char* r = matches_gline(match_against);
+670 if (r)
+671 {
+672 char reason[MAXBUF];
+673 snprintf(reason,MAXBUF,'G-Lined: %s',r);
+674 kill_link_silent(user,reason);
+675 return;
+676 }
+677 r = matches_kline(user->host);
+678 if (r)
+679 {
+680 char reason[MAXBUF];
+681 snprintf(reason,MAXBUF,'K-Lined: %s',r);
+682 kill_link_silent(user,reason);
+683 return;
+684 }
+685 }
+686
+687
+688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network);
+689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host);
+690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION);
+691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__);
+692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION);
+693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
+694 std::stringstream v;
+695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS;
+696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX;
+697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK=';
+698 v << Config->Network;
+699 std::string data005 = v.str();
+700 FOREACH_MOD On005Numeric(data005);
+701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
+702 // so i'd better split it :)
+703 std::stringstream out(data005);
+704 std::string token = '';
+705 std::string line5 = '';
+706 int token_counter = 0;
+707 while (!out.eof())
+708 {
+709 out >> token;
+710 line5 = line5 + token + ' ';
+711 token_counter++;
+712 if ((token_counter >= 13) || (out.eof() == true))
+713 {
+714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str());
+715 line5 = '';
+716 token_counter = 0;
+717 }
+718 }
+719 ShowMOTD(user);
+720
+721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
+722 // onto the network and produce 'fake direction'
+723 FOREACH_MOD OnUserConnect(user);
+724 FOREACH_MOD OnGlobalConnect(user);
+725 user->registered = 7;
+726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
+727 }
+.fi
+.PP
+.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 349 of file users.cpp.
+.PP
+References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers().
+.PP
+Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().
+.PP
+.nf
+350 {
+351 user_hash::iterator iter = clientlist.find(user->nick);
+352
+353 char reason[MAXBUF];
+354
+355 strncpy(reason,r,MAXBUF);
+356
+357 if (strlen(reason)>MAXQUIT)
+358 {
+359 reason[MAXQUIT-1] = '\0';
+360 }
+361
+362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+365
+366 if (user->registered == 7) {
+367 FOREACH_MOD OnUserQuit(user,reason);
+368 WriteCommonExcept(user,'QUIT :%s',reason);
+369 }
+370
+371 user->FlushWriteBuf();
+372
+373 FOREACH_MOD OnUserDisconnect(user);
+374
+375 if (user->fd > -1)
+376 {
+377 if (Config->GetIOHook(user->port))
+378 {
+379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+380 }
+381 ServerInstance->SE->DelFd(user->fd);
+382 user->CloseSocket();
+383 }
+384
+385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
+386 // if they were an oper with +s.
+387 if (user->registered == 7) {
+388 purge_empty_chans(user);
+389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
+390 if (user->fd > -1)
+391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason);
+392 AddWhoWas(user);
+393 }
+394
+395 if (iter != clientlist.end())
+396 {
+397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+398 if (user->fd > -1)
+399 {
+400 fd_ref_table[user->fd] = NULL;
+401 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+402 {
+403 local_users.erase(find(local_users.begin(),local_users.end(),user));
+404 log(DEBUG,'Delete local user');
+405 }
+406 }
+407 clientlist.erase(iter);
+408 }
+409 delete user;
+410 }
+.fi
+.PP
+.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 412 of file users.cpp.
+.PP
+References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept().
+.PP
+Referenced by FullConnectUser().
+.PP
+.nf
+413 {
+414 user_hash::iterator iter = clientlist.find(user->nick);
+415
+416 char reason[MAXBUF];
+417
+418 strncpy(reason,r,MAXBUF);
+419
+420 if (strlen(reason)>MAXQUIT)
+421 {
+422 reason[MAXQUIT-1] = '\0';
+423 }
+424
+425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+428
+429 user->FlushWriteBuf();
+430
+431 if (user->registered == 7) {
+432 FOREACH_MOD OnUserQuit(user,reason);
+433 WriteCommonExcept(user,'QUIT :%s',reason);
+434 }
+435
+436 FOREACH_MOD OnUserDisconnect(user);
+437
+438 if (user->fd > -1)
+439 {
+440 if (Config->GetIOHook(user->port))
+441 {
+442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+443 }
+444 ServerInstance->SE->DelFd(user->fd);
+445 user->CloseSocket();
+446 }
+447
+448 if (user->registered == 7) {
+449 purge_empty_chans(user);
+450 }
+451
+452 if (iter != clientlist.end())
+453 {
+454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+455 if (user->fd > -1)
+456 {
+457 fd_ref_table[user->fd] = NULL;
+458 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+459 {
+460 log(DEBUG,'Delete local user');
+461 local_users.erase(find(local_users.begin(),local_users.end(),user));
+462 }
+463 }
+464 clientlist.erase(iter);
+465 }
+466 delete user;
+467 }
+.fi
+.PP
+.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
+.PP
+Definition at line 743 of file users.cpp.
+.PP
+References clientlist, DEBUG, and log().
+.PP
+.nf
+744 {
+745 //user_hash::iterator newnick;
+746 user_hash::iterator oldnick = clientlist.find(Old);
+747
+748 log(DEBUG,'ReHashNick: %s %s',Old,New);
+749
+750 if (!strcasecmp(Old,New))
+751 {
+752 log(DEBUG,'old nick is new nick, skipping');
+753 return oldnick->second;
+754 }
+755
+756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
+757
+758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old);
+759
+760 userrec* olduser = oldnick->second;
+761 clientlist[New] = olduser;
+762 clientlist.erase(oldnick);
+763
+764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New);
+765
+766 return clientlist[New];
+767 }
+.fi
+.PP
.SH "Variable Documentation"
.PP
+.SS "std::vector<\fBuserrec\fP*> \fBall_opers\fP"
+.PP
+Definition at line 54 of file users.cpp.
+.PP
+Referenced by AddOper(), and DeleteOper().
+.SS "\fBuser_hash\fP \fBclientlist\fP"
+.PP
.SS "\fBServerConfig\fP* \fBConfig\fP"
.PP
+.SS "std::vector<\fBircd_module\fP*> factory"
+.PP
+.SS "\fBuserrec\fP* \fBfd_ref_table\fP[65536]"
+.PP
+.SS "std::vector<\fBuserrec\fP*> \fBlocal_users\fP"
+.PP
+Definition at line 52 of file users.cpp.
+.PP
+Referenced by AddClient(), kill_link(), and kill_link_silent().
+.SS "int \fBMODCOUNT\fP"
+.PP
+.SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP"
+.PP
+.SS "std::vector<\fBModule\fP*> modules"
+.PP
+.SS "\fBInspIRCd\fP* \fBServerInstance\fP"
+.PP
+.SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]"
+.PP
+Definition at line 43 of file socket.cpp.
.SS "time_t \fBTIME\fP"
.PP
+.SS "\fBwhowas_hash\fP \fBwhowas\fP"
+.PP
+Referenced by AddWhoWas().
+.SS "int \fBWHOWAS_MAX\fP"
+.PP
+.SS "int \fBWHOWAS_STALE\fP"
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/users.h.3 b/docs/man/man3/users.h.3
index 895149d91..a1be9c463 100644
--- a/docs/man/man3/users.h.3
+++ b/docs/man/man3/users.h.3
@@ -1,4 +1,4 @@
-.TH "users.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "users.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -16,6 +16,8 @@ users.h \-
.br
\fC#include <string>\fP
.br
+\fC#include 'hashcomp.h'\fP
+.br
.SS "Classes"
@@ -71,40 +73,642 @@ users.h \-
.br
.RI "\fIHolds a complete list of all allow and deny tags from the configuration file (connection classes). \fP"
.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "template<typename T> \fBstring\fP \fBConvToStr\fP (const T &in)"
+.br
+.ti -1c
+.RI "void \fBAddOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)"
+.br
+.ti -1c
+.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)"
+.br
+.ti -1c
+.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)"
+.br
+.ti -1c
+.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)"
+.br
+.ti -1c
+.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)"
+.br
+.ti -1c
+.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)"
+.br
+.in -1c
.SH "Define Documentation"
.PP
.SS "#define CC_ALLOW 0"
.PP
-Definition at line 34 of file users.h.
+Definition at line 36 of file users.h.
+.PP
+Referenced by AddClient().
.SS "#define CC_DENY 1"
.PP
-Definition at line 35 of file users.h.
+Definition at line 37 of file users.h.
.SS "#define STATUS_HOP 2"
.PP
-Definition at line 30 of file users.h.
+Definition at line 32 of file users.h.
.PP
Referenced by kick_channel().
.SS "#define STATUS_NORMAL 0"
.PP
-Definition at line 32 of file users.h.
+Definition at line 34 of file users.h.
.SS "#define STATUS_OP 4"
.PP
-Definition at line 29 of file users.h.
+Definition at line 31 of file users.h.
.SS "#define STATUS_VOICE 1"
.PP
-Definition at line 31 of file users.h.
+Definition at line 33 of file users.h.
.SH "Typedef Documentation"
.PP
.SS "typedef std::vector<\fBConnectClass\fP> \fBClassVector\fP"
.PP
Holds a complete list of all allow and deny tags from the configuration file (connection classes).
.PP
-Definition at line 103 of file users.h.
+Definition at line 107 of file users.h.
.SS "typedef std::vector<\fBInvited\fP> \fBInvitedList\fP"
.PP
Holds a complete list of all channels to which a user has been invited and has not yet joined.
.PP
-Definition at line 97 of file users.h.
+Definition at line 101 of file users.h.
+.SH "Function Documentation"
+.PP
+.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)"
+.PP
+Definition at line 524 of file users.cpp.
+.PP
+References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.
+.PP
+.nf
+525 {
+526 string tempnick;
+527 char tn2[MAXBUF];
+528 user_hash::iterator iter;
+529
+530 tempnick = ConvToStr(socket) + '-unknown';
+531 sprintf(tn2,'%lu-unknown',(unsigned long)socket);
+532
+533 iter = clientlist.find(tempnick);
+534
+535 // fix by brain.
+536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
+537 // using one as a registered connection. As theyre per fd, we can also safely assume
+538 // that we wont have collisions. Therefore, if the nick exists in the list, its only
+539 // used by a dead socket, erase the iterator so that the new client may reclaim it.
+540 // this was probably the cause of 'server ignores me when i hammer it with reconnects'
+541 // issue in earlier alphas/betas
+542 if (iter != clientlist.end())
+543 {
+544 userrec* goner = iter->second;
+545 delete goner;
+546 clientlist.erase(iter);
+547 }
+548
+549 /*
+550 * It is OK to access the value here this way since we know
+551 * it exists, we just created it above.
+552 *
+553 * At NO other time should you access a value in a map or a
+554 * hash_map this way.
+555 */
+556 clientlist[tempnick] = new userrec();
+557
+558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip);
+559
+560 clientlist[tempnick]->fd = socket;
+561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
+562 strlcpy(clientlist[tempnick]->host, host,160);
+563 strlcpy(clientlist[tempnick]->dhost, host,160);
+564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
+565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX);
+566 clientlist[tempnick]->registered = 0;
+567 clientlist[tempnick]->signon = TIME + Config->dns_timeout;
+568 clientlist[tempnick]->lastping = 1;
+569 clientlist[tempnick]->port = port;
+570 strlcpy(clientlist[tempnick]->ip,ip,16);
+571
+572 // set the registration timeout for this user
+573 unsigned long class_regtimeout = 90;
+574 int class_flood = 0;
+575 long class_threshold = 5;
+576 long class_sqmax = 262144; // 256kb
+577 long class_rqmax = 4096; // 4k
+578
+579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
+580 {
+581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
+582 {
+583 class_regtimeout = (unsigned long)i->registration_timeout;
+584 class_flood = i->flood;
+585 clientlist[tempnick]->pingmax = i->pingtime;
+586 class_threshold = i->threshold;
+587 class_sqmax = i->sendqmax;
+588 class_rqmax = i->recvqmax;
+589 break;
+590 }
+591 }
+592
+593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
+594 clientlist[tempnick]->timeout = TIME+class_regtimeout;
+595 clientlist[tempnick]->flood = class_flood;
+596 clientlist[tempnick]->threshold = class_threshold;
+597 clientlist[tempnick]->sendqmax = class_sqmax;
+598 clientlist[tempnick]->recvqmax = class_rqmax;
+599
+600 ucrec a;
+601 a.channel = NULL;
+602 a.uc_modes = 0;
+603 for (int i = 0; i < MAXCHANS; i++)
+604 clientlist[tempnick]->chans.push_back(a);
+605
+606 if (clientlist.size() > Config->SoftLimit)
+607 {
+608 kill_link(clientlist[tempnick],'No more connections allowed');
+609 return;
+610 }
+611
+612 if (clientlist.size() >= MAXCLIENTS)
+613 {
+614 kill_link(clientlist[tempnick],'No more connections allowed');
+615 return;
+616 }
+617
+618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
+619 // its a pretty big but for the moment valid assumption:
+620 // file descriptors are handed out starting at 0, and are recycled as theyre freed.
+621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
+622 // irc server at once (or the irc server otherwise initiating this many connections, files etc)
+623 // which for the time being is a physical impossibility (even the largest networks dont have more
+624 // than about 10,000 users on ONE server!)
+625 if ((unsigned)socket > 65534)
+626 {
+627 kill_link(clientlist[tempnick],'Server is full');
+628 return;
+629 }
+630 char* e = matches_exception(ip);
+631 if (!e)
+632 {
+633 char* r = matches_zline(ip);
+634 if (r)
+635 {
+636 char reason[MAXBUF];
+637 snprintf(reason,MAXBUF,'Z-Lined: %s',r);
+638 kill_link(clientlist[tempnick],reason);
+639 return;
+640 }
+641 }
+642 fd_ref_table[socket] = clientlist[tempnick];
+643 local_users.push_back(clientlist[tempnick]);
+644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
+645 }
+.fi
+.PP
+.SS "void AddOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 330 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+331 {
+332 log(DEBUG,'Oper added to optimization list');
+333 all_opers.push_back(user);
+334 }
+.fi
+.PP
+.SS "void AddWhoWas (\fBuserrec\fP * u)"
+.PP
+Definition at line 471 of file users.cpp.
+.PP
+References DEBUG, userrec::dhost, WhoWasUser::dhost, userrec::fullname, WhoWasUser::fullname, connection::host, WhoWasUser::host, userrec::ident, WhoWasUser::ident, log(), WhoWasUser::nick, userrec::nick, userrec::server, WhoWasUser::server, connection::signon, WhoWasUser::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE.
+.PP
+Referenced by kill_link().
+.PP
+.nf
+472 {
+473 whowas_hash::iterator iter = whowas.find(u->nick);
+474 WhoWasUser *a = new WhoWasUser();
+475 strlcpy(a->nick,u->nick,NICKMAX);
+476 strlcpy(a->ident,u->ident,IDENTMAX);
+477 strlcpy(a->dhost,u->dhost,160);
+478 strlcpy(a->host,u->host,160);
+479 strlcpy(a->fullname,u->fullname,MAXGECOS);
+480 strlcpy(a->server,u->server,256);
+481 a->signon = u->signon;
+482
+483 /* MAX_WHOWAS: max number of /WHOWAS items
+484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
+485 * can be replaced by a newer one
+486 */
+487
+488 if (iter == whowas.end())
+489 {
+490 if (whowas.size() >= (unsigned)WHOWAS_MAX)
+491 {
+492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
+493 {
+494 // 3600 seconds in an hour ;)
+495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
+496 {
+497 // delete the old one
+498 if (i->second) delete i->second;
+499 // replace with new one
+500 i->second = a;
+501 log(DEBUG,'added WHOWAS entry, purged an old record');
+502 return;
+503 }
+504 }
+505 // no space left and user doesnt exist. Don't leave ram in use!
+506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram');
+507 delete a;
+508 }
+509 else
+510 {
+511 log(DEBUG,'added fresh WHOWAS entry');
+512 whowas[a->nick] = a;
+513 }
+514 }
+515 else
+516 {
+517 log(DEBUG,'updated WHOWAS entry');
+518 if (iter->second) delete iter->second;
+519 iter->second = a;
+520 }
+521 }
+.fi
+.PP
+.SS "void ConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 731 of file users.cpp.
+.PP
+References userrec::dns_done, FullConnectUser(), and connection::registered.
+.PP
+.nf
+732 {
+733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
+734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
+735 {
+736 FullConnectUser(user);
+737 }
+738 }
+.fi
+.PP
+.SS "template<typename T> \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP"
+.PP
+Definition at line 56 of file users.cpp.
+.PP
+Referenced by AddClient().
+.PP
+.nf
+57 {
+58 stringstream tmp;
+59 if (!(tmp << in)) return string();
+60 return tmp.str();
+61 }
+.fi
+.PP
+.SS "void DeleteOper (\fBuserrec\fP * user)"
+.PP
+Definition at line 336 of file users.cpp.
+.PP
+References all_opers, DEBUG, and log().
+.PP
+.nf
+337 {
+338 for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
+339 {
+340 if (*a == user)
+341 {
+342 log(DEBUG,'Oper removed from optimization list');
+343 all_opers.erase(a);
+344 return;
+345 }
+346 }
+347 }
+.fi
+.PP
+.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)"
+.PP
+Definition at line 769 of file users.cpp.
+.PP
+References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions.
+.PP
+Referenced by Server::ChangeUserNick().
+.PP
+.nf
+770 {
+771 char nick[MAXBUF];
+772 int MOD_RESULT = 0;
+773
+774 strcpy(nick,'');
+775
+776 FOREACH_RESULT(OnUserPreNick(user,newnick));
+777 if (MOD_RESULT) {
+778 ServerInstance->stats->statsCollisions++;
+779 kill_link(user,'Nickname collision');
+780 return;
+781 }
+782 if (matches_qline(newnick))
+783 {
+784 ServerInstance->stats->statsCollisions++;
+785 kill_link(user,'Nickname collision');
+786 return;
+787 }
+788
+789 if (user)
+790 {
+791 if (newnick)
+792 {
+793 strncpy(nick,newnick,MAXBUF);
+794 }
+795 if (user->registered == 7)
+796 {
+797 char* pars[1];
+798 pars[0] = nick;
+799 std::string cmd = 'NICK';
+800 ServerInstance->Parser->CallHandler(cmd,pars,1,user);
+801 }
+802 }
+803 }
+.fi
+.PP
+.SS "void FullConnectUser (\fBuserrec\fP * user)"
+.PP
+Definition at line 647 of file users.cpp.
+.PP
+References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ().
+.PP
+Referenced by ConnectUser().
+.PP
+.nf
+648 {
+649 ServerInstance->stats->statsConnects++;
+650 user->idle_lastmsg = TIME;
+651 log(DEBUG,'ConnectUser: %s',user->nick);
+652
+653 if ((strcmp(Passwd(user),'')) && (!user->haspassed))
+654 {
+655 kill_link(user,'Invalid password');
+656 return;
+657 }
+658 if (IsDenied(user))
+659 {
+660 kill_link(user,'Unauthorised connection');
+661 return;
+662 }
+663
+664 char match_against[MAXBUF];
+665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host);
+666 char* e = matches_exception(match_against);
+667 if (!e)
+668 {
+669 char* r = matches_gline(match_against);
+670 if (r)
+671 {
+672 char reason[MAXBUF];
+673 snprintf(reason,MAXBUF,'G-Lined: %s',r);
+674 kill_link_silent(user,reason);
+675 return;
+676 }
+677 r = matches_kline(user->host);
+678 if (r)
+679 {
+680 char reason[MAXBUF];
+681 snprintf(reason,MAXBUF,'K-Lined: %s',r);
+682 kill_link_silent(user,reason);
+683 return;
+684 }
+685 }
+686
+687
+688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network);
+689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host);
+690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION);
+691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__);
+692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION);
+693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
+694 std::stringstream v;
+695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS;
+696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX;
+697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK=';
+698 v << Config->Network;
+699 std::string data005 = v.str();
+700 FOREACH_MOD On005Numeric(data005);
+701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
+702 // so i'd better split it :)
+703 std::stringstream out(data005);
+704 std::string token = '';
+705 std::string line5 = '';
+706 int token_counter = 0;
+707 while (!out.eof())
+708 {
+709 out >> token;
+710 line5 = line5 + token + ' ';
+711 token_counter++;
+712 if ((token_counter >= 13) || (out.eof() == true))
+713 {
+714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str());
+715 line5 = '';
+716 token_counter = 0;
+717 }
+718 }
+719 ShowMOTD(user);
+720
+721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
+722 // onto the network and produce 'fake direction'
+723 FOREACH_MOD OnUserConnect(user);
+724 FOREACH_MOD OnGlobalConnect(user);
+725 user->registered = 7;
+726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
+727 }
+.fi
+.PP
+.SS "void kill_link (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 349 of file users.cpp.
+.PP
+References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers().
+.PP
+Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().
+.PP
+.nf
+350 {
+351 user_hash::iterator iter = clientlist.find(user->nick);
+352
+353 char reason[MAXBUF];
+354
+355 strncpy(reason,r,MAXBUF);
+356
+357 if (strlen(reason)>MAXQUIT)
+358 {
+359 reason[MAXQUIT-1] = '\0';
+360 }
+361
+362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+365
+366 if (user->registered == 7) {
+367 FOREACH_MOD OnUserQuit(user,reason);
+368 WriteCommonExcept(user,'QUIT :%s',reason);
+369 }
+370
+371 user->FlushWriteBuf();
+372
+373 FOREACH_MOD OnUserDisconnect(user);
+374
+375 if (user->fd > -1)
+376 {
+377 if (Config->GetIOHook(user->port))
+378 {
+379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+380 }
+381 ServerInstance->SE->DelFd(user->fd);
+382 user->CloseSocket();
+383 }
+384
+385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
+386 // if they were an oper with +s.
+387 if (user->registered == 7) {
+388 purge_empty_chans(user);
+389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
+390 if (user->fd > -1)
+391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason);
+392 AddWhoWas(user);
+393 }
+394
+395 if (iter != clientlist.end())
+396 {
+397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+398 if (user->fd > -1)
+399 {
+400 fd_ref_table[user->fd] = NULL;
+401 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+402 {
+403 local_users.erase(find(local_users.begin(),local_users.end(),user));
+404 log(DEBUG,'Delete local user');
+405 }
+406 }
+407 clientlist.erase(iter);
+408 }
+409 delete user;
+410 }
+.fi
+.PP
+.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)"
+.PP
+Definition at line 412 of file users.cpp.
+.PP
+References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept().
+.PP
+Referenced by FullConnectUser().
+.PP
+.nf
+413 {
+414 user_hash::iterator iter = clientlist.find(user->nick);
+415
+416 char reason[MAXBUF];
+417
+418 strncpy(reason,r,MAXBUF);
+419
+420 if (strlen(reason)>MAXQUIT)
+421 {
+422 reason[MAXQUIT-1] = '\0';
+423 }
+424
+425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason);
+426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason);
+427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd);
+428
+429 user->FlushWriteBuf();
+430
+431 if (user->registered == 7) {
+432 FOREACH_MOD OnUserQuit(user,reason);
+433 WriteCommonExcept(user,'QUIT :%s',reason);
+434 }
+435
+436 FOREACH_MOD OnUserDisconnect(user);
+437
+438 if (user->fd > -1)
+439 {
+440 if (Config->GetIOHook(user->port))
+441 {
+442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
+443 }
+444 ServerInstance->SE->DelFd(user->fd);
+445 user->CloseSocket();
+446 }
+447
+448 if (user->registered == 7) {
+449 purge_empty_chans(user);
+450 }
+451
+452 if (iter != clientlist.end())
+453 {
+454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user);
+455 if (user->fd > -1)
+456 {
+457 fd_ref_table[user->fd] = NULL;
+458 if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+459 {
+460 log(DEBUG,'Delete local user');
+461 local_users.erase(find(local_users.begin(),local_users.end(),user));
+462 }
+463 }
+464 clientlist.erase(iter);
+465 }
+466 delete user;
+467 }
+.fi
+.PP
+.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)"
+.PP
+Definition at line 743 of file users.cpp.
+.PP
+References clientlist, DEBUG, and log().
+.PP
+.nf
+744 {
+745 //user_hash::iterator newnick;
+746 user_hash::iterator oldnick = clientlist.find(Old);
+747
+748 log(DEBUG,'ReHashNick: %s %s',Old,New);
+749
+750 if (!strcasecmp(Old,New))
+751 {
+752 log(DEBUG,'old nick is new nick, skipping');
+753 return oldnick->second;
+754 }
+755
+756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
+757
+758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old);
+759
+760 userrec* olduser = oldnick->second;
+761 clientlist[New] = olduser;
+762 clientlist.erase(oldnick);
+763
+764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New);
+765
+766 return clientlist[New];
+767 }
+.fi
+.PP
.SH "Author"
.PP
Generated automatically by Doxygen for InspIRCd from the source code.
diff --git a/docs/man/man3/xline.h.3 b/docs/man/man3/xline.h.3
index bac860eff..feca7ea4a 100644
--- a/docs/man/man3/xline.h.3
+++ b/docs/man/man3/xline.h.3
@@ -1,4 +1,4 @@
-.TH "xline.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
+.TH "xline.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -202,14 +202,19 @@ Referenced by Server::DelZLine().
.PP
.SS "char* matches_exception (const char * host)"
.PP
+Referenced by AddClient(), and FullConnectUser().
.SS "char* matches_gline (const char * host)"
.PP
+Referenced by FullConnectUser().
.SS "char* matches_kline (const char * host)"
.PP
+Referenced by FullConnectUser().
.SS "char* matches_qline (const char * nick)"
.PP
+Referenced by force_nickchange().
.SS "char* matches_zline (const char * ipaddr)"
.PP
+Referenced by AddClient().
.SS "bool qline_make_global (const char * nickname)"
.PP
.SS "void qline_set_creation_time (char * nick, time_t create_time)"
diff --git a/docs/module-doc/aes_8h-source.html b/docs/module-doc/aes_8h-source.html
new file mode 100644
index 000000000..3abd2301d
--- /dev/null
+++ b/docs/module-doc/aes_8h-source.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>InspIRCd: aes.h Source File</title>
+<link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4-20050815 -->
+<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>
+<div class="nav">
+<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_000004.html">include</a></div>
+<h1>aes.h</h1><a href="aes_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __AES_H__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __AES_H__</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;cstring&gt;</span>
+<a name="l00005"></a>00005
+<a name="l00006"></a>00006 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
+<a name="l00007"></a>00007
+<a name="l00010"></a><a class="code" href="classAES.html">00010</a> <span class="keyword">class </span><a class="code" href="classAES.html">AES</a>
+<a name="l00011"></a>00011 {
+<a name="l00012"></a>00012 <span class="keyword">public</span>:
+<a name="l00013"></a>00013 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_30ECB">ECB</a>=0, <a class="code" href="classAES.html#_40_30CBC">CBC</a>=1, <a class="code" href="classAES.html#_40_30CFB">CFB</a>=2 };
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="keyword">private</span>:
+<a name="l00016"></a>00016 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>=16 };
+<a name="l00017"></a>00017 <span class="keyword">enum</span> { <a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>=32, <a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>=14, <a class="code" href="classAES.html#_40_32MAX_5FKC">MAX_KC</a>=8, <a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>=8 };
+<a name="l00018"></a>00018
+<a name="l00019"></a><a class="code" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">00019</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">Mul</a>(<span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>, <span class="keywordtype">int</span> b)
+<a name="l00020"></a>00020 {
+<a name="l00021"></a>00021 <span class="keywordflow">return</span> (a != 0 &amp;&amp; b != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(<a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[a &amp; 0xFF] + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b &amp; 0xFF]) % 255] : 0;
+<a name="l00022"></a>00022 }
+<a name="l00023"></a>00023
+<a name="l00026"></a><a class="code" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">00026</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">Mul4</a>(<span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>, <span class="keywordtype">char</span> b[])
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keywordflow">if</span>(a == 0)
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> 0;
+<a name="l00030"></a>00030 a = <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[a &amp; 0xFF];
+<a name="l00031"></a>00031 <span class="keywordtype">int</span> a0 = (b[0] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[0] &amp; 0xFF]) % 255] &amp; 0xFF : 0;
+<a name="l00032"></a>00032 <span class="keywordtype">int</span> a1 = (b[1] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[1] &amp; 0xFF]) % 255] &amp; 0xFF : 0;
+<a name="l00033"></a>00033 <span class="keywordtype">int</span> a2 = (b[2] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[2] &amp; 0xFF]) % 255] &amp; 0xFF : 0;
+<a name="l00034"></a>00034 <span class="keywordtype">int</span> a3 = (b[3] != 0) ? <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[(a + <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[b[3] &amp; 0xFF]) % 255] &amp; 0xFF : 0;
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> a0 &lt;&lt; 24 | a1 &lt;&lt; 16 | a2 &lt;&lt; 8 | a3;
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keyword">public</span>:
+<a name="l00039"></a>00039 <a class="code" href="classAES.html#AES_28_29">AES</a>();
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="keyword">virtual</span> <a class="code" href="classAES.html#_7EAES_28_29">~AES</a>();
+<a name="l00042"></a>00042
+<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">MakeKey</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* key, <span class="keywordtype">char</span> <span class="keyword">const</span>* chain, <span class="keywordtype">int</span> keylength=<a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>, <span class="keywordtype">int</span> blockSize=<a class="code" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">DEFAULT_BLOCK_SIZE</a>);
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">private</span>:
+<a name="l00055"></a><a class="code" href="classAES.html#Xor_28char_20_2Abuff_2C_20char_20const_20_2Achain_29">00055</a> <span class="keywordtype">void</span> <a class="code" href="classAES.html#Xor_28char_20_2Abuff_2C_20char_20const_20_2Achain_29">Xor</a>(<span class="keywordtype">char</span>* buff, <span class="keywordtype">char</span> <span class="keyword">const</span>* chain)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00058"></a>00058 <span class="keywordflow">return</span>;
+<a name="l00059"></a>00059 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt;<a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>; i++)
+<a name="l00060"></a>00060 *(buff++) ^= *(chain++);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DefEncryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00068"></a>00068
+<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DefDecryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">public</span>:
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">EncryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00081"></a>00081
+<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">DecryptBlock</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result);
+<a name="l00087"></a>00087
+<a name="l00094"></a>00094 <span class="keywordtype">void</span> <a class="code" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">Encrypt</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result, size_t n, <span class="keywordtype">int</span> iMode=<a class="code" href="classAES.html#_40_30ECB">ECB</a>);
+<a name="l00095"></a>00095
+<a name="l00102"></a>00102 <span class="keywordtype">void</span> <a class="code" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">Decrypt</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* in, <span class="keywordtype">char</span>* result, size_t n, <span class="keywordtype">int</span> iMode=<a class="code" href="classAES.html#_40_30ECB">ECB</a>);
+<a name="l00103"></a>00103
+<a name="l00106"></a><a class="code" href="classAES.html#GetKeyLength_28_29">00106</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetKeyLength_28_29">GetKeyLength</a>()
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> 0;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5Fkeylength">m_keylength</a>;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112
+<a name="l00115"></a><a class="code" href="classAES.html#GetBlockSize_28_29">00115</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetBlockSize_28_29">GetBlockSize</a>()
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> 0;
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>;
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121
+<a name="l00124"></a><a class="code" href="classAES.html#GetRounds_28_29">00124</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#GetRounds_28_29">GetRounds</a>()
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span>(<span class="keyword">false</span>==<a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>)
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> 0;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> <a class="code" href="classAES.html#m_5FiROUNDS">m_iROUNDS</a>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00133"></a><a class="code" href="classAES.html#ResetChain_28_29">00133</a> <span class="keywordtype">void</span> <a class="code" href="classAES.html#ResetChain_28_29">ResetChain</a>()
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 memcpy(<a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">m_chain</a>, <a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">m_chain0</a>, <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>);
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">public</span>:
+<a name="l00141"></a><a class="code" href="classAES.html#sm_5Fchain_30">00141</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classAES.html#sm_5Fchain_30">sm_chain0</a>;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <span class="keyword">private</span>:
+<a name="l00144"></a><a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">00144</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Falog_5B_32_35_36_5D">sm_alog</a>[256];
+<a name="l00145"></a><a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">00145</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Flog_5B_32_35_36_5D">sm_log</a>[256];
+<a name="l00146"></a><a class="code" href="classAES.html#sm_5FS_5B_32_35_36_5D">00146</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5FS_5B_32_35_36_5D">sm_S</a>[256];
+<a name="l00147"></a><a class="code" href="classAES.html#sm_5FSi_5B_32_35_36_5D">00147</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5FSi_5B_32_35_36_5D">sm_Si</a>[256];
+<a name="l00148"></a><a class="code" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">00148</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">sm_T1</a>[256];
+<a name="l00149"></a><a class="code" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">00149</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">sm_T2</a>[256];
+<a name="l00150"></a><a class="code" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">00150</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">sm_T3</a>[256];
+<a name="l00151"></a><a class="code" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">00151</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">sm_T4</a>[256];
+<a name="l00152"></a><a class="code" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">00152</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">sm_T5</a>[256];
+<a name="l00153"></a><a class="code" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">00153</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">sm_T6</a>[256];
+<a name="l00154"></a><a class="code" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">00154</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">sm_T7</a>[256];
+<a name="l00155"></a><a class="code" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">00155</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">sm_T8</a>[256];
+<a name="l00156"></a><a class="code" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">00156</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">sm_U1</a>[256];
+<a name="l00157"></a><a class="code" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">00157</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">sm_U2</a>[256];
+<a name="l00158"></a><a class="code" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">00158</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">sm_U3</a>[256];
+<a name="l00159"></a><a class="code" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">00159</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">sm_U4</a>[256];
+<a name="l00160"></a><a class="code" href="classAES.html#sm_5Frcon_5B_33_30_5D">00160</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classAES.html#sm_5Frcon_5B_33_30_5D">sm_rcon</a>[30];
+<a name="l00161"></a><a class="code" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">00161</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">sm_shifts</a>[3][4][2];
+<a name="l00164"></a><a class="code" href="classAES.html#m_5FbKeyInit">00164</a> <span class="keywordtype">bool</span> <a class="code" href="classAES.html#m_5FbKeyInit">m_bKeyInit</a>;
+<a name="l00167"></a><a class="code" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">00167</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">m_Ke</a>[<a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>+1][<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00170"></a><a class="code" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">00170</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">m_Kd</a>[<a class="code" href="classAES.html#_40_32MAX_5FROUNDS">MAX_ROUNDS</a>+1][<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00173"></a><a class="code" href="classAES.html#m_5Fkeylength">00173</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5Fkeylength">m_keylength</a>;
+<a name="l00176"></a><a class="code" href="classAES.html#m_5FblockSize">00176</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FblockSize">m_blockSize</a>;
+<a name="l00179"></a><a class="code" href="classAES.html#m_5FiROUNDS">00179</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#m_5FiROUNDS">m_iROUNDS</a>;
+<a name="l00182"></a><a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">00182</a> <span class="keywordtype">char</span> <a class="code" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">m_chain0</a>[<a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>];
+<a name="l00183"></a><a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">00183</a> <span class="keywordtype">char</span> <a class="code" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">m_chain</a>[<a class="code" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">MAX_BLOCK_SIZE</a>];
+<a name="l00186"></a><a class="code" href="classAES.html#tk_5BMAX_5FKC_5D">00186</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#tk_5BMAX_5FKC_5D">tk</a>[<a class="code" href="classAES.html#_40_32MAX_5FKC">MAX_KC</a>];
+<a name="l00187"></a><a class="code" href="classAES.html#a_5BMAX_5FBC_5D">00187</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#a_5BMAX_5FBC_5D">a</a>[<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00188"></a><a class="code" href="classAES.html#t_5BMAX_5FBC_5D">00188</a> <span class="keywordtype">int</span> <a class="code" href="classAES.html#t_5BMAX_5FBC_5D">t</a>[<a class="code" href="classAES.html#_40_32MAX_5FBC">MAX_BC</a>];
+<a name="l00189"></a>00189 };
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="preprocessor">#endif</span>
+<a name="l00192"></a>00192 <span class="preprocessor"></span>
+<a name="l00199"></a>00199 <span class="keywordtype">void</span> <a class="code" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">to64frombits</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> inlen);
+<a name="l00206"></a>00206 <span class="keywordtype">int</span> <a class="code" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">from64tobits</a>(<span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> maxlen);
+<a name="l00207"></a>00207
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
+</body>
+</html>
diff --git a/docs/module-doc/aes_8h.html b/docs/module-doc/aes_8h.html
new file mode 100644
index 000000000..bc7ccff4b
--- /dev/null
+++ b/docs/module-doc/aes_8h.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>InspIRCd: aes.h File Reference</title>
+<link href="inspircd.doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4-20050815 -->
+<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>
+<div class="nav">
+<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_000004.html">include</a></div>
+<h1>aes.h File Reference</h1><code>#include &lt;cstring&gt;</code><br>
+
+<p>
+Include dependency graph for aes.h:<p><center><img src="aes_8h__incl.gif" border="0" usemap="#aes.h_map" alt=""></center>
+
+<p>
+<a href="aes_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAES.html">AES</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The AES class is a utility class for use in modules and the core for encryption of data. <a href="classAES.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">to64frombits</a> (unsigned char *out, const unsigned char *in, int inlen)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert from binary to base64. <a href="#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">from64tobits</a> (char *out, const char *in, int maxlen)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert from base64 to binary Output Input Size of output buffer. <a href="#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29"></a><!-- doxytag: member="aes.h::from64tobits" ref="from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29" args="(char *out, const char *in, int maxlen)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int from64tobits </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>maxlen</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Convert from base64 to binary Output Input Size of output buffer.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>Number of bytes actually converted</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29"></a><!-- doxytag: member="aes.h::to64frombits" ref="to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29" args="(unsigned char *out, const unsigned char *in, int inlen)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void to64frombits </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>inlen</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Convert from binary to base64.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>Output </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>Input </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inlen</em>&nbsp;</td><td>Number of bytes in input buffer</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
+</body>
+</html>
diff --git a/docs/module-doc/aes_8h__incl.map b/docs/module-doc/aes_8h__incl.map
new file mode 100644
index 000000000..5a14779e7
--- /dev/null
+++ b/docs/module-doc/aes_8h__incl.map
@@ -0,0 +1 @@
+base referer
diff --git a/docs/module-doc/aes_8h__incl.md5 b/docs/module-doc/aes_8h__incl.md5
new file mode 100644
index 000000000..763f9a789
--- /dev/null
+++ b/docs/module-doc/aes_8h__incl.md5
@@ -0,0 +1 @@
+757d940097e33843502a3704b6517705 \ No newline at end of file
diff --git a/docs/module-doc/annotated.html b/docs/module-doc/annotated.html
index d242be3d1..021f871ac 100644
--- a/docs/module-doc/annotated.html
+++ b/docs/module-doc/annotated.html
@@ -7,11 +7,13 @@
<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="qindexHL" 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>
<h1>InspIRCd Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="classAdmin.html">Admin</a></td><td class="indexvalue">Holds /ADMIN data This class contains the admin details of the local server </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classAES.html">AES</a></td><td class="indexvalue">Utility class for use in modules and the core for encryption of data </td></tr>
<tr><td class="indexkey"><a class="el" href="classBanItem.html">BanItem</a></td><td class="indexvalue">A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to hold channel bans (+b) </td></tr>
<tr><td class="indexkey"><a class="el" href="classBoolSet.html">BoolSet</a></td><td class="indexvalue">BoolSet is a utility class designed to hold eight bools in a bitmask </td></tr>
<tr><td class="indexkey"><a class="el" href="classchanrec.html">chanrec</a></td><td class="indexvalue">Holds all relevent information for a channel </td></tr>
<tr><td class="indexkey"><a class="el" href="classstd_1_1char__traits.html">char_traits</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classclassbase.html">classbase</a></td><td class="indexvalue">The base class for all inspircd classes </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classcmd__mode.html">cmd_mode</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classcommand__t.html">command_t</a></td><td class="indexvalue">A structure that defines a command </td></tr>
<tr><td class="indexkey"><a class="el" href="classConfigReader.html">ConfigReader</a></td><td class="indexvalue">Allows reading of values from configuration files This class allows a module to read from either the main configuration file (inspircd.conf) or from a module-specified configuration file </td></tr>
<tr><td class="indexkey"><a class="el" href="classConnectClass.html">ConnectClass</a></td><td class="indexvalue">Holds information relevent to &lt;connect allow&gt; and &lt;connect deny&gt; tags in the config file </td></tr>
@@ -38,6 +40,7 @@
<tr><td class="indexkey"><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td class="indexvalue">The <a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> class is used for RFC-style comparison of strings </td></tr>
<tr><td class="indexkey"><a class="el" href="classKLine.html">KLine</a></td><td class="indexvalue">KLine class </td></tr>
<tr><td class="indexkey"><a class="el" href="classModeParameter.html">ModeParameter</a></td><td class="indexvalue">Holds a custom parameter to a module-defined channel mode e.g </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classModeParser.html">ModeParser</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classModule.html">Module</a></td><td class="indexvalue">Base class for all <a class="el" href="classInspIRCd.html">InspIRCd</a> modules This class is the base class for <a class="el" href="classInspIRCd.html">InspIRCd</a> modules </td></tr>
<tr><td class="indexkey"><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td class="indexvalue">Instantiates classes inherited from <a class="el" href="classModule.html">Module</a> This class creates a class inherited from type <a class="el" href="classModule.html">Module</a>, using new </td></tr>
<tr><td class="indexkey"><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td class="indexvalue">Base class of <a class="el" href="classRequest.html">Request</a> and <a class="el" href="classEvent.html">Event</a> This class is used to represent a basic data structure which is passed between modules for safe inter-module communications </td></tr>
@@ -55,7 +58,7 @@
<tr><td class="indexkey"><a class="el" href="classXLine.html">XLine</a></td><td class="indexvalue">XLine is the base class for ban lines such as G lines and K lines </td></tr>
<tr><td class="indexkey"><a class="el" href="classZLine.html">ZLine</a></td><td class="indexvalue">ZLine class </td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/base_8h-source.html b/docs/module-doc/base_8h-source.html
index dd5093d21..b0ea61862 100644
--- a/docs/module-doc/base_8h-source.html
+++ b/docs/module-doc/base_8h-source.html
@@ -88,7 +88,7 @@
<a name="l00161"></a>00161
<a name="l00162"></a>00162 <span class="preprocessor">#endif</span>
<a name="l00163"></a>00163 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/base_8h.html b/docs/module-doc/base_8h.html
index 21cb374ca..6f4d7700b 100644
--- a/docs/module-doc/base_8h.html
+++ b/docs/module-doc/base_8h.html
@@ -21,8 +21,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<map name="base.hdep_map">
<area href="channels_8h-source.html" shape="rect" coords="123,7,208,33" alt="">
<area href="connection_8h-source.html" shape="rect" coords="116,57,215,84" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="128,108,203,135" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="264,133,347,160" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="124,108,207,135" alt="">
</map>
<p>
@@ -68,7 +67,7 @@ This graph shows which files directly or indirectly include this file:<p><center
Definition at line <a class="el" href="base_8h-source.html#l00026">26</a> of file <a class="el" href="base_8h-source.html">base.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/base_8h__dep__incl.map b/docs/module-doc/base_8h__dep__incl.map
index c410efa5b..f4ecb8aca 100644
--- a/docs/module-doc/base_8h__dep__incl.map
+++ b/docs/module-doc/base_8h__dep__incl.map
@@ -1,5 +1,4 @@
base referer
rect $channels_8h-source.html 123,7 208,33
rect $connection_8h-source.html 116,57 215,84
-rect $ctables_8h-source.html 128,108 203,135
-rect $modules_8h-source.html 264,133 347,160
+rect $modules_8h-source.html 124,108 207,135
diff --git a/docs/module-doc/base_8h__dep__incl.md5 b/docs/module-doc/base_8h__dep__incl.md5
index 41b455699..ca5585f51 100644
--- a/docs/module-doc/base_8h__dep__incl.md5
+++ b/docs/module-doc/base_8h__dep__incl.md5
@@ -1 +1 @@
-b145898866c61fc2668d99f3afe53948 \ No newline at end of file
+ee5adf3802b7f876813a7157861bd8af \ No newline at end of file
diff --git a/docs/module-doc/channels_8cpp-source.html b/docs/module-doc/channels_8cpp-source.html
index c8421934a..be9c4fc43 100644
--- a/docs/module-doc/channels_8cpp-source.html
+++ b/docs/module-doc/channels_8cpp-source.html
@@ -28,269 +28,269 @@
<a name="l00019"></a>00019 <span class="preprocessor">#include "inspircd_config.h"</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;sys/utsname.h&gt;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;time.h&gt;</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#else</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;sstream&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;deque&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "dynamic.h"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "wildcard.h"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
-<a name="l00048"></a>00048 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00049"></a>00049 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00055"></a><a class="code" href="channels_8cpp.html#nspace">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00057"></a>00057 <span class="preprocessor"></span>
-<a name="l00058"></a>00058 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
-<a name="l00061"></a>00061 <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>;
-<a name="l00062"></a>00062 <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>;
-<a name="l00063"></a>00063 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
-<a name="l00064"></a>00064 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
-<a name="l00065"></a>00065 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
-<a name="l00069"></a>00069
-<a name="l00070"></a><a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">00070</a> std::vector&lt;ModeParameter&gt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">ForceChan</a>(<a class="code" href="classchanrec.html">chanrec</a>* Ptr,<a class="code" href="classucrec.html">ucrec</a> &amp;a,<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">int</span> created);
-<a name="l00073"></a>00073
-<a name="l00074"></a><a class="code" href="classchanrec.html#chanrec_28_29">00074</a> <a class="code" href="classchanrec.html#chanrec_28_29">chanrec::chanrec</a>()
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
-<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
-<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
-<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
-<a name="l00080"></a>00080 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
-<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
-<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
-<a name="l00083"></a>00083 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a><a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">00086</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec::SetCustomMode</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">bool</span> mode_on)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (mode_on) {
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
-<a name="l00090"></a>00090 m[0] = mode;
-<a name="l00091"></a>00091 m[1] = <span class="charliteral">'\0'</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!strchr(this-&gt;custom_modes,mode))
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> {
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-&gt;<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
-<a name="l00101"></a>00101 <span class="keywordtype">int</span> pos = a.find(mode);
-<a name="l00102"></a>00102 a.erase(pos,1);
-<a name="l00103"></a>00103 strncpy(this-&gt;custom_modes,a.c_str(),MAXMODES);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this-&gt;custom_modes);
-<a name="l00106"></a>00106 this-&gt;<a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 }
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;sys/utsname.h&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;time.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;string&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#else</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;sstream&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;deque&gt;</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "dynamic.h"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00054"></a><a class="code" href="channels_8cpp.html#nspace">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
+<a name="l00060"></a>00060 <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>;
+<a name="l00061"></a>00061 <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>;
+<a name="l00062"></a>00062 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
+<a name="l00063"></a>00063 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
+<a name="l00064"></a>00064 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
+<a name="l00068"></a>00068
+<a name="l00069"></a><a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">00069</a> std::vector&lt;ModeParameter&gt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">ForceChan</a>(<a class="code" href="classchanrec.html">chanrec</a>* Ptr,<a class="code" href="classucrec.html">ucrec</a> &amp;a,<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">int</span> created);
+<a name="l00072"></a>00072
+<a name="l00073"></a><a class="code" href="classchanrec.html#chanrec_28_29">00073</a> <a class="code" href="classchanrec.html#chanrec_28_29">chanrec::chanrec</a>()
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
+<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
+<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
+<a name="l00080"></a>00080 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
+<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00085"></a><a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">00085</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec::SetCustomMode</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">bool</span> mode_on)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (mode_on) {
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
+<a name="l00089"></a>00089 m[0] = mode;
+<a name="l00090"></a>00090 m[1] = <span class="charliteral">'\0'</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (!strchr(this-&gt;custom_modes,mode))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> {
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-&gt;<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> pos = a.find(mode);
+<a name="l00101"></a>00101 a.erase(pos,1);
+<a name="l00102"></a>00102 strncpy(this-&gt;custom_modes,a.c_str(),MAXMODES);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this-&gt;custom_modes);
+<a name="l00105"></a>00105 this-&gt;<a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108
<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00111"></a><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">00111</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">chanrec::SetCustomModeParam</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">char</span>* parameter,<span class="keywordtype">bool</span> mode_on)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
-<a name="l00115"></a>00115 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
-<a name="l00116"></a>00116 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
-<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this-&gt;name,CHANMAX);
-<a name="l00118"></a>00118 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (mode_on)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
-<a name="l00122"></a>00122 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">else</span>
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
-<a name="l00133"></a>00133 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a><a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">00142</a> <span class="keywordtype">bool</span> <a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec::IsCustomModeSet</a>(<span class="keywordtype">char</span> mode)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> (strchr(this-&gt;custom_modes,mode));
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a><a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">00147</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec::GetModeParameter</a>(<span class="keywordtype">char</span> mode)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> i-&gt;parameter;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00162"></a><a class="code" href="classchanrec.html#GetUserCounter_28_29">00162</a> <span class="keywordtype">long</span> <a class="code" href="classchanrec.html#GetUserCounter_28_29">chanrec::GetUserCounter</a>()
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> (this-&gt;internal_userlist.size());
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">00167</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec::AddUser</a>(<span class="keywordtype">char</span>* castuser)
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
-<a name="l00170"></a>00170 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">00173</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">chanrec::DelUser</a>(<span class="keywordtype">char</span>* castuser)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a &lt; <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (*a == castuser)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
-<a name="l00180"></a>00180 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
-<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="classchanrec.html#GetUsers_28_29">00187</a> std::vector&lt;char*&gt; *<a class="code" href="classchanrec.html#GetUsers_28_29">chanrec::GetUsers</a>()
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> &amp;<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="comment">/* add a channel to a user, creating the record for it if needed and linking</span>
-<a name="l00193"></a>00193 <span class="comment"> * it to the user record */</span>
-<a name="l00194"></a>00194
-<a name="l00195"></a><a class="code" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">00195</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(<a class="code" href="classuserrec.html">userrec</a> *user, <span class="keyword">const</span> <span class="keywordtype">char</span>* cn, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">bool</span> override)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+<a name="l00110"></a><a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">00110</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">chanrec::SetCustomModeParam</a>(<span class="keywordtype">char</span> mode,<span class="keywordtype">char</span>* parameter,<span class="keywordtype">bool</span> mode_on)
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
+<a name="l00114"></a>00114 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
+<a name="l00115"></a>00115 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
+<a name="l00116"></a>00116 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this-&gt;name,CHANMAX);
+<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (mode_on)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
+<a name="l00121"></a>00121 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 <span class="keywordflow">else</span>
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
+<a name="l00132"></a>00132 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a><a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">00141</a> <span class="keywordtype">bool</span> <a class="code" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec::IsCustomModeSet</a>(<span class="keywordtype">char</span> mode)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> (strchr(this-&gt;custom_modes,mode));
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">00146</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec::GetModeParameter</a>(<span class="keywordtype">char</span> mode)
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keywordflow">return</span> i-&gt;parameter;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160
+<a name="l00161"></a><a class="code" href="classchanrec.html#GetUserCounter_28_29">00161</a> <span class="keywordtype">long</span> <a class="code" href="classchanrec.html#GetUserCounter_28_29">chanrec::GetUserCounter</a>()
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> (this-&gt;internal_userlist.size());
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a><a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">00166</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec::AddUser</a>(<span class="keywordtype">char</span>* castuser)
+<a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
+<a name="l00169"></a>00169 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171
+<a name="l00172"></a><a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">00172</a> <span class="keywordtype">void</span> <a class="code" href="classchanrec.html#DelUser_28char_20_2Acastuser_29">chanrec::DelUser</a>(<span class="keywordtype">char</span>* castuser)
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a &lt; <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (*a == castuser)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
+<a name="l00179"></a>00179 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
+<a name="l00180"></a>00180 <span class="keywordflow">return</span>;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185
+<a name="l00186"></a><a class="code" href="classchanrec.html#GetUsers_28_29">00186</a> std::vector&lt;char*&gt; *<a class="code" href="classchanrec.html#GetUsers_28_29">chanrec::GetUsers</a>()
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keywordflow">return</span> &amp;<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="comment">/* add a channel to a user, creating the record for it if needed and linking</span>
+<a name="l00192"></a>00192 <span class="comment"> * it to the user record */</span>
+<a name="l00193"></a>00193
+<a name="l00194"></a><a class="code" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">00194</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(<a class="code" href="classuserrec.html">userrec</a> *user, <span class="keyword">const</span> <span class="keywordtype">char</span>* cn, <span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keywordtype">bool</span> override)
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(<a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
@@ -301,7 +301,7 @@
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
@@ -552,7 +552,7 @@
<a name="l00543"></a>00543 }
<a name="l00544"></a>00544
<a name="l00545"></a>00545
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/channels_8cpp.html b/docs/module-doc/channels_8cpp.html
index 4bd98b6e2..ef2c18660 100644
--- a/docs/module-doc/channels_8cpp.html
+++ b/docs/module-doc/channels_8cpp.html
@@ -10,7 +10,6 @@
<h1>channels.cpp File Reference</h1><code>#include &quot;inspircd_config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>&quot;</code><br>
-<code>#include &quot;inspircd_util.h&quot;</code><br>
<code>#include &lt;unistd.h&gt;</code><br>
<code>#include &lt;sys/errno.h&gt;</code><br>
<code>#include &lt;sys/ioctl.h&gt;</code><br>
@@ -39,17 +38,17 @@
<p>
Include dependency graph for channels.cpp:<p><center><img src="channels_8cpp__incl.gif" border="0" usemap="#channels.cpp_map" alt=""></center>
<map name="channels.cpp_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="580,665,660,692" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="712,615,808,641" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="872,767,947,793" alt="">
-<area href="users_8h-source.html" shape="rect" coords="1009,716,1073,743" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="452,868,527,895" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="315,767,397,793" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="860,361,959,388" alt="">
-<area href="message_8h-source.html" shape="rect" coords="867,412,952,439" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="876,108,943,135" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="879,159,940,185" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="168,1020,253,1047" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="313,817,393,844" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="443,919,539,945" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="600,615,675,641" alt="">
+<area href="users_8h-source.html" shape="rect" coords="745,817,809,844" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="596,437,679,464" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="740,412,815,439" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="604,919,671,945" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="588,1223,687,1249" alt="">
+<area href="message_8h-source.html" shape="rect" coords="595,1273,680,1300" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="607,1172,668,1199" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="168,463,253,489" alt="">
</map>
<p>
@@ -113,7 +112,7 @@ Include dependency graph for channels.cpp:<p><center><img src="channels_8cpp__in
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00055">55</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>. </td>
+Definition at line <a class="el" href="channels_8cpp-source.html#l00054">54</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
@@ -165,99 +164,100 @@ Definition at line <a class="el" href="channels_8cpp-source.html#l00055">55</a>
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00195">195</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00072">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00096">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00147">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(chanlist[cname]-&gt;name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(chanlist[cname]-&gt;topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(chanlist[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+Definition at line <a class="el" href="channels_8cpp-source.html#l00194">194</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00099">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00123">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00151">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00363">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(chanlist[cname]-&gt;name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(chanlist[cname]-&gt;topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(chanlist[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
@@ -268,7 +268,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinU
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
@@ -399,9 +399,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinU
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00401">401</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
+References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
+Referenced by <a class="el" href="modules_8cpp-source.html#l00368">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
<a name="l00403"></a>00403 <span class="keywordflow">if</span> ((!user) || (!cname))
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** del_channel was given an invalid parameter"</span>);
@@ -511,9 +511,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartU
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00372">372</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, <a class="el" href="channels_8h-source.html#l00232">UCMODE_OP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+References <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, <a class="el" href="channels_8h-source.html#l00232">UCMODE_OP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00373"></a>00373 {
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00373"></a>00373 {
<a name="l00374"></a>00374 <span class="keywordflow">if</span> (created == 2)
<a name="l00375"></a>00375 {
<a name="l00376"></a>00376 <span class="comment">/* first user in is given ops */</span>
@@ -592,7 +592,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00459">459</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00153">userrec::server</a>, <a class="el" href="users_8h-source.html#l00030">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00032">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
<a name="l00461"></a>00461 <span class="keywordflow">if</span> ((!src) || (!user) || (!Ptr) || (!reason))
<a name="l00462"></a>00462 {
<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** kick_channel was given an invalid parameter"</span>);
@@ -704,7 +704,7 @@ References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a cl
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="Config"></a><!-- doxytag: member="channels.cpp::Config" ref="Config" args="" --><p>
@@ -752,9 +752,9 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00070">70</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00069">69</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00147">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00146">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="factory"></a><!-- doxytag: member="channels.cpp::factory" ref="factory" args="" --><p>
@@ -786,7 +786,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00147">chanrec::Get
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
</tr>
</table>
</td>
@@ -802,9 +802,9 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00147">chanrec::Get
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00934">934</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="modules"></a><!-- doxytag: member="channels.cpp::modules" ref="modules" args="" --><p>
@@ -829,7 +829,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindM
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="channels.cpp::TIME" ref="TIME" args="" --><p>
@@ -854,7 +854,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindM
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="WHOWAS_5FMAX"></a><!-- doxytag: member="channels.cpp::WHOWAS_MAX" ref="WHOWAS_5FMAX" args="" --><p>
@@ -863,7 +863,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
</tr>
</table>
</td>
@@ -877,7 +877,9 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="WHOWAS_5FSTALE"></a><!-- doxytag: member="channels.cpp::WHOWAS_STALE" ref="WHOWAS_5FSTALE" args="" --><p>
@@ -886,7 +888,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
</tr>
</table>
</td>
@@ -900,10 +902,12 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/channels_8cpp__incl.map b/docs/module-doc/channels_8cpp__incl.map
index f6471abe1..820326c3c 100644
--- a/docs/module-doc/channels_8cpp__incl.map
+++ b/docs/module-doc/channels_8cpp__incl.map
@@ -1,12 +1,12 @@
base referer
-rect $inspircd_8h-source.html 580,665 660,692
-rect $inspircd__io_8h-source.html 712,615 808,641
-rect $globals_8h-source.html 872,767 947,793
-rect $users_8h-source.html 1009,716 1073,743
-rect $ctables_8h-source.html 452,868 527,895
-rect $modules_8h-source.html 315,767 397,793
-rect $commands_8h-source.html 860,361 959,388
-rect $message_8h-source.html 867,412 952,439
-rect $mode_8h-source.html 876,108 943,135
-rect $xline_8h-source.html 879,159 940,185
-rect $typedefs_8h-source.html 168,1020 253,1047
+rect $inspircd_8h-source.html 313,817 393,844
+rect $inspircd__io_8h-source.html 443,919 539,945
+rect $globals_8h-source.html 600,615 675,641
+rect $users_8h-source.html 745,817 809,844
+rect $modules_8h-source.html 596,437 679,464
+rect $ctables_8h-source.html 740,412 815,439
+rect $mode_8h-source.html 604,919 671,945
+rect $commands_8h-source.html 588,1223 687,1249
+rect $message_8h-source.html 595,1273 680,1300
+rect $xline_8h-source.html 607,1172 668,1199
+rect $typedefs_8h-source.html 168,463 253,489
diff --git a/docs/module-doc/channels_8cpp__incl.md5 b/docs/module-doc/channels_8cpp__incl.md5
index 319dd1c05..880c16373 100644
--- a/docs/module-doc/channels_8cpp__incl.md5
+++ b/docs/module-doc/channels_8cpp__incl.md5
@@ -1 +1 @@
-4f90f86ea2d42fe100213ae570a3e482 \ No newline at end of file
+693bc7a6b868d635e208e839a3f75bab \ No newline at end of file
diff --git a/docs/module-doc/channels_8h-source.html b/docs/module-doc/channels_8h-source.html
index c66267f32..71048115e 100644
--- a/docs/module-doc/channels_8h-source.html
+++ b/docs/module-doc/channels_8h-source.html
@@ -154,7 +154,7 @@
<a name="l00263"></a>00263
<a name="l00264"></a>00264 <span class="preprocessor">#endif</span>
<a name="l00265"></a>00265 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/channels_8h.html b/docs/module-doc/channels_8h.html
index bafe033e1..6104b1de2 100644
--- a/docs/module-doc/channels_8h.html
+++ b/docs/module-doc/channels_8h.html
@@ -22,16 +22,16 @@ Include dependency graph for channels.h:<p><center><img src="channels_8h__incl.g
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="channels_8h__dep__incl.gif" border="0" usemap="#channels.hdep_map" alt=""></center>
<map name="channels.hdep_map">
-<area href="users_8cpp-source.html" shape="rect" coords="407,83,487,109" alt="">
-<area href="users_8h-source.html" shape="rect" coords="144,260,208,287" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="257,57,356,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="665,311,745,337" alt="">
+<area href="users_8h-source.html" shape="rect" coords="144,285,208,312" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="257,108,356,135" alt="">
+<area href="cull__list_8h-source.html" shape="rect" coords="268,159,345,185" alt="">
<area href="globals_8h-source.html" shape="rect" coords="269,209,344,236" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="404,235,489,261" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="267,108,347,135" alt="">
-<area href="cull__list_8h-source.html" shape="rect" coords="268,311,345,337" alt="">
-<area href="message_8h-source.html" shape="rect" coords="264,361,349,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="532,260,617,287" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="404,361,484,388" alt="">
<area href="mode_8h-source.html" shape="rect" coords="273,412,340,439" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="276,463,337,489" alt="">
+<area href="message_8h-source.html" shape="rect" coords="264,463,349,489" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="276,513,337,540" alt="">
</map>
<p>
@@ -125,7 +125,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00028">28</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="CM_5FMODERATED"></a><!-- doxytag: member="channels.h::CM_MODERATED" ref="CM_5FMODERATED" args="" --><p>
@@ -177,7 +177,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00029">29</a> of
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00027">27</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="CM_5FPRIVATE"></a><!-- doxytag: member="channels.h::CM_PRIVATE" ref="CM_5FPRIVATE" args="" --><p>
@@ -254,7 +254,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00030">30</a> of
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00026">26</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="UCMODE_5FFOUNDER"></a><!-- doxytag: member="channels.h::UCMODE_FOUNDER" ref="UCMODE_5FFOUNDER" args="" --><p>
@@ -515,99 +515,100 @@ Definition at line <a class="el" href="channels_8h-source.html#l00097">97</a> of
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00195">195</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00072">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00096">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00147">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> ((!user) || (!cn))
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> created = 0;
-<a name="l00204"></a>00204 <span class="keywordtype">char</span> cname[MAXBUF];
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> MOD_RESULT = 0;
-<a name="l00206"></a>00206 strncpy(cname,cn,CHANMAX);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!Ptr)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 MOD_RESULT = 0;
-<a name="l00217"></a>00217 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> NULL;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 <span class="comment">/* create a new one */</span>
-<a name="l00222"></a>00222 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
-<a name="l00223"></a>00223 strlcpy(chanlist[cname]-&gt;name, cname,CHANMAX);
-<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
-<a name="l00225"></a>00225 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00226"></a>00226 strcpy(chanlist[cname]-&gt;topic, <span class="stringliteral">""</span>);
-<a name="l00227"></a>00227 strncpy(chanlist[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
-<a name="l00228"></a>00228 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
-<a name="l00229"></a>00229 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
-<a name="l00230"></a>00230 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
-<a name="l00231"></a>00231 <span class="comment">/* set created to 2 to indicate user</span>
-<a name="l00232"></a>00232 <span class="comment"> * is the first in the channel</span>
-<a name="l00233"></a>00233 <span class="comment"> * and should be given ops */</span>
-<a name="l00234"></a>00234 created = 2;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">else</span>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="comment">/* Already on the channel */</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// remote users are allowed us to bypass channel modes</span>
-<a name="l00243"></a>00243 <span class="comment">// and bans (used by servers)</span>
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 MOD_RESULT = 0;
-<a name="l00247"></a>00247 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (MOD_RESULT == 1)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> NULL;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">else</span>
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 MOD_RESULT = 0;
-<a name="l00257"></a>00257 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!MOD_RESULT)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!key)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
-<a name="l00263"></a>00263 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> NULL;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
-<a name="l00271"></a>00271 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 MOD_RESULT = 0;
+Definition at line <a class="el" href="channels_8cpp-source.html#l00194">194</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00151">chanrec::bans</a>, <a class="el" href="channels_8h-source.html#l00147">chanrec::binarymodes</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="channels_8h-source.html#l00028">CM_INVITEONLY</a>, <a class="el" href="channels_8h-source.html#l00027">CM_NOEXTERNAL</a>, <a class="el" href="channels_8h-source.html#l00026">CM_TOPICLOCK</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00099">userrec::GetFullHost()</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="users_8cpp-source.html#l00123">userrec::IsInvited()</a>, <a class="el" href="channels_8h-source.html#l00143">chanrec::key</a>, <a class="el" href="channels_8h-source.html#l00138">chanrec::limit</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00151">userrec::modes</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00363">Server::JoinUserToChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> ((!user) || (!cn))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** add_channel was given an invalid parameter"</span>);
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keywordtype">int</span> created = 0;
+<a name="l00203"></a>00203 <span class="keywordtype">char</span> cname[MAXBUF];
+<a name="l00204"></a>00204 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00205"></a>00205 strncpy(cname,cn,CHANMAX);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,cname);
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(cname);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (!Ptr)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 MOD_RESULT = 0;
+<a name="l00216"></a>00216 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,NULL,cname));
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> NULL;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="comment">/* create a new one */</span>
+<a name="l00221"></a>00221 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname] = <span class="keyword">new</span> <a class="code" href="classchanrec.html">chanrec</a>();
+<a name="l00222"></a>00222 strlcpy(chanlist[cname]-&gt;name, cname,CHANMAX);
+<a name="l00223"></a>00223 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;binarymodes = <a class="code" href="channels_8h.html#CM_5FTOPICLOCK">CM_TOPICLOCK</a> | <a class="code" href="channels_8h.html#CM_5FNOEXTERNAL">CM_NOEXTERNAL</a>;
+<a name="l00224"></a>00224 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;created = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00225"></a>00225 strcpy(chanlist[cname]-&gt;topic, <span class="stringliteral">""</span>);
+<a name="l00226"></a>00226 strncpy(chanlist[cname]-&gt;setby, user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00227"></a>00227 <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname]-&gt;topicset = 0;
+<a name="l00228"></a>00228 Ptr = <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>[cname];
+<a name="l00229"></a>00229 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: created: %s"</span>,cname);
+<a name="l00230"></a>00230 <span class="comment">/* set created to 2 to indicate user</span>
+<a name="l00231"></a>00231 <span class="comment"> * is the first in the channel</span>
+<a name="l00232"></a>00232 <span class="comment"> * and should be given ops */</span>
+<a name="l00233"></a>00233 created = 2;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">else</span>
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 <span class="comment">/* Already on the channel */</span>
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel</a>(user,Ptr))
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> NULL;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// remote users are allowed us to bypass channel modes</span>
+<a name="l00242"></a>00242 <span class="comment">// and bans (used by servers)</span>
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 MOD_RESULT = 0;
+<a name="l00246"></a>00246 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreJoin(user,Ptr,cname));
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (MOD_RESULT == 1)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> NULL;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 <span class="keywordflow">else</span>
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (*Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>)
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 MOD_RESULT = 0;
+<a name="l00256"></a>00256 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckKey(user, Ptr, key ? key : <span class="stringliteral">""</span>));
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!MOD_RESULT)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!key)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: no key given in JOIN"</span>);
+<a name="l00262"></a>00262 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Requires key)"</span>,user-&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>);
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="keywordflow">else</span>
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (strcasecmp(key,Ptr-&gt;<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>))
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: bad key given in JOIN"</span>);
+<a name="l00270"></a>00270 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"475 %s %s :Cannot join channel (Incorrect key)"</span>,user-&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>);
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#binarymodes">binarymodes</a> &amp; <a class="code" href="channels_8h.html#CM_5FINVITEONLY">CM_INVITEONLY</a>)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 MOD_RESULT = 0;
+<a name="l00279"></a>00279 <a class="code" href="namespaceirc.html#string">irc::string</a> xname(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
<a name="l00280"></a>00280 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnCheckInvite(user, Ptr));
<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!MOD_RESULT)
<a name="l00282"></a>00282 {
<a name="l00283"></a>00283 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"add_channel: channel is +i"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>))
+<a name="l00284"></a>00284 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(xname))
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="comment">/* user was invited to channel */</span>
<a name="l00287"></a>00287 <span class="comment">/* there may be an optional channel NOTICE here */</span>
@@ -618,7 +619,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinU
<a name="l00292"></a>00292 <span class="keywordflow">return</span> NULL;
<a name="l00293"></a>00293 }
<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(Ptr-&gt;<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00295"></a>00295 user-&gt;<a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(xname);
<a name="l00296"></a>00296 }
<a name="l00297"></a>00297 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#limit">limit</a>)
<a name="l00298"></a>00298 {
@@ -749,9 +750,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00364">Server::JoinU
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00401">401</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
+References <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
+Referenced by <a class="el" href="modules_8cpp-source.html#l00368">Server::PartUserFromChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
<a name="l00403"></a>00403 <span class="keywordflow">if</span> ((!user) || (!cname))
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** del_channel was given an invalid parameter"</span>);
@@ -861,7 +862,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00369">Server::PartU
<p>
Definition at line <a class="el" href="channels_8cpp-source.html#l00459">459</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00030">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00089">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00153">userrec::server</a>, <a class="el" href="users_8h-source.html#l00030">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>, <a class="el" href="modules_8h-source.html#l00038">ACR_DENY</a>, <a class="el" href="channels_8cpp.html#chanlist">chanlist</a>, <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cstatus()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00031">DEFAULT</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>, <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00032">STATUS_HOP</a>, <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
<a name="l00461"></a>00461 <span class="keywordflow">if</span> ((!src) || (!user) || (!Ptr) || (!reason))
<a name="l00462"></a>00462 {
<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEFAULT">DEFAULT</a>,<span class="stringliteral">"*** BUG *** kick_channel was given an invalid parameter"</span>);
@@ -950,7 +951,7 @@ References <a class="el" href="modules_8h-source.html#l00040">AC_KICK</a>, <a cl
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/channels_8h__dep__incl.map b/docs/module-doc/channels_8h__dep__incl.map
index de7344cbf..4c89fda78 100644
--- a/docs/module-doc/channels_8h__dep__incl.map
+++ b/docs/module-doc/channels_8h__dep__incl.map
@@ -1,11 +1,11 @@
base referer
-rect $users_8cpp-source.html 407,83 487,109
-rect $users_8h-source.html 144,260 208,287
-rect $commands_8h-source.html 257,57 356,84
+rect $users_8cpp-source.html 665,311 745,337
+rect $users_8h-source.html 144,285 208,312
+rect $commands_8h-source.html 257,108 356,135
+rect $cull__list_8h-source.html 268,159 345,185
rect $globals_8h-source.html 269,209 344,236
-rect $typedefs_8h-source.html 404,235 489,261
-rect $inspircd_8h-source.html 267,108 347,135
-rect $cull__list_8h-source.html 268,311 345,337
-rect $message_8h-source.html 264,361 349,388
+rect $typedefs_8h-source.html 532,260 617,287
+rect $inspircd_8h-source.html 404,361 484,388
rect $mode_8h-source.html 273,412 340,439
-rect $xline_8h-source.html 276,463 337,489
+rect $message_8h-source.html 264,463 349,489
+rect $xline_8h-source.html 276,513 337,540
diff --git a/docs/module-doc/channels_8h__dep__incl.md5 b/docs/module-doc/channels_8h__dep__incl.md5
index 2578e8764..d9289d4a0 100644
--- a/docs/module-doc/channels_8h__dep__incl.md5
+++ b/docs/module-doc/channels_8h__dep__incl.md5
@@ -1 +1 @@
-de274c87a015c43131b3ccf72e93a260 \ No newline at end of file
+0f9059d2ac5956aa247c0791f634c13e \ No newline at end of file
diff --git a/docs/module-doc/classAdmin-members.html b/docs/module-doc/classAdmin-members.html
index 3771e8c94..bef9c92e2 100644
--- a/docs/module-doc/classAdmin-members.html
+++ b/docs/module-doc/classAdmin-members.html
@@ -13,7 +13,7 @@
<tr class="memlist"><td><a class="el" href="classAdmin.html#Name">Name</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classAdmin.html#Nick">Nick</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classAdmin.html b/docs/module-doc/classAdmin.html
index a6f132e7d..9662e530c 100644
--- a/docs/module-doc/classAdmin.html
+++ b/docs/module-doc/classAdmin.html
@@ -38,7 +38,7 @@ It is constructed by class <a class="el" href="classServer.html">Server</a>, and
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00125">125</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00143">143</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29"></a><!-- doxytag: member="Admin::Admin" ref="Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29" args="(std::string name, std::string email, std::string nick)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -81,7 +81,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00125">125</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00163"></a>00163 : <a class="code" href="classAdmin.html#Name">Name</a>(name), <a class="code" href="classAdmin.html#Email">Email</a>(email), <a class="code" href="classAdmin.html#Nick">Nick</a>(nick) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00162">162</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00162"></a>00162 : <a class="code" href="classAdmin.html#Name">Name</a>(name), <a class="code" href="classAdmin.html#Email">Email</a>(email), <a class="code" href="classAdmin.html#Nick">Nick</a>(nick) { };
</pre></div>
<p>
</td>
@@ -110,7 +110,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Name"></a><!-- doxytag: member="Admin::Name" ref="Name" args="" --><p>
@@ -135,7 +135,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Nick"></a><!-- doxytag: member="Admin::Nick" ref="Nick" args="" --><p>
@@ -160,12 +160,12 @@ Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00128">128</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00146">146</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classBanItem-members.html b/docs/module-doc/classBanItem-members.html
index c7d9059a9..68e1daf96 100644
--- a/docs/module-doc/classBanItem-members.html
+++ b/docs/module-doc/classBanItem-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classBanItem.html b/docs/module-doc/classBanItem.html
index 06957a4be..0712af481 100644
--- a/docs/module-doc/classBanItem.html
+++ b/docs/module-doc/classBanItem.html
@@ -30,7 +30,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00054">54</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classBoolSet-members.html b/docs/module-doc/classBoolSet-members.html
index 66273bbab..a5b2bf973 100644
--- a/docs/module-doc/classBoolSet-members.html
+++ b/docs/module-doc/classBoolSet-members.html
@@ -17,7 +17,7 @@
<tr class="memlist"><td><a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">operator|</a>(BoolSet other)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolSet.html#Set_28int_20number_29">Set</a>(int number)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classBoolSet.html#Unset_28int_20number_29">Unset</a>(int number)</td><td><a class="el" href="classBoolSet.html">BoolSet</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classBoolSet.html b/docs/module-doc/classBoolSet.html
index b88883b5e..a6f782227 100644
--- a/docs/module-doc/classBoolSet.html
+++ b/docs/module-doc/classBoolSet.html
@@ -405,7 +405,7 @@ Definition at line <a class="el" href="base_8h-source.html#l00106">106</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classConfigReader-members.html b/docs/module-doc/classConfigReader-members.html
index 2dfac88f7..2704d05d5 100644
--- a/docs/module-doc/classConfigReader-members.html
+++ b/docs/module-doc/classConfigReader-members.html
@@ -24,7 +24,7 @@
<tr class="memlist"><td><a class="el" href="classConfigReader.html#Verify_28_29">Verify</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classConfigReader.html b/docs/module-doc/classConfigReader.html
index 88ea934ac..c4d459fb9 100644
--- a/docs/module-doc/classConfigReader.html
+++ b/docs/module-doc/classConfigReader.html
@@ -73,7 +73,7 @@ It may either be instantiated with one parameter or none. Constructing the class
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01532">1532</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01550">1550</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ConfigReader_28_29"></a><!-- doxytag: member="ConfigReader::ConfigReader" ref="ConfigReader_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -102,16 +102,16 @@ Default constructor.
<p>
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00736">736</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00735">735</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01523">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00737"></a>00737 {
-<a name="l00738"></a>00738 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00739"></a>00739 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00740"></a>00740 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00741"></a>00741 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
-<a name="l00742"></a>00742 <span class="keywordflow">if</span> (!this-&gt;readerror)
-<a name="l00743"></a>00743 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>;
-<a name="l00744"></a>00744 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01541">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00736"></a>00736 {
+<a name="l00737"></a>00737 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00738"></a>00738 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00739"></a>00739 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00740"></a>00740 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
+<a name="l00741"></a>00741 <span class="keywordflow">if</span> (!this-&gt;readerror)
+<a name="l00742"></a>00742 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>;
+<a name="l00743"></a>00743 }
</pre></div>
<p>
</td>
@@ -146,16 +146,16 @@ Overloaded constructor.
<p>
This constructor initialises the ConfigReader class to read a user-specified config file
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00756">756</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00755">755</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01523">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00759"></a>00759 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00760"></a>00760 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00761"></a>00761 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(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>);
-<a name="l00762"></a>00762 <span class="keywordflow">if</span> (!this-&gt;readerror)
-<a name="l00763"></a>00763 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>;
-<a name="l00764"></a>00764 };
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig::ClearStack()</a>, <a class="el" href="modules_8h-source.html#l01541">CONF_FILE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">ServerConfig::LoadConf()</a>, and <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00756"></a>00756 {
+<a name="l00757"></a>00757 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00758"></a>00758 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00759"></a>00759 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00760"></a>00760 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(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>);
+<a name="l00761"></a>00761 <span class="keywordflow">if</span> (!this-&gt;readerror)
+<a name="l00762"></a>00762 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>;
+<a name="l00763"></a>00763 };
</pre></div>
<p>
</td>
@@ -189,14 +189,14 @@ Default destructor.
<p>
This method destroys the ConfigReader class.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00747">747</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00746">746</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="modules_8h-source.html#l01541">errorlog</a>.<div class="fragment"><pre class="fragment"><a name="l00748"></a>00748 {
-<a name="l00749"></a>00749 <span class="keywordflow">if</span> (this-&gt;cache)
-<a name="l00750"></a>00750 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l00751"></a>00751 <span class="keywordflow">if</span> (this-&gt;errorlog)
-<a name="l00752"></a>00752 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l00753"></a>00753 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="modules_8h-source.html#l01559">errorlog</a>.<div class="fragment"><pre class="fragment"><a name="l00747"></a>00747 {
+<a name="l00748"></a>00748 <span class="keywordflow">if</span> (this-&gt;cache)
+<a name="l00749"></a>00749 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (this-&gt;errorlog)
+<a name="l00751"></a>00751 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l00752"></a>00752 }
</pre></div>
<p>
</td>
@@ -241,38 +241,38 @@ Dumps the list of errors in a config file to an output location.
<p>
If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00835">835</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01541">errorlog</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00836"></a>00836 {
-<a name="l00837"></a>00837 <span class="keywordflow">if</span> (bail)
-<a name="l00838"></a>00838 {
-<a name="l00839"></a>00839 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());
-<a name="l00840"></a>00840 exit(0);
-<a name="l00841"></a>00841 }
-<a name="l00842"></a>00842 <span class="keywordflow">else</span>
-<a name="l00843"></a>00843 {
-<a name="l00844"></a>00844 <span class="keywordtype">char</span> dataline[1024];
-<a name="l00845"></a>00845 <span class="keywordflow">if</span> (user)
-<a name="l00846"></a>00846 {
-<a name="l00847"></a>00847 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00848"></a>00848 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
-<a name="l00851"></a>00851 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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);
-<a name="l00852"></a>00852 }
-<a name="l00853"></a>00853 }
-<a name="l00854"></a>00854 <span class="keywordflow">else</span>
-<a name="l00855"></a>00855 {
-<a name="l00856"></a>00856 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00857"></a>00857 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
-<a name="l00858"></a>00858 {
-<a name="l00859"></a>00859 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
-<a name="l00860"></a>00860 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
-<a name="l00861"></a>00861 }
-<a name="l00862"></a>00862 }
-<a name="l00863"></a>00863 <span class="keywordflow">return</span>;
-<a name="l00864"></a>00864 }
-<a name="l00865"></a>00865 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00834">834</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01559">errorlog</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00835"></a>00835 {
+<a name="l00836"></a>00836 <span class="keywordflow">if</span> (bail)
+<a name="l00837"></a>00837 {
+<a name="l00838"></a>00838 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());
+<a name="l00839"></a>00839 exit(0);
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841 <span class="keywordflow">else</span>
+<a name="l00842"></a>00842 {
+<a name="l00843"></a>00843 <span class="keywordtype">char</span> dataline[1024];
+<a name="l00844"></a>00844 <span class="keywordflow">if</span> (user)
+<a name="l00845"></a>00845 {
+<a name="l00846"></a>00846 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00847"></a>00847 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
+<a name="l00848"></a>00848 {
+<a name="l00849"></a>00849 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
+<a name="l00850"></a>00850 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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);
+<a name="l00851"></a>00851 }
+<a name="l00852"></a>00852 }
+<a name="l00853"></a>00853 <span class="keywordflow">else</span>
+<a name="l00854"></a>00854 {
+<a name="l00855"></a>00855 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00856"></a>00856 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
+<a name="l00857"></a>00857 {
+<a name="l00858"></a>00858 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
+<a name="l00859"></a>00859 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
+<a name="l00860"></a>00860 }
+<a name="l00861"></a>00861 }
+<a name="l00862"></a>00862 <span class="keywordflow">return</span>;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 }
</pre></div>
<p>
</td>
@@ -307,11 +307,11 @@ Counts the number of times a given tag appears in the config file.
<p>
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of <a class="el" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader::ReadValue</a> to loop through all copies of a multiple instance tag.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00868">868</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00867">867</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig::EnumConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00869"></a>00869 {
-<a name="l00870"></a>00870 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
-<a name="l00871"></a>00871 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig::EnumConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00868"></a>00868 {
+<a name="l00869"></a>00869 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
+<a name="l00870"></a>00870 }
</pre></div>
<p>
</td>
@@ -355,11 +355,11 @@ Returns the number of items within a tag.
<p>
For example if the tag was &lt;test tag="blah" data="foo"&gt; then this function would return 2. Spaces and newlines both qualify as valid seperators between values.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00873">873</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00872">872</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, and <a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">ServerConfig::EnumValues()</a>.<div class="fragment"><pre class="fragment"><a name="l00874"></a>00874 {
-<a name="l00875"></a>00875 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
-<a name="l00876"></a>00876 }
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, and <a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">ServerConfig::EnumValues()</a>.<div class="fragment"><pre class="fragment"><a name="l00873"></a>00873 {
+<a name="l00874"></a>00874 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
+<a name="l00875"></a>00875 }
</pre></div>
<p>
</td>
@@ -393,13 +393,13 @@ Returns the last error to occur.
<p>
Valid errors can be found by looking in <a class="el" href="modules_8h.html">modules.h</a>. Any nonzero value indicates an error condition. A call to <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> resets the error flag back to 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00828">828</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00827">827</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01545">error</a>.<div class="fragment"><pre class="fragment"><a name="l00829"></a>00829 {
-<a name="l00830"></a>00830 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l00831"></a>00831 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = 0;
-<a name="l00832"></a>00832 <span class="keywordflow">return</span> olderr;
-<a name="l00833"></a>00833 }
+References <a class="el" href="modules_8h-source.html#l01563">error</a>.<div class="fragment"><pre class="fragment"><a name="l00828"></a>00828 {
+<a name="l00829"></a>00829 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l00830"></a>00830 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = 0;
+<a name="l00831"></a>00831 <span class="keywordflow">return</span> olderr;
+<a name="l00832"></a>00832 }
</pre></div>
<p>
</td>
@@ -449,23 +449,23 @@ Retrieves a boolean value from the config file.
<p>
This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values "1", "yes" and "true" in the config file count as true to ReadFlag, and any other value counts as false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00782">782</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00783"></a>00783 {
-<a name="l00784"></a>00784 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00785"></a>00785 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00786"></a>00786 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00787"></a>00787 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00788"></a>00788 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00789"></a>00789 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00790"></a>00790 <span class="keywordflow">if</span> (!res)
-<a name="l00791"></a>00791 {
-<a name="l00792"></a>00792 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>;
-<a name="l00793"></a>00793 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00794"></a>00794 }
-<a name="l00795"></a>00795 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
-<a name="l00796"></a>00796 <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>));
-<a name="l00797"></a>00797 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00781">781</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00782"></a>00782 {
+<a name="l00783"></a>00783 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00784"></a>00784 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00785"></a>00785 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00786"></a>00786 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00787"></a>00787 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00788"></a>00788 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (!res)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 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>;
+<a name="l00792"></a>00792 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00793"></a>00793 }
+<a name="l00794"></a>00794 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
+<a name="l00795"></a>00795 <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>));
+<a name="l00796"></a>00796 }
</pre></div>
<p>
</td>
@@ -521,35 +521,35 @@ Retrieves an integer value from the config file.
<p>
This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and <a class="el" href="classConfigReader.html#GetError_28_29">GetError()</a> will return CONF_NOT_UNSIGNED
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00799">799</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01520">CONF_NOT_A_NUMBER</a>, <a class="el" href="modules_8h-source.html#l01521">CONF_NOT_UNSIGNED</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00802"></a>00802 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00803"></a>00803 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00804"></a>00804 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00805"></a>00805 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00806"></a>00806 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00807"></a>00807 <span class="keywordflow">if</span> (!res)
-<a name="l00808"></a>00808 {
-<a name="l00809"></a>00809 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>;
-<a name="l00810"></a>00810 <span class="keywordflow">return</span> 0;
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
-<a name="l00813"></a>00813 {
-<a name="l00814"></a>00814 <span class="keywordflow">if</span> (!isdigit(val[i]))
-<a name="l00815"></a>00815 {
-<a name="l00816"></a>00816 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>;
-<a name="l00817"></a>00817 <span class="keywordflow">return</span> 0;
-<a name="l00818"></a>00818 }
-<a name="l00819"></a>00819 }
-<a name="l00820"></a>00820 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
-<a name="l00821"></a>00821 {
-<a name="l00822"></a>00822 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>;
-<a name="l00823"></a>00823 <span class="keywordflow">return</span> 0;
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825 <span class="keywordflow">return</span> atoi(val);
-<a name="l00826"></a>00826 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00798">798</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01538">CONF_NOT_A_NUMBER</a>, <a class="el" href="modules_8h-source.html#l01539">CONF_NOT_UNSIGNED</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00799"></a>00799 {
+<a name="l00800"></a>00800 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00801"></a>00801 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00802"></a>00802 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00803"></a>00803 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00804"></a>00804 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00805"></a>00805 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00806"></a>00806 <span class="keywordflow">if</span> (!res)
+<a name="l00807"></a>00807 {
+<a name="l00808"></a>00808 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>;
+<a name="l00809"></a>00809 <span class="keywordflow">return</span> 0;
+<a name="l00810"></a>00810 }
+<a name="l00811"></a>00811 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
+<a name="l00812"></a>00812 {
+<a name="l00813"></a>00813 <span class="keywordflow">if</span> (!isdigit(val[i]))
+<a name="l00814"></a>00814 {
+<a name="l00815"></a>00815 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>;
+<a name="l00816"></a>00816 <span class="keywordflow">return</span> 0;
+<a name="l00817"></a>00817 }
+<a name="l00818"></a>00818 }
+<a name="l00819"></a>00819 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
+<a name="l00820"></a>00820 {
+<a name="l00821"></a>00821 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>;
+<a name="l00822"></a>00822 <span class="keywordflow">return</span> 0;
+<a name="l00823"></a>00823 }
+<a name="l00824"></a>00824 <span class="keywordflow">return</span> atoi(val);
+<a name="l00825"></a>00825 }
</pre></div>
<p>
</td>
@@ -599,22 +599,22 @@ Retrieves a value from the config file.
<p>
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00766">766</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01540">cache</a>, <a class="el" href="modules_8h-source.html#l01522">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01545">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00767"></a>00767 {
-<a name="l00768"></a>00768 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00769"></a>00769 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00770"></a>00770 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00771"></a>00771 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00772"></a>00772 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00773"></a>00773 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00774"></a>00774 <span class="keywordflow">if</span> (!res)
-<a name="l00775"></a>00775 {
-<a name="l00776"></a>00776 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>;
-<a name="l00777"></a>00777 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00778"></a>00778 }
-<a name="l00779"></a>00779 <span class="keywordflow">return</span> val;
-<a name="l00780"></a>00780 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00765">765</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01558">cache</a>, <a class="el" href="modules_8h-source.html#l01540">CONF_VALUE_NOT_FOUND</a>, <a class="el" href="modules_8h-source.html#l01563">error</a>, and <a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ServerConfig::ReadConf()</a>.<div class="fragment"><pre class="fragment"><a name="l00766"></a>00766 {
+<a name="l00767"></a>00767 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00768"></a>00768 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00769"></a>00769 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00770"></a>00770 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00771"></a>00771 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> res = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00773"></a>00773 <span class="keywordflow">if</span> (!res)
+<a name="l00774"></a>00774 {
+<a name="l00775"></a>00775 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>;
+<a name="l00776"></a>00776 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00777"></a>00777 }
+<a name="l00778"></a>00778 <span class="keywordflow">return</span> val;
+<a name="l00779"></a>00779 }
</pre></div>
<p>
</td>
@@ -648,11 +648,11 @@ Returns true if a config file is valid.
<p>
This method is partially implemented and will only return false if the config file does not exist or could not be opened.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00878">878</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00877">877</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01544">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00879"></a>00879 {
-<a name="l00880"></a>00880 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l00881"></a>00881 }
+References <a class="el" href="modules_8h-source.html#l01562">readerror</a>.<div class="fragment"><pre class="fragment"><a name="l00878"></a>00878 {
+<a name="l00879"></a>00879 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l00880"></a>00880 }
</pre></div>
<p>
</td>
@@ -683,9 +683,9 @@ The contents of the configuration file This protected member should never be acc
<p>
It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01540">1540</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01558">1558</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00868">Enumerate()</a>, <a class="el" href="modules_8cpp-source.html#l00873">EnumerateValues()</a>, <a class="el" href="modules_8cpp-source.html#l00782">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ReadInteger()</a>, <a class="el" href="modules_8cpp-source.html#l00766">ReadValue()</a>, and <a class="el" href="modules_8cpp-source.html#l00747">~ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00867">Enumerate()</a>, <a class="el" href="modules_8cpp-source.html#l00872">EnumerateValues()</a>, <a class="el" href="modules_8cpp-source.html#l00781">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ReadInteger()</a>, <a class="el" href="modules_8cpp-source.html#l00765">ReadValue()</a>, and <a class="el" href="modules_8cpp-source.html#l00746">~ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="error"></a><!-- doxytag: member="ConfigReader::error" ref="error" args="" --><p>
@@ -710,9 +710,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader(
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01545">1545</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01563">1563</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00828">GetError()</a>, <a class="el" href="modules_8cpp-source.html#l00782">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00827">GetError()</a>, <a class="el" href="modules_8cpp-source.html#l00781">ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ReadValue()</a>. </td>
</tr>
</table>
<a class="anchor" name="errorlog"></a><!-- doxytag: member="ConfigReader::errorlog" ref="errorlog" args="" --><p>
@@ -737,9 +737,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader(
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01541">1541</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01559">1559</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00835">DumpErrors()</a>, and <a class="el" href="modules_8cpp-source.html#l00747">~ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00834">DumpErrors()</a>, and <a class="el" href="modules_8cpp-source.html#l00746">~ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="readerror"></a><!-- doxytag: member="ConfigReader::readerror" ref="readerror" args="" --><p>
@@ -766,14 +766,14 @@ Used to store errors.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01544">1544</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01562">1562</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00878">Verify()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00877">Verify()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classConnectClass-members.html b/docs/module-doc/classConnectClass-members.html
index 611aad790..8c1fc24c2 100644
--- a/docs/module-doc/classConnectClass-members.html
+++ b/docs/module-doc/classConnectClass-members.html
@@ -19,7 +19,7 @@
<tr class="memlist"><td><a class="el" href="classConnectClass.html#threshold">threshold</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classConnectClass.html#type">type</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classConnectClass.html b/docs/module-doc/classConnectClass.html
index 181775c1e..16a2a19a1 100644
--- a/docs/module-doc/classConnectClass.html
+++ b/docs/module-doc/classConnectClass.html
@@ -57,7 +57,7 @@ Holds information relevent to &lt;connect allow&gt; and &lt;connect deny&gt; tag
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00048">48</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00052">52</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ConnectClass_28_29"></a><!-- doxytag: member="ConnectClass::ConnectClass" ref="ConnectClass_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -84,18 +84,18 @@ Definition at line <a class="el" href="users_8h-source.html#l00048">48</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00082">82</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00059">flood</a>, <a class="el" href="users_8h-source.html#l00062">host</a>, <a class="el" href="users_8h-source.html#l00068">pass</a>, <a class="el" href="users_8h-source.html#l00065">pingtime</a>, <a class="el" href="users_8h-source.html#l00080">recvqmax</a>, <a class="el" href="users_8h-source.html#l00056">registration_timeout</a>, <a class="el" href="users_8h-source.html#l00076">sendqmax</a>, and <a class="el" href="users_8h-source.html#l00072">threshold</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
-<a name="l00085"></a>00085 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
-<a name="l00086"></a>00086 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
-<a name="l00087"></a>00087 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
-<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
-<a name="l00090"></a>00090 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00091"></a>00091 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00092"></a>00092 }
+Definition at line <a class="el" href="users_8h-source.html#l00086">86</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00063">flood</a>, <a class="el" href="users_8h-source.html#l00066">host</a>, <a class="el" href="users_8h-source.html#l00072">pass</a>, <a class="el" href="users_8h-source.html#l00069">pingtime</a>, <a class="el" href="users_8h-source.html#l00084">recvqmax</a>, <a class="el" href="users_8h-source.html#l00060">registration_timeout</a>, <a class="el" href="users_8h-source.html#l00080">sendqmax</a>, and <a class="el" href="users_8h-source.html#l00076">threshold</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
+<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
+<a name="l00090"></a>00090 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
+<a name="l00091"></a>00091 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
+<a name="l00094"></a>00094 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00095"></a>00095 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00096"></a>00096 }
</pre></div>
<p>
</td>
@@ -126,9 +126,9 @@ Number of lines in buffer before excess flood is triggered.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00059">59</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00063">63</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5BMAXBUF_5D"></a><!-- doxytag: member="ConnectClass::host" ref="host_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -155,9 +155,9 @@ Host mask for this line.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00062">62</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00066">66</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="pass_5BMAXBUF_5D"></a><!-- doxytag: member="ConnectClass::pass" ref="pass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -184,9 +184,9 @@ Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00068">68</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00072">72</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="pingtime"></a><!-- doxytag: member="ConnectClass::pingtime" ref="pingtime" args="" --><p>
@@ -213,9 +213,9 @@ Number of seconds between pings for this line.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00065">65</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00069">69</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="recvqmax"></a><!-- doxytag: member="ConnectClass::recvqmax" ref="recvqmax" args="" --><p>
@@ -242,9 +242,9 @@ Maximum size of recvq for users in this class (bytes).
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00080">80</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00084">84</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="registration_5Ftimeout"></a><!-- doxytag: member="ConnectClass::registration_timeout" ref="registration_5Ftimeout" args="" --><p>
@@ -271,9 +271,9 @@ Max time to register the connection in seconds.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00056">56</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00060">60</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendqmax"></a><!-- doxytag: member="ConnectClass::sendqmax" ref="sendqmax" args="" --><p>
@@ -300,9 +300,9 @@ Maximum size of sendq for users in this class (bytes).
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00076">76</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00080">80</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="threshold"></a><!-- doxytag: member="ConnectClass::threshold" ref="threshold" args="" --><p>
@@ -329,9 +329,9 @@ Threshold value for flood disconnect.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00072">72</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00076">76</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8h-source.html#l00082">ConnectClass()</a>. </td>
+Referenced by <a class="el" href="users_8h-source.html#l00086">ConnectClass()</a>. </td>
</tr>
</table>
<a class="anchor" name="type"></a><!-- doxytag: member="ConnectClass::type" ref="type" args="" --><p>
@@ -358,12 +358,12 @@ Type of line, either CC_ALLOW or CC_DENY.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00053">53</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00057">57</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classCullItem-members.html b/docs/module-doc/classCullItem-members.html
index caf670396..60281b373 100644
--- a/docs/module-doc/classCullItem-members.html
+++ b/docs/module-doc/classCullItem-members.html
@@ -11,7 +11,7 @@
<tr class="memlist"><td><a class="el" href="classCullItem.html#GetUser_28_29">GetUser</a>()</td><td><a class="el" href="classCullItem.html">CullItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCullItem.html#reason">reason</a></td><td><a class="el" href="classCullItem.html">CullItem</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCullItem.html#user">user</a></td><td><a class="el" href="classCullItem.html">CullItem</a></td><td><code> [private]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classCullItem.html b/docs/module-doc/classCullItem.html
index 238f45a7a..541769237 100644
--- a/docs/module-doc/classCullItem.html
+++ b/docs/module-doc/classCullItem.html
@@ -201,7 +201,7 @@ Definition at line <a class="el" href="cull__list_8h-source.html#l00042">42</a>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="cull__list_8h-source.html">cull_list.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classCullList-members.html b/docs/module-doc/classCullList-members.html
index 2fdf261b6..0f08fc877 100644
--- a/docs/module-doc/classCullList-members.html
+++ b/docs/module-doc/classCullList-members.html
@@ -11,7 +11,7 @@
<tr class="memlist"><td><a class="el" href="classCullList.html#CullList_28_29">CullList</a>()</td><td><a class="el" href="classCullList.html">CullList</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classCullList.html#exempt">exempt</a></td><td><a class="el" href="classCullList.html">CullList</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classCullList.html#list">list</a></td><td><a class="el" href="classCullList.html">CullList</a></td><td><code> [private]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classCullList.html b/docs/module-doc/classCullList.html
index 23176ef93..c06db2050 100644
--- a/docs/module-doc/classCullList.html
+++ b/docs/module-doc/classCullList.html
@@ -201,7 +201,7 @@ Definition at line <a class="el" href="cull__list_8h-source.html#l00082">82</a>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="cull__list_8h-source.html">cull_list.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classDNS-members.html b/docs/module-doc/classDNS-members.html
index c69edea68..3bc4ec782 100644
--- a/docs/module-doc/classDNS-members.html
+++ b/docs/module-doc/classDNS-members.html
@@ -36,7 +36,7 @@
<tr class="memlist"><td><a class="el" href="classDNS.html#SetNS_28std_3A_3Astring_20dnsserver_29">SetNS</a>(std::string dnsserver)</td><td><a class="el" href="classDNS.html">DNS</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classDNS.html#t">t</a></td><td><a class="el" href="classDNS.html">DNS</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classDNS.html#_7EDNS_28_29">~DNS</a>()</td><td><a class="el" href="classDNS.html">DNS</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classDNS.html b/docs/module-doc/classDNS.html
index c9ce09783..df244b836 100644
--- a/docs/module-doc/classDNS.html
+++ b/docs/module-doc/classDNS.html
@@ -961,7 +961,7 @@ Definition at line <a class="el" href="dns_8h-source.html#l00041">41</a> of file
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="dns_8h-source.html">dns.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classELine-members.html b/docs/module-doc/classELine-members.html
index bae6a2915..c5b8dbfb4 100644
--- a/docs/module-doc/classELine-members.html
+++ b/docs/module-doc/classELine-members.html
@@ -15,7 +15,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classELine.html b/docs/module-doc/classELine.html
index 40d87e692..66aa9f5e0 100644
--- a/docs/module-doc/classELine.html
+++ b/docs/module-doc/classELine.html
@@ -59,7 +59,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00093">93</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classEvent-members.html b/docs/module-doc/classEvent-members.html
index c69a63474..1a25d8f6d 100644
--- a/docs/module-doc/classEvent-members.html
+++ b/docs/module-doc/classEvent-members.html
@@ -18,7 +18,7 @@
<tr class="memlist"><td><a class="el" href="classEvent.html#source">source</a></td><td><a class="el" href="classEvent.html">Event</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classEvent.html b/docs/module-doc/classEvent.html
index 56a41deab..a24c1a04d 100644
--- a/docs/module-doc/classEvent.html
+++ b/docs/module-doc/classEvent.html
@@ -57,7 +57,7 @@ When the class is properly instantiated it may be sent to all modules using the
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00197">197</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00215">215</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29"></a><!-- doxytag: member="Event::Event" ref="Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29" args="(char *anydata, Module *src, std::string eventid)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -102,7 +102,7 @@ Create a new Event.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00194">194</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00194"></a>00194 : <a class="code" href="classEvent.html#data">data</a>(anydata), <a class="code" href="classEvent.html#source">source</a>(src), <a class="code" href="classEvent.html#id">id</a>(eventid) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00193">193</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00193"></a>00193 : <a class="code" href="classEvent.html#data">data</a>(anydata), <a class="code" href="classEvent.html#source">source</a>(src), <a class="code" href="classEvent.html#id">id</a>(eventid) { };
</pre></div>
<p>
</td>
@@ -137,11 +137,11 @@ Get the Event data.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00196">196</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00195">195</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00202">data</a>.<div class="fragment"><pre class="fragment"><a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#data">data</a>;
-<a name="l00199"></a>00199 }
+References <a class="el" href="modules_8h-source.html#l00220">data</a>.<div class="fragment"><pre class="fragment"><a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#data">data</a>;
+<a name="l00198"></a>00198 }
</pre></div>
<p>
</td>
@@ -175,11 +175,11 @@ Get the event ID.
<p>
Use this to determine the event type for safe casting of the data
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00212">212</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00211">211</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00211">id</a>.<div class="fragment"><pre class="fragment"><a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#id">id</a>;
-<a name="l00215"></a>00215 }
+References <a class="el" href="modules_8h-source.html#l00229">id</a>.<div class="fragment"><pre class="fragment"><a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#id">id</a>;
+<a name="l00214"></a>00214 }
</pre></div>
<p>
</td>
@@ -213,11 +213,11 @@ Get the event Source.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00201">201</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00200">200</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00206">source</a>.<div class="fragment"><pre class="fragment"><a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#source">source</a>;
-<a name="l00204"></a>00204 }
+References <a class="el" href="modules_8h-source.html#l00224">source</a>.<div class="fragment"><pre class="fragment"><a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#source">source</a>;
+<a name="l00203"></a>00203 }
</pre></div>
<p>
</td>
@@ -253,12 +253,12 @@ The return result of an <a class="el" href="classEvent.html#Send_28_29">Event::S
<p>
Implements <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a>.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00206">206</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00205">205</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00081">FOREACH_MOD</a>.<div class="fragment"><pre class="fragment"><a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> NULL;
-<a name="l00210"></a>00210 }
+References <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>.<div class="fragment"><pre class="fragment"><a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+<a name="l00208"></a>00208 <span class="keywordflow">return</span> NULL;
+<a name="l00209"></a>00209 }
</pre></div>
<p>
</td>
@@ -289,9 +289,9 @@ This member holds a pointer to arbitary data set by the emitter of the message.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00202">202</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00220">220</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00196">GetData()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00195">GetData()</a>. </td>
</tr>
</table>
<a class="anchor" name="id"></a><!-- doxytag: member="Event::id" ref="id" args="" --><p>
@@ -318,9 +318,9 @@ The event identifier.
<p>
This is arbitary text which should be used to distinguish one type of event from another.
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00211">211</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00229">229</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00212">GetEventID()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00211">GetEventID()</a>. </td>
</tr>
</table>
<a class="anchor" name="source"></a><!-- doxytag: member="Event::source" ref="source" args="" --><p>
@@ -347,14 +347,14 @@ This is a pointer to the sender of the message, which can be used to directly tr
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00206">206</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00224">224</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00201">GetSource()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00200">GetSource()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExemptItem-members.html b/docs/module-doc/classExemptItem-members.html
index 53aa957e0..60077cf32 100644
--- a/docs/module-doc/classExemptItem-members.html
+++ b/docs/module-doc/classExemptItem-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExemptItem.html b/docs/module-doc/classExemptItem.html
index 289ab1249..882fec433 100644
--- a/docs/module-doc/classExemptItem.html
+++ b/docs/module-doc/classExemptItem.html
@@ -30,7 +30,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00062">62</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExtMode-members.html b/docs/module-doc/classExtMode-members.html
index cacf87d7c..b59f12b91 100644
--- a/docs/module-doc/classExtMode-members.html
+++ b/docs/module-doc/classExtMode-members.html
@@ -16,7 +16,7 @@
<tr class="memlist"><td><a class="el" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classExtMode.html#type">type</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExtMode.html b/docs/module-doc/classExtMode.html
index 8b50f1182..43f8ce478 100644
--- a/docs/module-doc/classExtMode.html
+++ b/docs/module-doc/classExtMode.html
@@ -44,7 +44,7 @@ Used internally by <a class="el" href="modules_8cpp.html">modules.cpp</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00236">236</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00254">254</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29"></a><!-- doxytag: member="ExtMode::ExtMode" ref="ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29" args="(char mc, int ty, bool oper, int p_on, int p_off)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -99,7 +99,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00236">236</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00245">245</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 : <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) { };
+Definition at line <a class="el" href="modules_8h-source.html#l00263">263</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 : <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) { };
</pre></div>
<p>
</td>
@@ -128,7 +128,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00245">245</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00244">244</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00262">262</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="modechar"></a><!-- doxytag: member="ExtMode::modechar" ref="modechar" args="" --><p>
@@ -153,7 +153,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00244">244</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00239">239</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00257">257</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="needsoper"></a><!-- doxytag: member="ExtMode::needsoper" ref="needsoper" args="" --><p>
@@ -178,7 +178,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00239">239</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00241">241</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00259">259</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="params_5Fwhen_5Foff"></a><!-- doxytag: member="ExtMode::params_when_off" ref="params_5Fwhen_5Foff" args="" --><p>
@@ -203,7 +203,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00241">241</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00243">243</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00261">261</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="params_5Fwhen_5Fon"></a><!-- doxytag: member="ExtMode::params_when_on" ref="params_5Fwhen_5Fon" args="" --><p>
@@ -228,7 +228,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00243">243</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00242">242</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00260">260</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="type"></a><!-- doxytag: member="ExtMode::type" ref="type" args="" --><p>
@@ -253,12 +253,12 @@ Definition at line <a class="el" href="modules_8h-source.html#l00242">242</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00240">240</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00258">258</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExtensible-members.html b/docs/module-doc/classExtensible-members.html
index b5b8b6f26..1d123e935 100644
--- a/docs/module-doc/classExtensible-members.html
+++ b/docs/module-doc/classExtensible-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classExtensible.html#GetExtList_28std_3A_3Adeque_3C_20std_3A_3Astring_20_3E_20_26list_29">GetExtList</a>(std::deque&lt; std::string &gt; &amp;list)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExtensible.html b/docs/module-doc/classExtensible.html
index ada843501..7c0c14d12 100644
--- a/docs/module-doc/classExtensible.html
+++ b/docs/module-doc/classExtensible.html
@@ -13,10 +13,9 @@
Inheritance diagram for Extensible:<p><center><img src="classExtensible__inherit__graph.gif" border="0" usemap="#Extensible__inherit__map" alt="Inheritance graph"></center>
<map name="Extensible__inherit__map">
<area href="classchanrec.html" shape="rect" coords="7,156,76,183" alt="">
-<area href="classcommand__t.html" shape="rect" coords="100,156,191,183" alt="">
-<area href="classconnection.html" shape="rect" coords="215,156,300,183" alt="">
-<area href="classclassbase.html" shape="rect" coords="106,7,186,33" alt="">
-<area href="classuserrec.html" shape="rect" coords="224,231,291,257" alt="">
+<area href="classconnection.html" shape="rect" coords="100,156,185,183" alt="">
+<area href="classclassbase.html" shape="rect" coords="52,7,132,33" alt="">
+<area href="classuserrec.html" shape="rect" coords="109,231,176,257" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for Extensible:<p><center><img src="classExtensible__coll__graph.gif" border="0" usemap="#Extensible__coll__map" alt="Collaboration graph"></center>
<map name="Extensible__coll__map">
@@ -236,7 +235,7 @@ Definition at line <a class="el" href="base_8h-source.html#l00055">55</a> of fil
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classExtensible__inherit__graph.map b/docs/module-doc/classExtensible__inherit__graph.map
index 2b223b938..739ce8fc6 100644
--- a/docs/module-doc/classExtensible__inherit__graph.map
+++ b/docs/module-doc/classExtensible__inherit__graph.map
@@ -1,6 +1,5 @@
base referer
rect $classchanrec.html 7,156 76,183
-rect $classcommand__t.html 100,156 191,183
-rect $classconnection.html 215,156 300,183
-rect $classclassbase.html 106,7 186,33
-rect $classuserrec.html 224,231 291,257
+rect $classconnection.html 100,156 185,183
+rect $classclassbase.html 52,7 132,33
+rect $classuserrec.html 109,231 176,257
diff --git a/docs/module-doc/classExtensible__inherit__graph.md5 b/docs/module-doc/classExtensible__inherit__graph.md5
index fe7736291..461684372 100644
--- a/docs/module-doc/classExtensible__inherit__graph.md5
+++ b/docs/module-doc/classExtensible__inherit__graph.md5
@@ -1 +1 @@
-09c2299ecc297b4760a076747177ec6d \ No newline at end of file
+4a03bd45cd4754f0edff4e8a3bc20f54 \ No newline at end of file
diff --git a/docs/module-doc/classFileReader-members.html b/docs/module-doc/classFileReader-members.html
index 1ab48f288..fa06188ed 100644
--- a/docs/module-doc/classFileReader-members.html
+++ b/docs/module-doc/classFileReader-members.html
@@ -17,7 +17,7 @@
<tr class="memlist"><td><a class="el" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(std::string filename)</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>()</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classFileReader.html b/docs/module-doc/classFileReader.html
index e5a725a26..1a03b0cc1 100644
--- a/docs/module-doc/classFileReader.html
+++ b/docs/module-doc/classFileReader.html
@@ -53,7 +53,7 @@ This class contains methods for read-only manipulation of a text file in memory.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01621">1621</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01639">1639</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="FileReader_28_29"></a><!-- doxytag: member="FileReader::FileReader" ref="FileReader_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -82,8 +82,8 @@ Default constructor.
<p>
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00891">891</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00892"></a>00892 {
-<a name="l00893"></a>00893 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00890">890</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00891"></a>00891 {
+<a name="l00892"></a>00892 }
</pre></div>
<p>
</td>
@@ -118,13 +118,13 @@ Secondary constructor.
<p>
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00884">884</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00883">883</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00885"></a>00885 {
-<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00887"></a>00887 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00888"></a>00888 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00889"></a>00889 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00884"></a>00884 {
+<a name="l00885"></a>00885 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00887"></a>00887 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00888"></a>00888 }
</pre></div>
<p>
</td>
@@ -158,8 +158,8 @@ Default destructor.
<p>
This deletes the memory allocated to the file.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00903">903</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00904"></a>00904 {
-<a name="l00905"></a>00905 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00902">902</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00903"></a>00903 {
+<a name="l00904"></a>00904 }
</pre></div>
<p>
</td>
@@ -194,18 +194,18 @@ Returns true if the file exists This function will return false if the file coul
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00907">907</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00908"></a>00908 {
-<a name="l00909"></a>00909 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
-<a name="l00910"></a>00910 {
-<a name="l00911"></a>00911 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-<a name="l00912"></a>00912 }
-<a name="l00913"></a>00913 <span class="keywordflow">else</span>
-<a name="l00914"></a>00914 {
-<a name="l00915"></a>00915 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-<a name="l00916"></a>00916 }
-<a name="l00917"></a>00917 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00906">906</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00907"></a>00907 {
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
+<a name="l00909"></a>00909 {
+<a name="l00910"></a>00910 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+<a name="l00911"></a>00911 }
+<a name="l00912"></a>00912 <span class="keywordflow">else</span>
+<a name="l00913"></a>00913 {
+<a name="l00914"></a>00914 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916 }
</pre></div>
<p>
</td>
@@ -239,11 +239,11 @@ Returns the size of the file in lines.
<p>
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00926">926</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00925">925</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00927"></a>00927 {
-<a name="l00928"></a>00928 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
-<a name="l00929"></a>00929 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00926"></a>00926 {
+<a name="l00927"></a>00927 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
+<a name="l00928"></a>00928 }
</pre></div>
<p>
</td>
@@ -278,13 +278,13 @@ Retrieve one line from the file.
<p>
This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00919">919</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00918">918</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00920"></a>00920 {
-<a name="l00921"></a>00921 <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()))
-<a name="l00922"></a>00922 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
-<a name="l00924"></a>00924 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>.<div class="fragment"><pre class="fragment"><a name="l00919"></a>00919 {
+<a name="l00920"></a>00920 <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()))
+<a name="l00921"></a>00921 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00922"></a>00922 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
+<a name="l00923"></a>00923 }
</pre></div>
<p>
</td>
@@ -319,13 +319,13 @@ Used to load a file.
<p>
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00895">895</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00894">894</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l01623">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00896"></a>00896 {
-<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00898"></a>00898 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00899"></a>00899 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00900"></a>00900 }
+References <a class="el" href="modules_8h-source.html#l01641">fc</a>, and <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile()</a>.<div class="fragment"><pre class="fragment"><a name="l00895"></a>00895 {
+<a name="l00896"></a>00896 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00898"></a>00898 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00899"></a>00899 }
</pre></div>
<p>
</td>
@@ -354,14 +354,14 @@ References <a class="el" href="modules_8h-source.html#l01623">fc</a>, and <a cla
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01623">1623</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01641">1641</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00907">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00884">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00926">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00919">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00895">LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00906">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00883">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00925">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00918">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00894">LoadFile()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classGLine-members.html b/docs/module-doc/classGLine-members.html
index 7c08537db..905169ec6 100644
--- a/docs/module-doc/classGLine-members.html
+++ b/docs/module-doc/classGLine-members.html
@@ -15,7 +15,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classGLine.html b/docs/module-doc/classGLine.html
index 1741041f4..2b60bc72a 100644
--- a/docs/module-doc/classGLine.html
+++ b/docs/module-doc/classGLine.html
@@ -62,7 +62,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00084">84</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classHostItem-members.html b/docs/module-doc/classHostItem-members.html
index 4ece9c4c0..5b1a97eb2 100644
--- a/docs/module-doc/classHostItem-members.html
+++ b/docs/module-doc/classHostItem-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classHostItem.html b/docs/module-doc/classHostItem.html
index f1a09c4ef..e74e080b6 100644
--- a/docs/module-doc/classHostItem.html
+++ b/docs/module-doc/classHostItem.html
@@ -186,7 +186,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00041">41</a> of
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInspIRCd-members.html b/docs/module-doc/classInspIRCd-members.html
index 5966c253a..e09871523 100644
--- a/docs/module-doc/classInspIRCd-members.html
+++ b/docs/module-doc/classInspIRCd-members.html
@@ -12,12 +12,17 @@
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(int argc, char **argv)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(const char *filename)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#ModeGrok">ModeGrok</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#Parser">Parser</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#Run_28_29">Run</a>()</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#SE">SE</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#startup_5Ftime">startup_time</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspIRCd.html#stats">stats</a></td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(const char *filename)</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInspIRCd.html b/docs/module-doc/classInspIRCd.html
index 26e293181..da2a2b697 100644
--- a/docs/module-doc/classInspIRCd.html
+++ b/docs/module-doc/classInspIRCd.html
@@ -8,9 +8,16 @@
<h1>InspIRCd Class Reference</h1><!-- doxytag: class="InspIRCd" --><code>#include &lt;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&gt;</code>
<p>
Collaboration diagram for InspIRCd:<p><center><img src="classInspIRCd__coll__graph.gif" border="0" usemap="#InspIRCd__coll__map" alt="Collaboration graph"></center>
+<map name="InspIRCd__coll__map">
+<area href="classSocketEngine.html" shape="rect" coords="22,10,126,36" alt="">
+<area href="classserverstats.html" shape="rect" coords="30,212,118,239" alt="">
+<area href="classModeParser.html" shape="rect" coords="27,263,120,290" alt="">
+</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classInspIRCd-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a> ()</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a> ()</td></tr>
@@ -28,6 +35,14 @@ Collaboration diagram for InspIRCd:<p><center><img src="classInspIRCd__coll__gra
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#startup_5Ftime">startup_time</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classModeParser.html">ModeParser</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#ModeGrok">ModeGrok</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">CommandParser *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#Parser">Parser</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#SE">SE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classserverstats.html">serverstats</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#stats">stats</a></td></tr>
+
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a> (int j)</td></tr>
@@ -42,7 +57,7 @@ Collaboration diagram for InspIRCd:<p><center><img src="classInspIRCd__coll__gra
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00095">95</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29"></a><!-- doxytag: member="InspIRCd::InspIRCd" ref="InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29" args="(int argc, char **argv)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -190,7 +205,7 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00095">95</a> of
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00329">Server::GetVersion()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00328">Server::GetVersion()</a>. </td>
</tr>
</table>
<a class="anchor" name="LoadModule_28const_20char_20_2Afilename_29"></a><!-- doxytag: member="InspIRCd::LoadModule" ref="LoadModule_28const_20char_20_2Afilename_29" args="(const char *filename)" --><p>
@@ -221,6 +236,33 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00329">Server::GetVe
</td>
</tr>
</table>
+<a class="anchor" name="MakeLowerMap_28_29"></a><!-- doxytag: member="InspIRCd::MakeLowerMap" ref="MakeLowerMap_28_29" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void InspIRCd::MakeLowerMap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
<a class="anchor" name="ModuleError_28_29"></a><!-- doxytag: member="InspIRCd::ModuleError" ref="ModuleError_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -304,6 +346,33 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00329">Server::GetVe
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="ModeGrok"></a><!-- doxytag: member="InspIRCd::ModeGrok" ref="ModeGrok" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classModeParser.html">ModeParser</a>* <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd::ModeGrok</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00109">109</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00420">Server::SendMode()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="MODERR_5BMAXBUF_5D"></a><!-- doxytag: member="InspIRCd::MODERR" ref="MODERR_5BMAXBUF_5D" args="[MAXBUF]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -326,7 +395,61 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00329">Server::GetVe
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00103">103</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="Parser"></a><!-- doxytag: member="InspIRCd::Parser" ref="Parser" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">CommandParser* <a class="el" href="classInspIRCd.html#Parser">InspIRCd::Parser</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00110">110</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00415">Server::AddCommand()</a>, <a class="el" href="modules_8cpp-source.html#l00400">Server::CallCommandHandler()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="modules_8cpp-source.html#l00405">Server::IsValidModuleCommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="SE"></a><!-- doxytag: member="InspIRCd::SE" ref="SE" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="classInspIRCd.html#SE">InspIRCd::SE</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00111">111</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="startup_5Ftime"></a><!-- doxytag: member="InspIRCd::startup_time" ref="startup_5Ftime" args="" --><p>
@@ -351,12 +474,39 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00099">99</a> of
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00104">104</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00108">108</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="stats"></a><!-- doxytag: member="InspIRCd::stats" ref="stats" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classserverstats.html">serverstats</a>* <a class="el" href="classInspIRCd.html#stats">InspIRCd::stats</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00112">112</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd_8h-source.html">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInspIRCd__coll__graph.map b/docs/module-doc/classInspIRCd__coll__graph.map
index 5a14779e7..058bc0d1f 100644
--- a/docs/module-doc/classInspIRCd__coll__graph.map
+++ b/docs/module-doc/classInspIRCd__coll__graph.map
@@ -1 +1,4 @@
base referer
+rect $classSocketEngine.html 22,10 126,36
+rect $classserverstats.html 30,212 118,239
+rect $classModeParser.html 27,263 120,290
diff --git a/docs/module-doc/classInspIRCd__coll__graph.md5 b/docs/module-doc/classInspIRCd__coll__graph.md5
index 9b6b4f43b..f17fcfbb3 100644
--- a/docs/module-doc/classInspIRCd__coll__graph.md5
+++ b/docs/module-doc/classInspIRCd__coll__graph.md5
@@ -1 +1 @@
-cf2870df5188e9dd73f618305a399ded \ No newline at end of file
+117342ac51fed621fabeb5e75c73aa1b \ No newline at end of file
diff --git a/docs/module-doc/classInspSocket-members.html b/docs/module-doc/classInspSocket-members.html
index a828ac31e..eb9a03aa7 100644
--- a/docs/module-doc/classInspSocket-members.html
+++ b/docs/module-doc/classInspSocket-members.html
@@ -8,14 +8,16 @@
<h1>InspSocket Member List</h1>This is the complete list of members for <a class="el" href="classInspSocket.html">InspSocket</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#addr">addr</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#addy">addy</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#Buffer">Buffer</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#client">client</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#Close_28_29">Close</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#fd">fd</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetFd_28_29">GetFd</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetIP_28_29">GetIP</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#GetState_28_29">GetState</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#host">host</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">InspSocket</a>(int newfd, char *ip)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">InspSocket</a>(std::string host, int port, bool listening, unsigned long maxtime)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td></td></tr>
@@ -39,7 +41,7 @@
<tr class="memlist"><td><a class="el" href="classInspSocket.html#timeout_5Fend">timeout_end</a></td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(std::string data)</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>()</td><td><a class="el" href="classInspSocket.html">InspSocket</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInspSocket.html b/docs/module-doc/classInspSocket.html
index 315270d80..934175061 100644
--- a/docs/module-doc/classInspSocket.html
+++ b/docs/module-doc/classInspSocket.html
@@ -74,6 +74,10 @@ Collaboration diagram for InspSocket:<p><center><img src="classInspSocket__coll_
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor may implicitly call <a class="el" href="classInspSocket.html#OnClose_28_29">OnClose()</a>, and will close() and shutdown() the file descriptor used for this socket. <a href="#_7EInspSocket_28_29"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flushes the write buffer. <a href="#FlushWriteBuffer_28_29"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#fd">fd</a></td></tr>
@@ -99,9 +103,12 @@ Collaboration diagram for InspSocket:<p><center><img src="classInspSocket__coll_
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#timeout">timeout</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This value is true if the socket has timed out. <a href="#timeout"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a> [16384]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a> [65535]</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Socket input buffer, used by read(). <a href="#ibuf_5B_36_35_35_33_35_5D"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#Buffer">Buffer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Socket input buffer, used by read(). <a href="#ibuf_5B_31_36_33_38_34_5D"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output buffer for this socket. <a href="#Buffer"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInspSocket.html#IP">IP</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The IP address being connected to stored in string form for easy retrieval by accessors. <a href="#IP"></a><br></td></tr>
@@ -151,11 +158,11 @@ The default constructor does nothing and should not be used.
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00048">48</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00045">45</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
-<a name="l00051"></a>00051 }
+References <a class="el" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
+<a name="l00048"></a>00048 }
</pre></div>
<p>
</td>
@@ -199,15 +206,15 @@ This constructor is used to associate an existing connecting with an InspSocket
<p>
The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00053">53</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00050">50</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
-<a name="l00056"></a>00056 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
-<a name="l00057"></a>00057 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00058"></a>00058 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00059"></a>00059 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00060"></a>00060 }
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h-source.html#l00118">IP</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
+<a name="l00053"></a>00053 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
+<a name="l00054"></a>00054 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00055"></a>00055 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00056"></a>00056 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00057"></a>00057 }
</pre></div>
<p>
</td>
@@ -271,85 +278,85 @@ This constructor is used to create a new socket, either listening for connection
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00062">62</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="inspircd_8h-source.html#l00049">ERROR</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00113">IP</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (listening) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this-&gt;fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00068"></a>00068 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00069"></a>00069 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00070"></a>00070 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this-&gt;fd,this-&gt;client,this-&gt;server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00078"></a>00078 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00079"></a>00079 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00080"></a>00080 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
-<a name="l00081"></a>00081 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 <span class="keywordflow">else</span>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
-<a name="l00087"></a>00087 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00088"></a>00088 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00089"></a>00089 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span>;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span> {
-<a name="l00094"></a>00094 <span class="keywordtype">char</span>* ip;
-<a name="l00095"></a>00095 this-&gt;<a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>;
-<a name="l00096"></a>00096 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str());
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!hoste) {
-<a name="l00098"></a>00098 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str();
-<a name="l00099"></a>00099 } <span class="keywordflow">else</span> {
-<a name="l00100"></a>00100 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste-&gt;h_addr;
-<a name="l00101"></a>00101 ip = inet_ntoa(*ia);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
-<a name="l00107"></a>00107 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> ((this-&gt;fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00111"></a>00111 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00112"></a>00112 <span class="keywordflow">return</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 this-&gt;<a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>;
-<a name="l00115"></a>00115 inet_aton(ip,&amp;<a class="code" href="classInspSocket.html#addy">addy</a>);
-<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
-<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
-<a name="l00118"></a>00118 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this-&gt;port);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> flags;
-<a name="l00121"></a>00121 flags = fcntl(this-&gt;fd, F_GETFL, 0);
-<a name="l00122"></a>00122 fcntl(this-&gt;fd, F_SETFL, flags | O_NONBLOCK);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordflow">if</span>(connect(this-&gt;fd, (sockaddr*)&amp;this-&gt;addr,<span class="keyword">sizeof</span>(this-&gt;addr)) == -1)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (errno != EINPROGRESS)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00129"></a>00129 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
-<a name="l00130"></a>00130 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00131"></a>00131 <span class="keywordflow">return</span>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
-<a name="l00135"></a>00135 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00136"></a>00136 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00059">59</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00078">addr</a>, <a class="el" href="socket_8h-source.html#l00084">addy</a>, <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd_8h-source.html#l00051">ERROR</a>, <a class="el" href="socket_8h-source.html#l00054">fd</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00118">IP</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnError()</a>, <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (listening) {
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> ((this-&gt;fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00065"></a>00065 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00066"></a>00066 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00067"></a>00067 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">return</span>;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">else</span>
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this-&gt;fd,this-&gt;client,this-&gt;server,<a class="code" href="classInspSocket.html#port">port</a>,(<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00075"></a>00075 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00076"></a>00076 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00077"></a>00077 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
+<a name="l00078"></a>00078 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
+<a name="l00079"></a>00079 <span class="keywordflow">return</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">else</span>
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
+<a name="l00084"></a>00084 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00085"></a>00085 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00086"></a>00086 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
+<a name="l00087"></a>00087 <span class="keywordflow">return</span>;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 } <span class="keywordflow">else</span> {
+<a name="l00091"></a>00091 <span class="keywordtype">char</span>* ip;
+<a name="l00092"></a>00092 this-&gt;<a class="code" href="classInspSocket.html#host">host</a> = <a class="code" href="classInspSocket.html#host">host</a>;
+<a name="l00093"></a>00093 hostent* hoste = gethostbyname(<a class="code" href="classInspSocket.html#host">host</a>.c_str());
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!hoste) {
+<a name="l00095"></a>00095 ip = (<span class="keywordtype">char</span>*)<a class="code" href="classInspSocket.html#host">host</a>.c_str();
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
+<a name="l00097"></a>00097 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste-&gt;h_addr;
+<a name="l00098"></a>00098 ip = inet_ntoa(*ia);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
+<a name="l00104"></a>00104 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> ((this-&gt;fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00108"></a>00108 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00109"></a>00109 <span class="keywordflow">return</span>;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 this-&gt;<a class="code" href="classInspSocket.html#port">port</a> = <a class="code" href="classInspSocket.html#port">port</a>;
+<a name="l00112"></a>00112 inet_aton(ip,&amp;<a class="code" href="classInspSocket.html#addy">addy</a>);
+<a name="l00113"></a>00113 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
+<a name="l00114"></a>00114 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
+<a name="l00115"></a>00115 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this-&gt;port);
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">int</span> flags;
+<a name="l00118"></a>00118 flags = fcntl(this-&gt;fd, F_GETFL, 0);
+<a name="l00119"></a>00119 fcntl(this-&gt;fd, F_SETFL, flags | O_NONBLOCK);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordflow">if</span>(connect(this-&gt;fd, (sockaddr*)&amp;this-&gt;addr,<span class="keyword">sizeof</span>(this-&gt;addr)) == -1)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (errno != EINPROGRESS)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00126"></a>00126 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
+<a name="l00127"></a>00127 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
+<a name="l00132"></a>00132 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00133"></a>00133 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
</pre></div>
<p>
</td>
@@ -383,11 +390,11 @@ The destructor may implicitly call <a class="el" href="classInspSocket.html#OnCl
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00272">272</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00271">271</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00275"></a>00275 }
+References <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00274"></a>00274 }
</pre></div>
<p>
</td>
@@ -422,20 +429,71 @@ This method causes the socket to close, and may also be triggered by other metho
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00141">141</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00138">138</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00269">OnClose()</a>.
+<p>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00271">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (this-&gt;fd != -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 this-&gt;<a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00143"></a>00143 shutdown(this-&gt;fd,2);
+<a name="l00144"></a>00144 close(this-&gt;fd);
+<a name="l00145"></a>00145 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
+<a name="l00146"></a>00146 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FlushWriteBuffer_28_29"></a><!-- doxytag: member="InspSocket::FlushWriteBuffer" ref="FlushWriteBuffer_28_29" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void InspSocket::FlushWriteBuffer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Flushes the write buffer.
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00181">181</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00054">fd</a>, and <a class="el" href="socket_8cpp-source.html#l00270">OnClose()</a>.
+References <a class="el" href="socket_8h-source.html#l00111">Buffer</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00272">~InspSocket()</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (this-&gt;fd != -1)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 this-&gt;<a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00146"></a>00146 shutdown(this-&gt;fd,2);
-<a name="l00147"></a>00147 close(this-&gt;fd);
-<a name="l00148"></a>00148 <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
-<a name="l00149"></a>00149 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>, and <a class="el" href="socket_8cpp-source.html#l00174">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordtype">int</span> result = 0;
+<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this-&gt;Buffer.length())
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 result = send(this-&gt;fd,this-&gt;Buffer.c_str(),this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a>.length(),0);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (result &gt; 0)
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="comment">/* If we wrote some, advance the buffer forwards */</span>
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* n = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a>.c_str();
+<a name="l00191"></a>00191 n += result;
+<a name="l00192"></a>00192 this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> = n;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 }
</pre></div>
<p>
</td>
@@ -469,11 +527,11 @@ This method returns the socket's file descriptor as assigned by the operating sy
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00259">259</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00258">258</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>;
-<a name="l00262"></a>00262 }
+References <a class="el" href="socket_8h-source.html#l00054">fd</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>;
+<a name="l00261"></a>00261 }
</pre></div>
<p>
</td>
@@ -507,11 +565,11 @@ Returns the IP address associated with this connection, or an empty string if no
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00153">153</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00150">150</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00113">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00156"></a>00156 }
+References <a class="el" href="socket_8h-source.html#l00118">IP</a>.<div class="fragment"><pre class="fragment"><a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00153"></a>00153 }
</pre></div>
<p>
</td>
@@ -545,11 +603,11 @@ Returns the current socket state.
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00254">254</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00253">253</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#state">state</a>;
-<a name="l00257"></a>00257 }
+References <a class="el" href="socket_8h-source.html#l00072">state</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#state">state</a>;
+<a name="l00256"></a>00256 }
</pre></div>
<p>
</td>
@@ -583,9 +641,9 @@ Whenever close() is called, <a class="el" href="classInspSocket.html#OnClose_28_
<p>
Please note that this means OnClose will be called alongside <a class="el" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError()</a>, <a class="el" href="classInspSocket.html#OnTimeout_28_29">OnTimeout()</a>, and <a class="el" href="classInspSocket.html#Close_28_29">Close()</a>, and also when cancelling a listening socket by calling the destructor indirectly.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00270">270</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
@@ -620,9 +678,9 @@ This method is called when an outbound connection on your socket is completed.
<dl compact><dt><b>Returns:</b></dt><dd>false to abort the connection, true to continue</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00263">263</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>
</td>
@@ -657,9 +715,9 @@ When there is data waiting to be read on a socket, the <a class="el" href="class
Within this method, you *MUST* call the <a class="el" href="classInspSocket.html#Read_28_29">Read()</a> method to read any pending data. At its lowest level, this event is signalled by the core via the socket engine. If you return false from this function, the core removes your socket from its list and erases it from the socket engine, then calls <a class="el" href="classInspSocket.html#Close_28_29">InspSocket::Close()</a> and deletes it. <dl compact><dt><b>Returns:</b></dt><dd>false to close the socket</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00268">268</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>
</td>
@@ -693,7 +751,7 @@ When an established connection is terminated, the OnDisconnect method is trigger
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
@@ -733,9 +791,9 @@ A closed socket in itself is not an error, however errors also generate close ev
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00265">265</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00264">264</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
@@ -781,9 +839,9 @@ Given the new file descriptor in the parameters, and the IP, it is recommended y
MySocket* newsocket = new MySocket(newfd,ip);<p>
Once you have done this, you can then associate the new socket with the core using <a class="el" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">Server::AddSocket()</a>.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00267">267</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00266">266</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
@@ -817,9 +875,9 @@ When an outbound connection fails, and the attempt times out, you will receive t
<p>
The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00269">269</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00268">268</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span>; }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span>; }
</pre></div>
<p>
</td>
@@ -853,37 +911,37 @@ Only the core should call this function.
<p>
When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00217">217</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00119">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00131">length</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00268">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00267">OnIncomingConnection()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keywordtype">int</span> incoming = -1;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (this-&gt;state)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
-<a name="l00224"></a>00224 this-&gt;<a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
-<a name="l00225"></a>00225 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
-<a name="l00226"></a>00226 <span class="comment"> * in read-state.</span>
-<a name="l00227"></a>00227 <span class="comment"> */</span>
-<a name="l00228"></a>00228 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this-&gt;fd);
-<a name="l00229"></a>00229 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
-<a name="l00233"></a>00233 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
-<a name="l00234"></a>00234 incoming = accept (this-&gt;fd, (sockaddr*)&amp;<a class="code" href="classInspSocket.html#client">client</a>,&amp;<a class="code" href="classInspSocket.html#length">length</a>);
-<a name="l00235"></a>00235 this-&gt;<a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr));
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00237"></a>00237 <span class="keywordflow">break</span>;
-<a name="l00238"></a>00238 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00240"></a>00240 <span class="keywordflow">break</span>;
-<a name="l00241"></a>00241 <span class="keywordflow">default</span>:
-<a name="l00242"></a>00242 <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00246"></a>00246 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00216">216</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socket_8h-source.html#l00124">client</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>, <a class="el" href="socket_8h-source.html#l00136">length</a>, <a class="el" href="socket_8cpp-source.html#l00263">OnConnected()</a>, <a class="el" href="socket_8cpp-source.html#l00267">OnDataReady()</a>, <a class="el" href="socket_8cpp-source.html#l00266">OnIncomingConnection()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="socket_8cpp-source.html#l00247">SetState()</a>, and <a class="el" href="socketengine_8h-source.html#l00044">X_ESTAB_MODULE</a>.<div class="fragment"><pre class="fragment"><a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 <span class="keywordtype">int</span> incoming = -1;
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">switch</span> (this-&gt;state)
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
+<a name="l00223"></a>00223 this-&gt;<a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
+<a name="l00224"></a>00224 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
+<a name="l00225"></a>00225 <span class="comment"> * in read-state.</span>
+<a name="l00226"></a>00226 <span class="comment"> */</span>
+<a name="l00227"></a>00227 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this-&gt;fd);
+<a name="l00228"></a>00228 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00230"></a>00230 <span class="keywordflow">break</span>;
+<a name="l00231"></a>00231 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
+<a name="l00232"></a>00232 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
+<a name="l00233"></a>00233 incoming = accept (this-&gt;fd, (sockaddr*)&amp;<a class="code" href="classInspSocket.html#client">client</a>,&amp;<a class="code" href="classInspSocket.html#length">length</a>);
+<a name="l00234"></a>00234 this-&gt;<a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(<a class="code" href="classInspSocket.html#client">client</a>.sin_addr));
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">break</span>;
+<a name="l00237"></a>00237 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
+<a name="l00239"></a>00239 <span class="keywordflow">break</span>;
+<a name="l00240"></a>00240 <span class="keywordflow">default</span>:
+<a name="l00241"></a>00241 <span class="keywordflow">break</span>;
+<a name="l00242"></a>00242 }
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00245"></a>00245 }
</pre></div>
<p>
</td>
@@ -917,21 +975,21 @@ Reads all pending bytes from the socket into a char* array which can be up to 16
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00158">158</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00155">155</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00106">ibuf</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> n = recv(this-&gt;fd,this-&gt;ibuf,<span class="keyword">sizeof</span>(this-&gt;ibuf),0);
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (n &gt; 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0;
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 <span class="keywordflow">else</span>
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> NULL;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 }
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socket_8h-source.html#l00106">ibuf</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordtype">int</span> n = recv(this-&gt;fd,this-&gt;ibuf,<span class="keyword">sizeof</span>(this-&gt;ibuf),0);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (n &gt; 0)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[n] = 0;
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 <span class="keywordflow">else</span>
+<a name="l00164"></a>00164 {
+<a name="l00165"></a>00165 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> NULL;
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 }
</pre></div>
<p>
</td>
@@ -966,14 +1024,14 @@ Changes the socket's state.
<p>
The core uses this to change socket states, and you should not call it directly.
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00248">248</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+Definition at line <a class="el" href="socket_8cpp-source.html#l00247">247</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="socket_8h-source.html#l00072">state</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
-<a name="l00251"></a>00251 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = s;
-<a name="l00252"></a>00252 }
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
+<a name="l00250"></a>00250 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = s;
+<a name="l00251"></a>00251 }
</pre></div>
<p>
</td>
@@ -1009,23 +1067,25 @@ This function checks if the socket has timed out yet, given the current time in
<dl compact><dt><b>Returns:</b></dt><dd>true if timed out, false if not timed out</dd></dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00200">200</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
-<p>
-References <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00265">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00269">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((this-&gt;state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) &amp;&amp; (current &gt; <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// for non-listening sockets, the timeout can occur</span>
-<a name="l00205"></a>00205 <span class="comment">// which causes termination of the connection after</span>
-<a name="l00206"></a>00206 <span class="comment">// the given number of seconds without a successful</span>
-<a name="l00207"></a>00207 <span class="comment">// connection.</span>
-<a name="l00208"></a>00208 this-&gt;<a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
-<a name="l00209"></a>00209 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
-<a name="l00210"></a>00210 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
-<a name="l00211"></a>00211 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00215"></a>00215 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00197">197</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>, <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>, <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>, <a class="el" href="socket_8cpp-source.html#l00264">OnError()</a>, <a class="el" href="socket_8cpp-source.html#l00268">OnTimeout()</a>, <a class="el" href="socket_8h-source.html#l00072">state</a>, <a class="el" href="socket_8h-source.html#l00097">timeout</a>, and <a class="el" href="socket_8h-source.html#l00091">timeout_end</a>.<div class="fragment"><pre class="fragment"><a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> ((this-&gt;state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) &amp;&amp; (current &gt; <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="comment">// for non-listening sockets, the timeout can occur</span>
+<a name="l00202"></a>00202 <span class="comment">// which causes termination of the connection after</span>
+<a name="l00203"></a>00203 <span class="comment">// the given number of seconds without a successful</span>
+<a name="l00204"></a>00204 <span class="comment">// connection.</span>
+<a name="l00205"></a>00205 this-&gt;<a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00206"></a>00206 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
+<a name="l00207"></a>00207 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
+<a name="l00208"></a>00208 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (this-&gt;Buffer.length())
+<a name="l00212"></a>00212 this-&gt;<a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00214"></a>00214 }
</pre></div>
<p>
</td>
@@ -1065,27 +1125,13 @@ No carriage returns or linefeeds are appended to the string. <dl compact><dt><b>
</dl>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00177">177</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str();
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0;
-<a name="l00181"></a>00181 <span class="keywordtype">int</span> n = 0;
-<a name="l00182"></a>00182 <span class="keywordtype">int</span> s = data.length();
-<a name="l00183"></a>00183 <span class="keywordflow">while</span> ((written &lt; data.length()) &amp;&amp; (n &gt;= 0))
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 n = send(this-&gt;fd,d,s,0);
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (n &gt; 0)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="comment">// If we didnt write everything, advance</span>
-<a name="l00189"></a>00189 <span class="comment">// the pointers so that when we retry</span>
-<a name="l00190"></a>00190 <span class="comment">// the next time around the loop, we try</span>
-<a name="l00191"></a>00191 <span class="comment">// to write what we failed to write before.</span>
-<a name="l00192"></a>00192 written += n;
-<a name="l00193"></a>00193 s -= n;
-<a name="l00194"></a>00194 d += n;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> written;
-<a name="l00198"></a>00198 }
+Definition at line <a class="el" href="socket_8cpp-source.html#l00174">174</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>.
+<p>
+References <a class="el" href="socket_8h-source.html#l00111">Buffer</a>, and <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>.<div class="fragment"><pre class="fragment"><a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> = this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> + data;
+<a name="l00177"></a>00177 this-&gt;<a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> data.length();
+<a name="l00179"></a>00179 }
</pre></div>
<p>
</td>
@@ -1118,7 +1164,7 @@ The host being connected to, in sockaddr form.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00078">78</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="addy"></a><!-- doxytag: member="InspSocket::addy" ref="addy" args="" --><p>
@@ -1147,7 +1193,36 @@ The host being connected to, in in_addr form.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00084">84</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="Buffer"></a><!-- doxytag: member="InspSocket::Buffer" ref="Buffer" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classInspSocket.html#Buffer">InspSocket::Buffer</a><code> [private]</code> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The output buffer for this socket.
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8h-source.html#l00111">111</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+<p>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00181">FlushWriteBuffer()</a>, and <a class="el" href="socket_8cpp-source.html#l00174">Write()</a>. </td>
</tr>
</table>
<a class="anchor" name="client"></a><!-- doxytag: member="InspSocket::client" ref="client" args="" --><p>
@@ -1174,9 +1249,9 @@ Client sockaddr structure used by accept().
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00119">119</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00124">124</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="fd"></a><!-- doxytag: member="InspSocket::fd" ref="fd" args="" --><p>
@@ -1205,7 +1280,7 @@ The file descriptor of this socket.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00054">54</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00141">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00259">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00138">Close()</a>, <a class="el" href="socket_8cpp-source.html#l00258">GetFd()</a>, and <a class="el" href="socket_8cpp-source.html#l00050">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="host"></a><!-- doxytag: member="InspSocket::host" ref="host" args="" --><p>
@@ -1235,13 +1310,13 @@ The hostname connected to.
Definition at line <a class="el" href="socket_8h-source.html#l00059">59</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="ibuf_5B_31_36_33_38_34_5D"></a><!-- doxytag: member="InspSocket::ibuf" ref="ibuf_5B_31_36_33_38_34_5D" args="[16384]" --><p>
+<a class="anchor" name="ibuf_5B_36_35_35_33_35_5D"></a><!-- doxytag: member="InspSocket::ibuf" ref="ibuf_5B_36_35_35_33_35_5D" args="[65535]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket::ibuf</a>[16384]<code> [private]</code> </td>
+ <td class="md" nowrap valign="top">char <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket::ibuf</a>[65535]<code> [private]</code> </td>
</tr>
</table>
</td>
@@ -1257,11 +1332,11 @@ Definition at line <a class="el" href="socket_8h-source.html#l00059">59</a> of f
<p>
Socket input buffer, used by read().
<p>
-The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space.
+The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00106">106</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00158">Read()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00155">Read()</a>. </td>
</tr>
</table>
<a class="anchor" name="IP"></a><!-- doxytag: member="InspSocket::IP" ref="IP" args="" --><p>
@@ -1288,9 +1363,9 @@ The IP address being connected to stored in string form for easy retrieval by ac
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00113">113</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00118">118</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00153">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00053">InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00150">GetIP()</a>, and <a class="el" href="socket_8cpp-source.html#l00050">InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="length"></a><!-- doxytag: member="InspSocket::length" ref="length" args="" --><p>
@@ -1317,9 +1392,9 @@ Used by accept() to indicate the sizes of the sockaddr_in structures.
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00131">131</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
+Definition at line <a class="el" href="socket_8h-source.html#l00136">136</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00216">Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="port"></a><!-- doxytag: member="InspSocket::port" ref="port" args="" --><p>
@@ -1373,7 +1448,7 @@ Definition at line <a class="el" href="socket_8h-source.html#l00065">65</a> of f
<p>
<p>
-Definition at line <a class="el" href="socket_8h-source.html#l00125">125</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
+Definition at line <a class="el" href="socket_8h-source.html#l00130">130</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>. </td>
</tr>
</table>
<a class="anchor" name="state"></a><!-- doxytag: member="InspSocket::state" ref="state" args="" --><p>
@@ -1402,7 +1477,7 @@ The state for this socket, either listening, connecting, connected or error.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00072">72</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00254">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00048">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00248">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00253">GetState()</a>, <a class="el" href="socket_8cpp-source.html#l00045">InspSocket()</a>, <a class="el" href="socket_8cpp-source.html#l00247">SetState()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout"></a><!-- doxytag: member="InspSocket::timeout" ref="timeout" args="" --><p>
@@ -1431,7 +1506,7 @@ This value is true if the socket has timed out.
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00097">97</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout_5Fend"></a><!-- doxytag: member="InspSocket::timeout_end" ref="timeout_5Fend" args="" --><p>
@@ -1460,12 +1535,12 @@ When this time is reached, the socket times out if it is in the CONNECTING state
<p>
Definition at line <a class="el" href="socket_8h-source.html#l00091">91</a> of file <a class="el" href="socket_8h-source.html">socket.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00200">Timeout()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00197">Timeout()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="socket_8h-source.html">socket.h</a><li><a class="el" href="socket_8cpp-source.html">socket.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInspSocket__coll__graph.md5 b/docs/module-doc/classInspSocket__coll__graph.md5
index f141be48a..58e1367ba 100644
--- a/docs/module-doc/classInspSocket__coll__graph.md5
+++ b/docs/module-doc/classInspSocket__coll__graph.md5
@@ -1 +1 @@
-7f01698bd61166ed2298c165402581f7 \ No newline at end of file
+51939a33bf707f1bcff03f02bd5b43b3 \ No newline at end of file
diff --git a/docs/module-doc/classInviteItem-members.html b/docs/module-doc/classInviteItem-members.html
index 7ab51ae72..0d41efe4c 100644
--- a/docs/module-doc/classInviteItem-members.html
+++ b/docs/module-doc/classInviteItem-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classHostItem.html#set_5Ftime">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classHostItem.html#_7EHostItem_28_29">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInviteItem.html b/docs/module-doc/classInviteItem.html
index 6a6ed71c8..9db6a7e50 100644
--- a/docs/module-doc/classInviteItem.html
+++ b/docs/module-doc/classInviteItem.html
@@ -30,7 +30,7 @@ A subclass of <a class="el" href="classHostItem.html">HostItem</a> designed to h
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00070">70</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInvited-members.html b/docs/module-doc/classInvited-members.html
index c13a0f6e6..d28f69c90 100644
--- a/docs/module-doc/classInvited-members.html
+++ b/docs/module-doc/classInvited-members.html
@@ -7,10 +7,10 @@
<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>
<h1>Invited Member List</h1>This is the complete list of members for <a class="el" href="classInvited.html">Invited</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classInvited.html#channel_5BCHANMAX_5D">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classInvited.html#channel">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInvited.html b/docs/module-doc/classInvited.html
index a339904ba..1f5a9f343 100644
--- a/docs/module-doc/classInvited.html
+++ b/docs/module-doc/classInvited.html
@@ -21,7 +21,7 @@ Inheritance diagram for Invited:<p><center><img src="classInvited__inherit__grap
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classInvited-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInvited.html#channel_5BCHANMAX_5D">channel</a> [CHANMAX]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classInvited.html#channel">channel</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
@@ -29,14 +29,14 @@ Holds a channel name to which a user has been invited.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00039">39</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="channel_5BCHANMAX_5D"></a><!-- doxytag: member="Invited::channel" ref="channel_5BCHANMAX_5D" args="[CHANMAX]" --><p>
+Definition at line <a class="el" href="users_8h-source.html#l00043">43</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="channel"></a><!-- doxytag: member="Invited::channel" ref="channel" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited::channel</a>[CHANMAX] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> <a class="el" href="classInvited.html#channel">Invited::channel</a> </td>
</tr>
</table>
</td>
@@ -52,14 +52,14 @@ Definition at line <a class="el" href="users_8h-source.html#l00039">39</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00042">42</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00046">46</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00115">userrec::InviteTo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00141">userrec::InviteTo()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classInvited__coll__graph.md5 b/docs/module-doc/classInvited__coll__graph.md5
index 1ffe72a60..4e56570e2 100644
--- a/docs/module-doc/classInvited__coll__graph.md5
+++ b/docs/module-doc/classInvited__coll__graph.md5
@@ -1 +1 @@
-7fbf1811875f3b2d0f9e2d08f95517bf \ No newline at end of file
+14a980236c753f79990d5ee0b50c1adc \ No newline at end of file
diff --git a/docs/module-doc/classKLine-members.html b/docs/module-doc/classKLine-members.html
index 455ad453b..ff52faffe 100644
--- a/docs/module-doc/classKLine-members.html
+++ b/docs/module-doc/classKLine-members.html
@@ -15,7 +15,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classKLine.html b/docs/module-doc/classKLine.html
index d9a258167..681126f38 100644
--- a/docs/module-doc/classKLine.html
+++ b/docs/module-doc/classKLine.html
@@ -62,7 +62,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00073">73</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModeParameter-members.html b/docs/module-doc/classModeParameter-members.html
index 33f7e6248..d0d6788bb 100644
--- a/docs/module-doc/classModeParameter-members.html
+++ b/docs/module-doc/classModeParameter-members.html
@@ -12,7 +12,7 @@
<tr class="memlist"><td><a class="el" href="classModeParameter.html#mode">mode</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModeParameter.html b/docs/module-doc/classModeParameter.html
index 8e9753f5c..6a430b474 100644
--- a/docs/module-doc/classModeParameter.html
+++ b/docs/module-doc/classModeParameter.html
@@ -60,7 +60,7 @@ Definition at line <a class="el" href="channels_8h-source.html#l00079">79</a> of
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00084">84</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="mode"></a><!-- doxytag: member="ModeParameter::mode" ref="mode" args="" --><p>
@@ -87,7 +87,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::Set
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00082">82</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<a class="anchor" name="parameter_5BMAXBUF_5D"></a><!-- doxytag: member="ModeParameter::parameter" ref="parameter_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -114,12 +114,12 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::Set
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00083">83</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModule-members.html b/docs/module-doc/classModule-members.html
index da275b22c..1014b14ee 100644
--- a/docs/module-doc/classModule-members.html
+++ b/docs/module-doc/classModule-members.html
@@ -89,7 +89,7 @@
<tr class="memlist"><td><a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(void *opaque, int target_type, void *target, std::string modeline)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModule.html#_7EModule_28_29">~Module</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModule.html b/docs/module-doc/classModule.html
index abedf601d..2c29a02dc 100644
--- a/docs/module-doc/classModule.html
+++ b/docs/module-doc/classModule.html
@@ -267,7 +267,7 @@ All modules must inherit from this class, its methods will be called when irc se
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00254">254</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00272">272</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Module_28Server_20_2AMe_29"></a><!-- doxytag: member="Module::Module" ref="Module_28Server_20_2AMe_29" args="(Server *Me)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -302,7 +302,7 @@ Default constructor Creates a module class.
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00220">220</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00219">219</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00219"></a>00219 { }
</pre></div>
<p>
</td>
@@ -336,7 +336,7 @@ Default destructor destroys a module class.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00221">221</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00220">220</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 { }
</pre></div>
<p>
</td>
@@ -371,9 +371,9 @@ Returns the version number of a Module.
<p>
The method should return a <a class="el" href="classVersion.html">Version</a> object with its version information assigned via <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version::Version</a>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00231">231</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00053">VF_VENDOR</a>.<div class="fragment"><pre class="fragment"><a name="l00232"></a>00232 { <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>); }
+References <a class="el" href="modules_8h-source.html#l00053">VF_VENDOR</a>.<div class="fragment"><pre class="fragment"><a name="l00231"></a>00231 { <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>); }
</pre></div>
<p>
</td>
@@ -413,7 +413,7 @@ The module should modify the 005 numeric if needed to indicate its features. <dl
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00242">242</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00242"></a>00242 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00241">241</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00241"></a>00241 { };
</pre></div>
<p>
</td>
@@ -488,9 +488,9 @@ This function is called before many functions which check a users status on a ch
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00241">241</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00240">240</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>.<div class="fragment"><pre class="fragment"><a name="l00241"></a>00241 { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
+References <a class="el" href="modules_8h-source.html#l00037">ACR_DEFAULT</a>.<div class="fragment"><pre class="fragment"><a name="l00240"></a>00240 { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#ACR_5FDEFAULT">ACR_DEFAULT</a>; };
</pre></div>
<p>
</td>
@@ -548,7 +548,7 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the ban, 0 to continue as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00267">267</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -612,7 +612,7 @@ This method is triggered after the line is added. <dl compact><dt><b>Parameters:
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00293">293</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00292">292</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00292"></a>00292 { };
</pre></div>
<p>
</td>
@@ -676,7 +676,7 @@ This method is triggered after the line is added. <dl compact><dt><b>Parameters:
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00289">289</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00288">288</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00288"></a>00288 { };
</pre></div>
<p>
</td>
@@ -740,7 +740,7 @@ This method is triggered after the line is added. <dl compact><dt><b>Parameters:
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00291">291</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00291"></a>00291 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00290">290</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00290"></a>00290 { };
</pre></div>
<p>
</td>
@@ -804,7 +804,7 @@ This method is triggered after the line is added. <dl compact><dt><b>Parameters:
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00292">292</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00292"></a>00292 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00291">291</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00291"></a>00291 { };
</pre></div>
<p>
</td>
@@ -868,7 +868,7 @@ This method is triggered after the line is added. <dl compact><dt><b>Parameters:
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00290">290</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00290"></a>00290 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00289">289</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00289"></a>00289 { };
</pre></div>
<p>
</td>
@@ -908,7 +908,7 @@ This timer can be used to control timed features. Its period is not accurate eno
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00246">246</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00245">245</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 { };
</pre></div>
<p>
</td>
@@ -958,7 +958,7 @@ This event triggers after the host has been set. <dl compact><dt><b>Parameters:<
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00287">287</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00287"></a>00287 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00286"></a>00286 { };
</pre></div>
<p>
</td>
@@ -1009,7 +1009,7 @@ return 1 to deny the name change, or 0 to allow it. <dl compact><dt><b>Parameter
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the GECOS change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00260">260</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00259">259</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1060,7 +1060,7 @@ Return 1 to deny the host change, or 0 to allow it. <dl compact><dt><b>Parameter
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the host change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00259">259</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00258">258</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00258"></a>00258 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1110,7 +1110,7 @@ This event triggers after the name has been set. <dl compact><dt><b>Parameters:<
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00288">288</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00288"></a>00288 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00287">287</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00287"></a>00287 { };
</pre></div>
<p>
</td>
@@ -1161,7 +1161,7 @@ This method will always be called for each join, wether or not the user actually
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00257">257</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00257"></a>00257 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00256"></a>00256 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1212,7 +1212,7 @@ This method will always be called for each join, wether or not the channel is ac
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00254">254</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00253">253</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00253"></a>00253 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1269,7 +1269,7 @@ This method will always be called for each join, wether or not the channel is ac
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00255">255</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00254">254</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1320,7 +1320,7 @@ This method will always be called for each join, wether or not the channel is ac
<dl compact><dt><b>Returns:</b></dt><dd>1 to explicitly allow the join, 0 to proceed as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00256"></a>00256 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00255">255</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1361,7 +1361,7 @@ For example a module which implements ident lookups will continue to return fals
<dl compact><dt><b>Returns:</b></dt><dd>true to indicate readiness, false if otherwise</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00249">249</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00248">248</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
</pre></div>
<p>
</td>
@@ -1411,7 +1411,7 @@ This method is called once for every user and channel on the network, so that wh
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00299">299</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00299"></a>00299 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00298">298</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00298"></a>00298 { };
</pre></div>
<p>
</td>
@@ -1475,7 +1475,7 @@ Please see src/modules/m_swhois.cpp for a working example of how to use this met
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00284">284</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00284"></a>00284 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00283">283</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00283"></a>00283 { };
</pre></div>
<p>
</td>
@@ -1533,7 +1533,7 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the unban, 0 to continue as normal</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00268">268</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00267">267</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00267"></a>00267 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -1583,7 +1583,7 @@ This method is triggered after the line is deleted. <dl compact><dt><b>Parameter
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00298">298</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00298"></a>00298 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00297">297</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 { };
</pre></div>
<p>
</td>
@@ -1633,7 +1633,7 @@ This method is triggered after the line is deleted. <dl compact><dt><b>Parameter
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00294">294</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00294"></a>00294 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00293">293</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 { };
</pre></div>
<p>
</td>
@@ -1683,7 +1683,7 @@ This method is triggered after the line is deleted. <dl compact><dt><b>Parameter
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00296">296</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00295">295</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00295"></a>00295 { };
</pre></div>
<p>
</td>
@@ -1733,7 +1733,7 @@ This method is triggered after the line is deleted. <dl compact><dt><b>Parameter
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00297">297</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00297"></a>00297 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00296">296</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 { };
</pre></div>
<p>
</td>
@@ -1783,7 +1783,7 @@ This method is triggered after the line is deleted. <dl compact><dt><b>Parameter
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00295">295</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00295"></a>00295 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00294">294</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00294"></a>00294 { };
</pre></div>
<p>
</td>
@@ -1823,7 +1823,7 @@ Please see the documentation of <a class="el" href="classEvent.html#Send_28_29">
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00262">262</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00262"></a>00262 { <span class="keywordflow">return</span>; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00261"></a>00261 { <span class="keywordflow">return</span>; };
</pre></div>
<p>
</td>
@@ -1901,7 +1901,7 @@ The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00230">230</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00230"></a>00230 { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00229">229</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
</pre></div>
<p>
</td>
@@ -1951,7 +1951,7 @@ You may change or define the description given in <a class="el" href="namespacei
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00278">278</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00278"></a>00278 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00277">277</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00277"></a>00277 { };
</pre></div>
<p>
</td>
@@ -1991,7 +1991,7 @@ This event is informational only. You should not change any user information in
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00266"></a>00266 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00265">265</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { };
</pre></div>
<p>
</td>
@@ -2031,7 +2031,7 @@ You cannot override this and prevent it from happening as it is already happened
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00265">265</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00265"></a>00265 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00264">264</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { };
</pre></div>
<p>
</td>
@@ -2073,7 +2073,7 @@ The userrec will contain the information of the user who typed the command. Modu
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00234">234</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00233">233</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 { };
</pre></div>
<p>
</td>
@@ -2131,7 +2131,7 @@ If a client is killed by a server, e.g. a nickname collision or protocol error,
<dl compact><dt><b>Returns:</b></dt><dd>1 to prevent the kill, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00243">243</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00243"></a>00243 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00242">242</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00242"></a>00242 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2181,7 +2181,7 @@ mod will contain a pointer to the module, and string will contain its name, for
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00244"></a>00244 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00243">243</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00243"></a>00243 { };
</pre></div>
<p>
</td>
@@ -2239,7 +2239,7 @@ Return 1 to deny the topic change, or 0 to allow it. <dl compact><dt><b>Paramete
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00261"></a>00261 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00260">260</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00260"></a>00260 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2303,7 +2303,7 @@ The text variable contains the remainder of the mode string after the target, e.
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00231">231</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00231"></a>00231 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00230">230</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00230"></a>00230 { };
</pre></div>
<p>
</td>
@@ -2353,7 +2353,7 @@ The userrec will contain the oper mode 'o' as this function is called after any
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00233">233</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00232">232</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00232"></a>00232 { };
</pre></div>
<p>
</td>
@@ -2404,7 +2404,7 @@ The password field (from the config file) is in 'password' and is to be compared
<dl compact><dt><b>Returns:</b></dt><dd>1 to match the passwords, 0 to do nothing</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00264">264</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00264"></a>00264 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00263">263</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2461,7 +2461,7 @@ To block topic changes you must use OnLocalTopicChange instead. <dl compact><dt>
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00277">277</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00277"></a>00277 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 { };
</pre></div>
<p>
</td>
@@ -2526,7 +2526,7 @@ This event occurs for all registered commands, wether they are registered in the
<dl compact><dt><b>Returns:</b></dt><dd>1 to block the command, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00248">248</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00247">247</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00247"></a>00247 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2605,7 +2605,7 @@ Return 1 from this function to block the mode character from being processed ent
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the mode, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00253">253</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00253"></a>00253 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00252">252</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00252"></a>00252 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2662,7 +2662,7 @@ This is intended for raw socket processing (e.g. modules which wrap the tcp conn
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00269">269</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00268">268</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00268"></a>00268 { };
</pre></div>
<p>
</td>
@@ -2702,7 +2702,9 @@ When this event is called, shutdown() has not yet been called on the socket. <dl
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00270">270</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { };
</pre></div>
<p>
</td>
@@ -2767,7 +2769,7 @@ This occurs AFTER the select() or poll() so there is always data waiting to be r
<dl compact><dt><b>Returns:</b></dt><dd>nonzero if the event was handled, in which case readresult must be valid on exit</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00272">272</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2825,7 +2827,7 @@ Because this event is a low level event no user information is associated with i
<dl compact><dt><b>Returns:</b></dt><dd>Number of characters actually written or 0 if you didn't handle the operation</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00270">270</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00270"></a>00270 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00269">269</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00269"></a>00269 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -2865,7 +2867,7 @@ This method is called prior to a /REHASH or when a SIGHUP is received from the o
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00227"></a>00227 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00226">226</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00226"></a>00226 { }
</pre></div>
<p>
</td>
@@ -2922,7 +2924,7 @@ Called when an oper wants to disconnect a remote user via KILL.
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00275">275</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00275"></a>00275 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00274">274</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00274"></a>00274 { };
</pre></div>
<p>
</td>
@@ -2962,9 +2964,9 @@ Please see the documentation of <a class="el" href="classRequest.html#Send_28_29
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00263">263</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00262">262</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00182">Request::Send()</a>.<div class="fragment"><pre class="fragment"><a name="l00263"></a>00263 { <span class="keywordflow">return</span> NULL; };
+Referenced by <a class="el" href="modules_8cpp-source.html#l00181">Request::Send()</a>.<div class="fragment"><pre class="fragment"><a name="l00262"></a>00262 { <span class="keywordflow">return</span> NULL; };
</pre></div>
<p>
</td>
@@ -3021,7 +3023,7 @@ For example, when a /MODE channel +b (without any other parameters) is called, i
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00247">247</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00247"></a>00247 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00246">246</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 { };
</pre></div>
<p>
</td>
@@ -3078,7 +3080,7 @@ This method is the lowest level of handler available to a module. It will be cal
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00228">228</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00228"></a>00228 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00227">227</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00227"></a>00227 { }
</pre></div>
<p>
</td>
@@ -3118,7 +3120,7 @@ Called on all /STATS commands This method is triggered for all /STATS use, inclu
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00258">258</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00258"></a>00258 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00257">257</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00257"></a>00257 { };
</pre></div>
<p>
</td>
@@ -3177,7 +3179,7 @@ For a good example of how to use this function, please see src/modules/m_chanpro
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00280">280</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00280"></a>00280 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00279">279</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00279"></a>00279 { };
</pre></div>
<p>
</td>
@@ -3231,7 +3233,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00280">280</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00282">282</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00282"></a>00282 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00281"></a>00281 { };
</pre></div>
<p>
</td>
@@ -3288,7 +3290,7 @@ When this function is called, it will be called from the module which implements
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00279">279</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00279"></a>00279 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00278">278</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00278"></a>00278 { };
</pre></div>
<p>
</td>
@@ -3342,7 +3344,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00279">279</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00283">283</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00283"></a>00283 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00282">282</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00282"></a>00282 { };
</pre></div>
<p>
</td>
@@ -3392,7 +3394,7 @@ mod will contain a pointer to the module, and string will contain its name, for
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00245">245</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00245"></a>00245 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00244">244</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00244"></a>00244 { };
</pre></div>
<p>
</td>
@@ -3432,7 +3434,7 @@ The details of the connecting user are available to you in the parameter userrec
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00222"></a>00222 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00221">221</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00221"></a>00221 { }
</pre></div>
<p>
</td>
@@ -3472,7 +3474,7 @@ The details of the exiting user are available to you in the parameter userrec *u
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00224">224</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00224"></a>00224 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00223">223</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00223"></a>00223 { }
</pre></div>
<p>
</td>
@@ -3529,7 +3531,7 @@ You cannot prevent the invite from occuring using this function, to do that, use
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00275">275</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00275"></a>00275 { };
</pre></div>
<p>
</td>
@@ -3579,7 +3581,7 @@ The details of the joining user are available to you in the parameter userrec *u
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00225">225</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00224">224</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00224"></a>00224 { }
</pre></div>
<p>
</td>
@@ -3643,7 +3645,7 @@ If this method is called, the kick is already underway and cannot be prevented,
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00252">252</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00252"></a>00252 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 { };
</pre></div>
<p>
</td>
@@ -3707,7 +3709,7 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00273">273</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00272">272</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00272"></a>00272 { };
</pre></div>
<p>
</td>
@@ -3771,7 +3773,7 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00274">274</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00274"></a>00274 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00273">273</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00273"></a>00273 { };
</pre></div>
<p>
</td>
@@ -3821,7 +3823,7 @@ The details of the leaving user are available to you in the parameter userrec *u
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00226">226</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00226"></a>00226 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00225">225</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 { }
</pre></div>
<p>
</td>
@@ -3871,7 +3873,7 @@ This can be used to track users after nickchanges have been applied. Please note
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00240">240</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00240"></a>00240 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00239">239</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00239"></a>00239 { };
</pre></div>
<p>
</td>
@@ -3929,7 +3931,7 @@ Returning 1 from this function stops the process immediately, causing no output
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the invite, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00236">236</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00236"></a>00236 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00235">235</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00235"></a>00235 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -3988,7 +3990,7 @@ If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be
<dl compact><dt><b>Returns:</b></dt><dd>1 To prevent the join, 0 to allow it.</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00229">229</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00229"></a>00229 { <span class="keywordflow">return</span> 0; }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00228">228</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00228"></a>00228 { <span class="keywordflow">return</span> 0; }
</pre></div>
<p>
</td>
@@ -4053,7 +4055,7 @@ Returning a value of 1 from this function stops the process immediately, causing
<dl compact><dt><b>Returns:</b></dt><dd>1 to prevent the kick, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00251"></a>00251 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00250">250</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00250"></a>00250 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -4118,7 +4120,7 @@ Returning any nonzero value from this function stops the process immediately, ca
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the NOTICE, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00237"></a>00237 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00236">236</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00236"></a>00236 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -4169,7 +4171,7 @@ This can be used to implement Q-lines etc. Please note that although you can see
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the change, 0 to allow</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00239">239</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00239"></a>00239 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00238">238</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -4234,7 +4236,7 @@ Returning any nonzero value from this function stops the process immediately, ca
<dl compact><dt><b>Returns:</b></dt><dd>1 to deny the NOTICE, 0 to allow it</dd></dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00238">238</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 { <span class="keywordflow">return</span> 0; };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00237">237</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00237"></a>00237 { <span class="keywordflow">return</span> 0; };
</pre></div>
<p>
</td>
@@ -4284,7 +4286,7 @@ The details of the exiting user are available to you in the parameter userrec *u
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00223">223</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00223"></a>00223 { }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00222"></a>00222 { }
</pre></div>
<p>
</td>
@@ -4324,7 +4326,7 @@ before the user is sent the MOTD etc). Modules can use this method if they are p
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00250">250</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00250"></a>00250 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00249">249</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00249"></a>00249 { };
</pre></div>
<p>
</td>
@@ -4374,7 +4376,7 @@ Called after every WALLOPS command.
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00286"></a>00286 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00285">285</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00285"></a>00285 { };
</pre></div>
<p>
</td>
@@ -4424,7 +4426,7 @@ The source parameter contains the details of the user who issued the WHOIS comma
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00235">235</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00235"></a>00235 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00234">234</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00234"></a>00234 { };
</pre></div>
<p>
</td>
@@ -4496,7 +4498,7 @@ More documentation to follow soon. Please see src/modules/m_swhois.cpp for examp
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00285">285</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00285"></a>00285 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00284">284</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00284"></a>00284 { };
</pre></div>
<p>
</td>
@@ -4562,7 +4564,7 @@ More documentation to follow soon. Please see src/modules/m_chanprotect.cpp for
</dl>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00281"></a>00281 { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00280">280</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00280"></a>00280 { };
</pre></div>
<p>
</td>
@@ -4570,7 +4572,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModuleFactory-members.html b/docs/module-doc/classModuleFactory-members.html
index 212914370..de3d70a0f 100644
--- a/docs/module-doc/classModuleFactory-members.html
+++ b/docs/module-doc/classModuleFactory-members.html
@@ -12,7 +12,7 @@
<tr class="memlist"><td><a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModuleFactory.html b/docs/module-doc/classModuleFactory.html
index 096f37551..e21bbca4a 100644
--- a/docs/module-doc/classModuleFactory.html
+++ b/docs/module-doc/classModuleFactory.html
@@ -36,7 +36,7 @@ This is to allow for modules to create many different variants of <a class="el"
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01676">1676</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01694">1694</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ModuleFactory_28_29"></a><!-- doxytag: member="ModuleFactory::ModuleFactory" ref="ModuleFactory_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -63,7 +63,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l01676">1676</a> o
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01679">1679</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01679"></a>01679 { }
+Definition at line <a class="el" href="modules_8h-source.html#l01697">1697</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01697"></a>01697 { }
</pre></div>
<p>
</td>
@@ -95,7 +95,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l01679">1679</a> o
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01680">1680</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01680"></a>01680 { }
+Definition at line <a class="el" href="modules_8h-source.html#l01698">1698</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l01698"></a>01698 { }
</pre></div>
<p>
</td>
@@ -134,7 +134,7 @@ Your inherited class of ModuleFactory must return a pointer to your <a class="el
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModuleMessage-members.html b/docs/module-doc/classModuleMessage-members.html
index bc697a2ef..dd93fb4b6 100644
--- a/docs/module-doc/classModuleMessage-members.html
+++ b/docs/module-doc/classModuleMessage-members.html
@@ -11,7 +11,7 @@
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>()=0</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classModuleMessage.html b/docs/module-doc/classModuleMessage.html
index 71f5fd7f2..c5ec9dd98 100644
--- a/docs/module-doc/classModuleMessage.html
+++ b/docs/module-doc/classModuleMessage.html
@@ -34,7 +34,7 @@ The ModuleMessage class is the base class of <a class="el" href="classRequest.ht
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00143">143</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00161">161</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="_7EModuleMessage_28_29"></a><!-- doxytag: member="ModuleMessage::~ModuleMessage" ref="_7EModuleMessage_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -61,7 +61,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00143">143</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00149">149</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00149"></a>00149 {};
+Definition at line <a class="el" href="modules_8h-source.html#l00167">167</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {};
</pre></div>
<p>
</td>
@@ -101,7 +101,7 @@ Implemented in <a class="el" href="classRequest.html#Send_28_29">Request</a>, an
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classQLine-members.html b/docs/module-doc/classQLine-members.html
index 0d85a935d..c47950a5e 100644
--- a/docs/module-doc/classQLine-members.html
+++ b/docs/module-doc/classQLine-members.html
@@ -16,7 +16,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classQLine.html b/docs/module-doc/classQLine.html
index 5cd4ea28d..14cb4d805 100644
--- a/docs/module-doc/classQLine.html
+++ b/docs/module-doc/classQLine.html
@@ -92,7 +92,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00119">119</a> of f
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classRequest-members.html b/docs/module-doc/classRequest-members.html
index 9f2ed1f7e..89f1a165b 100644
--- a/docs/module-doc/classRequest-members.html
+++ b/docs/module-doc/classRequest-members.html
@@ -18,7 +18,7 @@
<tr class="memlist"><td><a class="el" href="classRequest.html#source">source</a></td><td><a class="el" href="classRequest.html">Request</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>()</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classRequest.html b/docs/module-doc/classRequest.html
index a42c65b8c..cca86ed51 100644
--- a/docs/module-doc/classRequest.html
+++ b/docs/module-doc/classRequest.html
@@ -57,7 +57,7 @@ When this class is properly instantiated it may be sent to a module using the <a
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00157">157</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00175">175</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29"></a><!-- doxytag: member="Request::Request" ref="Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29" args="(char *anydata, Module *src, Module *dst)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -102,7 +102,7 @@ Create a new Request.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00165">165</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00165"></a>00165 : <a class="code" href="classRequest.html#data">data</a>(anydata), <a class="code" href="classRequest.html#source">source</a>(src), <a class="code" href="classRequest.html#dest">dest</a>(dst) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00164">164</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00164"></a>00164 : <a class="code" href="classRequest.html#data">data</a>(anydata), <a class="code" href="classRequest.html#source">source</a>(src), <a class="code" href="classRequest.html#dest">dest</a>(dst) { };
</pre></div>
<p>
</td>
@@ -137,11 +137,11 @@ Fetch the Request data.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00167">167</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00166">166</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00162">data</a>.<div class="fragment"><pre class="fragment"><a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#data">data</a>;
-<a name="l00170"></a>00170 }
+References <a class="el" href="modules_8h-source.html#l00180">data</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#data">data</a>;
+<a name="l00169"></a>00169 }
</pre></div>
<p>
</td>
@@ -175,11 +175,11 @@ Fetch the request destination (should be 'this' in the receiving module).
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00177">177</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00176">176</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00169">dest</a>.<div class="fragment"><pre class="fragment"><a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00180"></a>00180 }
+References <a class="el" href="modules_8h-source.html#l00187">dest</a>.<div class="fragment"><pre class="fragment"><a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00179"></a>00179 }
</pre></div>
<p>
</td>
@@ -213,11 +213,11 @@ Fetch the request source.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00172">172</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00171">171</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00166">source</a>.<div class="fragment"><pre class="fragment"><a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#source">source</a>;
-<a name="l00175"></a>00175 }
+References <a class="el" href="modules_8h-source.html#l00184">source</a>.<div class="fragment"><pre class="fragment"><a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#source">source</a>;
+<a name="l00174"></a>00174 }
</pre></div>
<p>
</td>
@@ -253,18 +253,18 @@ Upon returning the result will be arbitary data returned by the module you sent
<p>
Implements <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a>.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00182">182</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l00169">dest</a>, and <a class="el" href="modules_8cpp-source.html#l00263">Module::OnRequest()</a>.<div class="fragment"><pre class="fragment"><a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this-&gt;dest)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <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>);
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">else</span>
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> NULL;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00181">181</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00187">dest</a>, and <a class="el" href="modules_8cpp-source.html#l00262">Module::OnRequest()</a>.<div class="fragment"><pre class="fragment"><a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (this-&gt;dest)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <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>);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keywordflow">else</span>
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> NULL;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
</pre></div>
<p>
</td>
@@ -295,9 +295,9 @@ This member holds a pointer to arbitary data set by the emitter of the message.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00162">162</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00180">180</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00167">GetData()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00166">GetData()</a>. </td>
</tr>
</table>
<a class="anchor" name="dest"></a><!-- doxytag: member="Request::dest" ref="dest" args="" --><p>
@@ -324,9 +324,9 @@ The single destination of the Request.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00169">169</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00187">187</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00177">GetDest()</a>, and <a class="el" href="modules_8cpp-source.html#l00182">Send()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00176">GetDest()</a>, and <a class="el" href="modules_8cpp-source.html#l00181">Send()</a>. </td>
</tr>
</table>
<a class="anchor" name="source"></a><!-- doxytag: member="Request::source" ref="source" args="" --><p>
@@ -353,14 +353,14 @@ This is a pointer to the sender of the message, which can be used to directly tr
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00166">166</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00184">184</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00172">GetSource()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00171">GetSource()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classServer-members.html b/docs/module-doc/classServer-members.html
index a268ec1b6..cf95fac5f 100644
--- a/docs/module-doc/classServer-members.html
+++ b/docs/module-doc/classServer-members.html
@@ -6,7 +6,7 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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>
<h1>Server Member List</h1>This is the complete list of members for <a class="el" href="classServer.html">Server</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand</a>(char *cmd, handlerfunc f, char flags, int minparams, char *source)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a>(command_t *f)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">AddELine</a>(long duration, std::string source, std::string reason, std::string hostmask)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(char modechar)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#AddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fwhen_5Fon_2C_20int_20params_5Fwhen_5Foff_29">AddExtendedMode</a>(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
@@ -69,7 +69,7 @@
<tr class="memlist"><td><a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(userrec *user, std::string message)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classServer.html#_7EServer_28_29">~Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classServer.html b/docs/module-doc/classServer.html
index 21df2ba69..e7ec5d474 100644
--- a/docs/module-doc/classServer.html
+++ b/docs/module-doc/classServer.html
@@ -105,9 +105,9 @@ Inheritance diagram for Server:<p><center><img src="classServer__inherit__graph.
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a> (char modechar)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds an extended mode letter which is parsed by a module and handled in a list fashion. <a href="#AddExtendedListMode_28char_20modechar_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand</a> (char *cmd, <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, char flags, int minparams, char *source)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a> (<a class="el" href="classcommand__t.html">command_t</a> *f)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a command to the command table. <a href="#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a command to the command table. <a href="#AddCommand_28command_5Ft_20_2Af_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends a servermode. <a href="#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><br></td></tr>
@@ -207,7 +207,7 @@ All modules should instantiate at least one copy of this class, and use its memb
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01096">1096</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l01114">1114</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Server_28_29"></a><!-- doxytag: member="Server::Server" ref="Server_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -236,8 +236,8 @@ Default constructor.
<p>
Creates a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00305">305</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00304">304</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 }
</pre></div>
<p>
</td>
@@ -271,15 +271,15 @@ Default destructor.
<p>
Destroys a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00308">308</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 }
</pre></div>
<p>
</td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><!-- doxytag: member="Server::AddCommand" ref="AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29" args="(char *cmd, handlerfunc f, char flags, int minparams, char *source)" --><p>
+<a class="anchor" name="AddCommand_28command_5Ft_20_2Af_29"></a><!-- doxytag: member="Server::AddCommand" ref="AddCommand_28command_5Ft_20_2Af_29" args="(command_t *f)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -287,37 +287,10 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a>
<tr>
<td class="md" nowrap valign="top">void Server::AddCommand </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
- <td class="mdname" nowrap> <em>cmd</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char&nbsp;</td>
- <td class="mdname" nowrap> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>minparams</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>source</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"><code> [virtual]</code></td>
+ <td class="md" nowrap valign="top"><a class="el" href="classcommand__t.html">command_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
@@ -334,14 +307,14 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a>
Adds a command to the command table.
<p>
This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:<p>
-typedef void (handlerfunc) (char**, int, userrec*); ... void <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill(char **parameters, int pcnt, userrec *user)</a><p>
+typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)<p>
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. "m_blarp.so". If you place the wrong identifier here, you can cause crashes if your module is unloaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00416">416</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00415">415</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand()</a>.<div class="fragment"><pre class="fragment"><a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 <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);
-<a name="l00419"></a>00419 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00416"></a>00416 {
+<a name="l00417"></a>00417 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CreateCommand(f);
+<a name="l00418"></a>00418 }
</pre></div>
<p>
</td>
@@ -397,11 +370,11 @@ Adds a E-line The E-line is enforced as soon as it is added.
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00660">660</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00659">659</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00661"></a>00661 {
-<a name="l00662"></a>00662 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00663"></a>00663 }
+References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00660"></a>00660 {
+<a name="l00661"></a>00661 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00662"></a>00662 }
</pre></div>
<p>
</td>
@@ -441,14 +414,14 @@ This call is used to implement modes like +q and +a. The characteristics of thes
(4) The mode and its parameter are NOT stored in the channels modes structure<p>
It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Server::Find</a> to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00584">584</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00583">583</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.<div class="fragment"><pre class="fragment"><a name="l00585"></a>00585 {
-<a name="l00586"></a>00586 <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);
-<a name="l00587"></a>00587 <span class="keywordflow">if</span> (res)
-<a name="l00588"></a>00588 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
-<a name="l00589"></a>00589 <span class="keywordflow">return</span> res;
-<a name="l00590"></a>00590 }
+References <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.<div class="fragment"><pre class="fragment"><a name="l00584"></a>00584 {
+<a name="l00585"></a>00585 <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);
+<a name="l00586"></a>00586 <span class="keywordflow">if</span> (res)
+<a name="l00587"></a>00587 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
+<a name="l00588"></a>00588 <span class="keywordflow">return</span> res;
+<a name="l00589"></a>00589 }
</pre></div>
<p>
</td>
@@ -510,34 +483,34 @@ Adds an extended mode letter which is parsed by a module.
<p>
This allows modules to add extra mode letters, e.g. +x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00556">556</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="modules_8h-source.html#l00032">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00033">MT_SERVER</a>.<div class="fragment"><pre class="fragment"><a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <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>)))
-<a name="l00559"></a>00559 {
-<a name="l00560"></a>00560 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-<a name="l00563"></a>00563 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565 <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>))
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-<a name="l00571"></a>00571 {
-<a name="l00572"></a>00572 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-<a name="l00573"></a>00573 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00574"></a>00574 }
-<a name="l00575"></a>00575 <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);
-<a name="l00576"></a>00576 }
-<a name="l00577"></a>00577 <span class="keywordflow">else</span>
-<a name="l00578"></a>00578 {
-<a name="l00579"></a>00579 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-<a name="l00580"></a>00580 }
-<a name="l00581"></a>00581 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00582"></a>00582 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00555">555</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="modules_8h-source.html#l00032">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00033">MT_SERVER</a>.<div class="fragment"><pre class="fragment"><a name="l00556"></a>00556 {
+<a name="l00557"></a>00557 <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>)))
+<a name="l00558"></a>00558 {
+<a name="l00559"></a>00559 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+<a name="l00562"></a>00562 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00563"></a>00563 }
+<a name="l00564"></a>00564 <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>))
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+<a name="l00567"></a>00567 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00568"></a>00568 }
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+<a name="l00570"></a>00570 {
+<a name="l00571"></a>00571 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+<a name="l00572"></a>00572 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574 <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);
+<a name="l00575"></a>00575 }
+<a name="l00576"></a>00576 <span class="keywordflow">else</span>
+<a name="l00577"></a>00577 {
+<a name="l00578"></a>00578 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+<a name="l00579"></a>00579 }
+<a name="l00580"></a>00580 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00581"></a>00581 }
</pre></div>
<p>
</td>
@@ -593,11 +566,11 @@ Adds a G-line The G-line is propogated to all of the servers in the mesh and enf
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00640">640</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00639">639</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00641"></a>00641 {
-<a name="l00642"></a>00642 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00643"></a>00643 }
+References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00640"></a>00640 {
+<a name="l00641"></a>00641 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00642"></a>00642 }
</pre></div>
<p>
</td>
@@ -653,11 +626,11 @@ Adds a K-line The K-line is enforced as soon as it is added.
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00655">655</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00654">654</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00656"></a>00656 {
-<a name="l00657"></a>00657 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-<a name="l00658"></a>00658 }
+References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00655"></a>00655 {
+<a name="l00656"></a>00656 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+<a name="l00657"></a>00657 }
</pre></div>
<p>
</td>
@@ -713,11 +686,11 @@ Adds a Q-line The Q-line is propogated to all of the servers in the mesh and enf
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00645">645</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00644">644</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00646"></a>00646 {
-<a name="l00647"></a>00647 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
-<a name="l00648"></a>00648 }
+References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00645"></a>00645 {
+<a name="l00646"></a>00646 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
+<a name="l00647"></a>00647 }
</pre></div>
<p>
</td>
@@ -752,11 +725,11 @@ Adds a class derived from <a class="el" href="classInspSocket.html">InspSocket</
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00313">313</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00312">312</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00314"></a>00314 {
-<a name="l00315"></a>00315 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
-<a name="l00316"></a>00316 }
+References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00313"></a>00313 {
+<a name="l00314"></a>00314 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
+<a name="l00315"></a>00315 }
</pre></div>
<p>
</td>
@@ -812,11 +785,11 @@ Adds a Z-line The Z-line is propogated to all of the servers in the mesh and enf
<p>
The duration must be in seconds, however you can use the <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server::CalcDuration</a> method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00650">650</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00649">649</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00651"></a>00651 {
-<a name="l00652"></a>00652 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
-<a name="l00653"></a>00653 }
+References <a class="el" 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>.<div class="fragment"><pre class="fragment"><a name="l00650"></a>00650 {
+<a name="l00651"></a>00651 <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>(<a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
+<a name="l00652"></a>00652 }
</pre></div>
<p>
</td>
@@ -851,11 +824,11 @@ Calculates a duration This method will take a string containing a formatted dura
<p>
"1w2d") and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00690">690</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00689">689</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration()</a>.<div class="fragment"><pre class="fragment"><a name="l00691"></a>00691 {
-<a name="l00692"></a>00692 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
-<a name="l00693"></a>00693 }
+References <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration()</a>.<div class="fragment"><pre class="fragment"><a name="l00690"></a>00690 {
+<a name="l00691"></a>00691 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
+<a name="l00692"></a>00692 }
</pre></div>
<p>
</td>
@@ -910,13 +883,13 @@ References <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr
Calls the handler for a command, either implemented by the core or by another module.
<p>
You can use this function to trigger other commands in the ircd, such as PRIVMSG, JOIN, KICK etc, or even as a method of callback. By defining command names that are untypeable for users on irc (e.g. those which contain a or <br>
-) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">AddCommand()</a>. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
+) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand()</a>. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00401">401</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00400">400</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler()</a>.<div class="fragment"><pre class="fragment"><a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(commandname.c_str(),parameters,pcnt,user);
-<a name="l00404"></a>00404 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00401"></a>00401 {
+<a name="l00402"></a>00402 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CallHandler(commandname,parameters,pcnt,user);
+<a name="l00403"></a>00403 }
</pre></div>
<p>
</td>
@@ -960,11 +933,11 @@ Change GECOS (fullname) of a user.
<p>
You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00499">499</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00498">498</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName()</a>.<div class="fragment"><pre class="fragment"><a name="l00500"></a>00500 {
-<a name="l00501"></a>00501 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
-<a name="l00502"></a>00502 }
+References <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName()</a>.<div class="fragment"><pre class="fragment"><a name="l00499"></a>00499 {
+<a name="l00500"></a>00500 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
+<a name="l00501"></a>00501 }
</pre></div>
<p>
</td>
@@ -1008,11 +981,11 @@ Change displayed hostname of a user.
<p>
You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00494">494</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00493">493</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost()</a>.<div class="fragment"><pre class="fragment"><a name="l00495"></a>00495 {
-<a name="l00496"></a>00496 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
-<a name="l00497"></a>00497 }
+References <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost()</a>.<div class="fragment"><pre class="fragment"><a name="l00494"></a>00494 {
+<a name="l00495"></a>00495 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
+<a name="l00496"></a>00496 }
</pre></div>
<p>
</td>
@@ -1056,11 +1029,11 @@ Forces a user nickchange.
<p>
This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00386">386</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00385">385</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange()</a>.<div class="fragment"><pre class="fragment"><a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
-<a name="l00389"></a>00389 }
+References <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>.<div class="fragment"><pre class="fragment"><a name="l00386"></a>00386 {
+<a name="l00387"></a>00387 <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
+<a name="l00388"></a>00388 }
</pre></div>
<p>
</td>
@@ -1104,11 +1077,11 @@ Attempts to look up a user's privilages on a channel.
<p>
This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00524">524</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00523">523</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode()</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
-<a name="l00526"></a>00526 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
-<a name="l00527"></a>00527 }
+References <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode()</a>.<div class="fragment"><pre class="fragment"><a name="l00524"></a>00524 {
+<a name="l00525"></a>00525 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
+<a name="l00526"></a>00526 }
</pre></div>
<p>
</td>
@@ -1152,11 +1125,11 @@ Returns true if two users share a common channel.
<p>
This method is used internally by the NICK and QUIT commands, and the <a class="el" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">Server::SendCommon</a> method.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00472">472</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00471">471</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels()</a>.<div class="fragment"><pre class="fragment"><a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
-<a name="l00475"></a>00475 }
+References <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
+<a name="l00474"></a>00474 }
</pre></div>
<p>
</td>
@@ -1191,9 +1164,9 @@ Returns a count of the number of users on a channel.
<p>
This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00592">592</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00593"></a>00593 {
-<a name="l00594"></a>00594 <span class="keywordflow">return</span> usercount(c);
-<a name="l00595"></a>00595 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00591">591</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00592"></a>00592 {
+<a name="l00593"></a>00593 <span class="keywordflow">return</span> usercount(c);
+<a name="l00594"></a>00594 }
</pre></div>
<p>
</td>
@@ -1228,11 +1201,11 @@ Deletes a local E-Line.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00685">685</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00684">684</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00686"></a>00686 {
-<a name="l00687"></a>00687 <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());
-<a name="l00688"></a>00688 }
+References <a class="el" href="xline_8h.html#del_5Feline_28const_20char_20_2Ahostmask_29">del_eline()</a>.<div class="fragment"><pre class="fragment"><a name="l00685"></a>00685 {
+<a name="l00686"></a>00686 <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());
+<a name="l00687"></a>00687 }
</pre></div>
<p>
</td>
@@ -1267,11 +1240,11 @@ Deletes a G-Line from all servers on the mesh.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00665">665</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00664">664</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00666"></a>00666 {
-<a name="l00667"></a>00667 <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());
-<a name="l00668"></a>00668 }
+References <a class="el" href="xline_8h.html#del_5Fgline_28const_20char_20_2Ahostmask_29">del_gline()</a>.<div class="fragment"><pre class="fragment"><a name="l00665"></a>00665 {
+<a name="l00666"></a>00666 <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());
+<a name="l00667"></a>00667 }
</pre></div>
<p>
</td>
@@ -1306,11 +1279,11 @@ Deletes a local K-Line.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00680">680</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00679">679</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 <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());
-<a name="l00683"></a>00683 }
+References <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">del_kline()</a>.<div class="fragment"><pre class="fragment"><a name="l00680"></a>00680 {
+<a name="l00681"></a>00681 <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());
+<a name="l00682"></a>00682 }
</pre></div>
<p>
</td>
@@ -1345,11 +1318,11 @@ Deletes a Q-Line from all servers on the mesh.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00670">670</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00669">669</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00671"></a>00671 {
-<a name="l00672"></a>00672 <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());
-<a name="l00673"></a>00673 }
+References <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">del_qline()</a>.<div class="fragment"><pre class="fragment"><a name="l00670"></a>00670 {
+<a name="l00671"></a>00671 <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());
+<a name="l00672"></a>00672 }
</pre></div>
<p>
</td>
@@ -1384,18 +1357,18 @@ Deletes a class derived from <a class="el" href="classInspSocket.html">InspSocke
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00334">334</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00333">333</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <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++)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keywordflow">if</span> (*a == sock)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
-<a name="l00341"></a>00341 <span class="keywordflow">return</span>;
-<a name="l00342"></a>00342 }
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344 }
+References <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.<div class="fragment"><pre class="fragment"><a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 <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++)
+<a name="l00336"></a>00336 {
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (*a == sock)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
+<a name="l00340"></a>00340 <span class="keywordflow">return</span>;
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 }
</pre></div>
<p>
</td>
@@ -1430,11 +1403,11 @@ Deletes a Z-Line from all servers on the mesh.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00675">675</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00674">674</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00676"></a>00676 {
-<a name="l00677"></a>00677 <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());
-<a name="l00678"></a>00678 }
+References <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">del_zline()</a>.<div class="fragment"><pre class="fragment"><a name="l00675"></a>00675 {
+<a name="l00676"></a>00676 <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());
+<a name="l00677"></a>00677 }
</pre></div>
<p>
</td>
@@ -1469,11 +1442,11 @@ Attempts to look up a channel and return a pointer to it.
<p>
This function will return NULL if the channel does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00519">519</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00518">518</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
-<a name="l00522"></a>00522 }
+References <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00519"></a>00519 {
+<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
+<a name="l00521"></a>00521 }
</pre></div>
<p>
</td>
@@ -1508,9 +1481,9 @@ Attempts to look up a nick using the file descriptor associated with that nick.
<p>
This function will return NULL if the file descriptor is not associated with a valid user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00514">514</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> (socket &lt; 65536 ? fd_ref_table[socket] : NULL);
-<a name="l00517"></a>00517 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00513">513</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00514"></a>00514 {
+<a name="l00515"></a>00515 <span class="keywordflow">return</span> (socket &lt; 65536 ? fd_ref_table[socket] : NULL);
+<a name="l00516"></a>00516 }
</pre></div>
<p>
</td>
@@ -1545,18 +1518,18 @@ This function finds a module by name.
<p>
You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00724">724</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8cpp-source.html#l00935">MODCOUNT</a>, <a class="el" href="inspircd__io_8h-source.html#l00247">ServerConfig::module_names</a>, and <a class="el" href="channels_8cpp.html#modules">modules</a>.<div class="fragment"><pre class="fragment"><a name="l00725"></a>00725 {
-<a name="l00726"></a>00726 <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++)
-<a name="l00727"></a>00727 {
-<a name="l00728"></a>00728 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
-<a name="l00729"></a>00729 {
-<a name="l00730"></a>00730 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
-<a name="l00731"></a>00731 }
-<a name="l00732"></a>00732 }
-<a name="l00733"></a>00733 <span class="keywordflow">return</span> NULL;
-<a name="l00734"></a>00734 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00723">723</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp-source.html#l00934">MODCOUNT</a>, <a class="el" href="inspircd__io_8h-source.html#l00248">ServerConfig::module_names</a>, and <a class="el" href="channels_8cpp.html#modules">modules</a>.<div class="fragment"><pre class="fragment"><a name="l00724"></a>00724 {
+<a name="l00725"></a>00725 <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++)
+<a name="l00726"></a>00726 {
+<a name="l00727"></a>00727 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
+<a name="l00728"></a>00728 {
+<a name="l00729"></a>00729 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
+<a name="l00730"></a>00730 }
+<a name="l00731"></a>00731 }
+<a name="l00732"></a>00732 <span class="keywordflow">return</span> NULL;
+<a name="l00733"></a>00733 }
</pre></div>
<p>
</td>
@@ -1591,11 +1564,11 @@ Attempts to look up a nick and return a pointer to it.
<p>
This function will return NULL if the nick does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00509">509</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00508">508</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find()</a>.<div class="fragment"><pre class="fragment"><a name="l00510"></a>00510 {
-<a name="l00511"></a>00511 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
-<a name="l00512"></a>00512 }
+References <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find()</a>.<div class="fragment"><pre class="fragment"><a name="l00509"></a>00509 {
+<a name="l00510"></a>00510 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
+<a name="l00511"></a>00511 }
</pre></div>
<p>
</td>
@@ -1629,11 +1602,11 @@ Returns the information of the server as returned by the /ADMIN command.
<p>
See the <a class="el" href="classAdmin.html">Admin</a> class for further information of the return value. The members <a class="el" href="classAdmin.html#Nick">Admin::Nick</a>, <a class="el" href="classAdmin.html#Email">Admin::Email</a> and <a class="el" href="classAdmin.html#Name">Admin::Name</a> contain the information for the server where the module is loaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00549">549</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00548">548</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00089">ServerConfig::AdminEmail</a>, <a class="el" href="inspircd__io_8h-source.html#l00084">ServerConfig::AdminName</a>, and <a class="el" href="inspircd__io_8h-source.html#l00094">ServerConfig::AdminNick</a>.<div class="fragment"><pre class="fragment"><a name="l00550"></a>00550 {
-<a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
-<a name="l00552"></a>00552 }
+References <a class="el" href="inspircd__io_8h-source.html#l00090">ServerConfig::AdminEmail</a>, <a class="el" href="inspircd__io_8h-source.html#l00085">ServerConfig::AdminName</a>, and <a class="el" href="inspircd__io_8h-source.html#l00095">ServerConfig::AdminNick</a>.<div class="fragment"><pre class="fragment"><a name="l00549"></a>00549 {
+<a name="l00550"></a>00550 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
+<a name="l00551"></a>00551 }
</pre></div>
<p>
</td>
@@ -1667,9 +1640,9 @@ Obtains a pointer to the server's <a class="el" href="classServerConfig.html">Se
<p>
The <a class="el" href="classServerConfig.html">ServerConfig</a> object contains most of the configuration data of the IRC server, as read from the config file by the core.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00324">324</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00327"></a>00327 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00323">323</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00324"></a>00324 {
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00326"></a>00326 }
</pre></div>
<p>
</td>
@@ -1703,11 +1676,11 @@ Returns the network name, global to all linked servers.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00539">539</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00538">538</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00074">ServerConfig::Network</a>.<div class="fragment"><pre class="fragment"><a name="l00540"></a>00540 {
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
-<a name="l00542"></a>00542 }
+References <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>.<div class="fragment"><pre class="fragment"><a name="l00539"></a>00539 {
+<a name="l00540"></a>00540 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00541"></a>00541 }
</pre></div>
<p>
</td>
@@ -1741,11 +1714,11 @@ Returns the server description string of the local server.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00544">544</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00543">543</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00079">ServerConfig::ServerDesc</a>.<div class="fragment"><pre class="fragment"><a name="l00545"></a>00545 {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
-<a name="l00547"></a>00547 }
+References <a class="el" href="inspircd__io_8h-source.html#l00080">ServerConfig::ServerDesc</a>.<div class="fragment"><pre class="fragment"><a name="l00544"></a>00544 {
+<a name="l00545"></a>00545 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
+<a name="l00546"></a>00546 }
</pre></div>
<p>
</td>
@@ -1779,11 +1752,11 @@ Returns the server name of the server where the module is loaded.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00534">534</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00533">533</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00068">ServerConfig::ServerName</a>.<div class="fragment"><pre class="fragment"><a name="l00535"></a>00535 {
-<a name="l00536"></a>00536 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
-<a name="l00537"></a>00537 }
+References <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>.<div class="fragment"><pre class="fragment"><a name="l00534"></a>00534 {
+<a name="l00535"></a>00535 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
+<a name="l00536"></a>00536 }
</pre></div>
<p>
</td>
@@ -1818,19 +1791,19 @@ Fetches the userlist of a channel.
<p>
This function must be here and not a member of userrec or chanrec due to include constraints.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00374">374</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="channels_8cpp-source.html#l00187">chanrec::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
-<a name="l00377"></a>00377 userl.clear();
-<a name="l00378"></a>00378 std::vector&lt;char*&gt; *list = chan-&gt;<a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
-<a name="l00379"></a>00379 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = list-&gt;begin(); i != list-&gt;end(); i++)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 <span class="keywordtype">char</span>* o = *i;
-<a name="l00382"></a>00382 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-<a name="l00383"></a>00383 }
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> userl;
-<a name="l00385"></a>00385 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00373">373</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="channels_8cpp-source.html#l00186">chanrec::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00374"></a>00374 {
+<a name="l00375"></a>00375 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
+<a name="l00376"></a>00376 userl.clear();
+<a name="l00377"></a>00377 std::vector&lt;char*&gt; *list = chan-&gt;<a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
+<a name="l00378"></a>00378 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = list-&gt;begin(); i != list-&gt;end(); i++)
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keywordtype">char</span>* o = *i;
+<a name="l00381"></a>00381 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> userl;
+<a name="l00384"></a>00384 }
</pre></div>
<p>
</td>
@@ -1864,11 +1837,11 @@ Returns the version string of this server.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00329">329</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00328">328</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd::GetVersionString()</a>.<div class="fragment"><pre class="fragment"><a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00332"></a>00332 }
+References <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd::GetVersionString()</a>.<div class="fragment"><pre class="fragment"><a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00331"></a>00331 }
</pre></div>
<p>
</td>
@@ -1903,11 +1876,11 @@ Returns true if a nick is valid.
<p>
Nicks for unregistered connections will return false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00504">504</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00503">503</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick()</a>.<div class="fragment"><pre class="fragment"><a name="l00505"></a>00505 {
-<a name="l00506"></a>00506 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
-<a name="l00507"></a>00507 }
+References <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick()</a>.<div class="fragment"><pre class="fragment"><a name="l00504"></a>00504 {
+<a name="l00505"></a>00505 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
+<a name="l00506"></a>00506 }
</pre></div>
<p>
</td>
@@ -1951,11 +1924,11 @@ Checks if a user is on a channel.
<p>
This function will return true or false to indicate if user 'User' is on channel 'Chan'.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00529">529</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00528">528</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 <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);
-<a name="l00532"></a>00532 }
+References <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">has_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00529"></a>00529 {
+<a name="l00530"></a>00530 <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);
+<a name="l00531"></a>00531 }
</pre></div>
<p>
</td>
@@ -1990,11 +1963,11 @@ Returns true if the servername you give is ulined.
<p>
ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00396">396</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00395">395</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00397"></a>00397 {
-<a name="l00398"></a>00398 <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());
-<a name="l00399"></a>00399 }
+References <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <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());
+<a name="l00398"></a>00398 }
</pre></div>
<p>
</td>
@@ -2029,33 +2002,33 @@ Returns true if a nick!ident string is correctly formatted, false if otherwise.
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00695">695</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00696"></a>00696 {
-<a name="l00697"></a>00697 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-<a name="l00698"></a>00698 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-<a name="l00699"></a>00699 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00700"></a>00700 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-<a name="l00701"></a>00701 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00702"></a>00702 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00703"></a>00703 <span class="keywordflow">if</span> (dest[i] &lt; 32)
-<a name="l00704"></a>00704 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00705"></a>00705 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00706"></a>00706 <span class="keywordflow">if</span> (dest[i] &gt; 126)
-<a name="l00707"></a>00707 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00708"></a>00708 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
-<a name="l00709"></a>00709 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00710"></a>00710 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-<a name="l00711"></a>00711 c++;
-<a name="l00712"></a>00712 <span class="keywordflow">if</span> (c&gt;1)
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00714"></a>00714 c = 0;
-<a name="l00715"></a>00715 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00716"></a>00716 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-<a name="l00717"></a>00717 c++;
-<a name="l00718"></a>00718 <span class="keywordflow">if</span> (c&gt;1)
-<a name="l00719"></a>00719 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00720"></a>00720
-<a name="l00721"></a>00721 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00722"></a>00722 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00694">694</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+<a name="l00697"></a>00697 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+<a name="l00698"></a>00698 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+<a name="l00700"></a>00700 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00701"></a>00701 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00702"></a>00702 <span class="keywordflow">if</span> (dest[i] &lt; 32)
+<a name="l00703"></a>00703 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00704"></a>00704 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00705"></a>00705 <span class="keywordflow">if</span> (dest[i] &gt; 126)
+<a name="l00706"></a>00706 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00707"></a>00707 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
+<a name="l00708"></a>00708 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00709"></a>00709 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+<a name="l00710"></a>00710 c++;
+<a name="l00711"></a>00711 <span class="keywordflow">if</span> (c&gt;1)
+<a name="l00712"></a>00712 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00713"></a>00713 c = 0;
+<a name="l00714"></a>00714 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00715"></a>00715 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+<a name="l00716"></a>00716 c++;
+<a name="l00717"></a>00717 <span class="keywordflow">if</span> (c&gt;1)
+<a name="l00718"></a>00718 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00721"></a>00721 }
</pre></div>
<p>
</td>
@@ -2103,11 +2076,11 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00695">695</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00406">406</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00405">405</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd()</a>.<div class="fragment"><pre class="fragment"><a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="keywordflow">return</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(commandname.c_str(), pcnt, user);
-<a name="l00409"></a>00409 }
+References <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>.<div class="fragment"><pre class="fragment"><a name="l00406"></a>00406 {
+<a name="l00407"></a>00407 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;IsValidCommand(commandname, pcnt, user);
+<a name="l00408"></a>00408 }
</pre></div>
<p>
</td>
@@ -2157,11 +2130,11 @@ Forces a user to join a channel.
<p>
This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00364">364</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00363">363</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00365"></a>00365 {
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-<a name="l00367"></a>00367 }
+References <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00364"></a>00364 {
+<a name="l00365"></a>00365 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+<a name="l00366"></a>00366 }
</pre></div>
<p>
</td>
@@ -2205,11 +2178,11 @@ Writes a log string.
<p>
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00411">411</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00410">410</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00414"></a>00414 }
+References <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00411"></a>00411 {
+<a name="l00412"></a>00412 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00413"></a>00413 }
</pre></div>
<p>
</td>
@@ -2253,12 +2226,12 @@ Matches text against a glob pattern.
<p>
Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00351">351</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-<a name="l00354"></a>00354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-<a name="l00355"></a>00355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> match(literal,pattern);
-<a name="l00357"></a>00357 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00350">350</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00351"></a>00351 {
+<a name="l00352"></a>00352 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+<a name="l00353"></a>00353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+<a name="l00354"></a>00354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> match(literal,pattern);
+<a name="l00356"></a>00356 }
</pre></div>
<p>
</td>
@@ -2308,11 +2281,11 @@ Forces a user to part a channel.
<p>
This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00369">369</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00368">368</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
-<a name="l00372"></a>00372 }
+References <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+<a name="l00371"></a>00371 }
</pre></div>
<p>
</td>
@@ -2362,36 +2335,36 @@ This user takes one user, and switches their file descriptor with another user,
<p>
The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00610">610</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00149">userrec::chans</a>, <a class="el" href="users_8cpp-source.html#l00232">userrec::ClearBuffer()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00101">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">userrec::ident</a>, <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00124">userrec::nick</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a> = alive-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00613"></a>00613 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>;
-<a name="l00614"></a>00614 alive-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00615"></a>00615 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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>);
-<a name="l00616"></a>00616 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
-<a name="l00617"></a>00617 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = zombie;
-<a name="l00618"></a>00618 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; zombie-&gt;chans.size(); i++)
-<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
-<a name="l00621"></a>00621 {
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel-&gt;name)
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
-<a name="l00625"></a>00625 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(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>);
-<a name="l00626"></a>00626 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00629"></a>00629 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00630"></a>00630 }
-<a name="l00631"></a>00631 userlist(zombie,Ptr);
-<a name="l00632"></a>00632 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00633"></a>00633
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635 }
-<a name="l00636"></a>00636 }
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00638"></a>00638 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00609">609</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00153">userrec::chans</a>, <a class="el" href="users_8cpp-source.html#l00253">userrec::ClearBuffer()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00102">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="channels_8h-source.html#l00108">chanrec::name</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="channels_8h-source.html#l00133">chanrec::setby</a>, <a class="el" href="channels_8h-source.html#l00122">chanrec::topic</a>, <a class="el" href="channels_8h-source.html#l00129">chanrec::topicset</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00610"></a>00610 {
+<a name="l00611"></a>00611 zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a> = alive-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00612"></a>00612 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>;
+<a name="l00613"></a>00613 alive-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00614"></a>00614 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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>);
+<a name="l00615"></a>00615 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
+<a name="l00616"></a>00616 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = zombie;
+<a name="l00617"></a>00617 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; zombie-&gt;chans.size(); i++)
+<a name="l00618"></a>00618 {
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
+<a name="l00620"></a>00620 {
+<a name="l00621"></a>00621 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel-&gt;name)
+<a name="l00622"></a>00622 {
+<a name="l00623"></a>00623 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
+<a name="l00624"></a>00624 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(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>);
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 userlist(zombie,Ptr);
+<a name="l00631"></a>00631 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 }
+<a name="l00634"></a>00634 }
+<a name="l00635"></a>00635 }
+<a name="l00636"></a>00636 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00637"></a>00637 }
</pre></div>
<p>
</td>
@@ -2437,11 +2410,11 @@ To the user, it will appear as if they typed /QUIT themselves, except for the fa
WARNING!<p>
Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00391">391</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00390">390</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00392"></a>00392 {
-<a name="l00393"></a>00393 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
-<a name="l00394"></a>00394 }
+References <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00391"></a>00391 {
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
+<a name="l00393"></a>00393 }
</pre></div>
<p>
</td>
@@ -2473,12 +2446,12 @@ References <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00318">318</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00317">317</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">ServerConfig::Read()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
-<a name="l00321"></a>00321 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
-<a name="l00322"></a>00322 }
+References <a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">ServerConfig::Read()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
+<a name="l00320"></a>00320 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
+<a name="l00321"></a>00321 }
</pre></div>
<p>
</td>
@@ -2522,11 +2495,11 @@ Sends a line of text down a TCP/IP socket.
<p>
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00426">426</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00425">425</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00427"></a>00427 {
-<a name="l00428"></a>00428 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00429"></a>00429 }
+References <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00426"></a>00426 {
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00428"></a>00428 }
</pre></div>
<p>
</td>
@@ -2582,18 +2555,18 @@ Sends text from a user to a channel (mulicast).
<p>
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00460">460</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender()</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00461"></a>00461 {
-<a name="l00462"></a>00462 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="keywordflow">else</span>
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00469"></a>00469 }
-<a name="l00470"></a>00470 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00459">459</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender()</a>, and <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel()</a>.<div class="fragment"><pre class="fragment"><a name="l00460"></a>00460 {
+<a name="l00461"></a>00461 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00462"></a>00462 {
+<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465 <span class="keywordflow">else</span>
+<a name="l00466"></a>00466 {
+<a name="l00467"></a>00467 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 }
</pre></div>
<p>
</td>
@@ -2643,9 +2616,9 @@ Writes text to a channel, but from a server, including all.
<p>
This can be used to send server notices to a group of users.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00455">455</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-<a name="l00458"></a>00458 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00454">454</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00455"></a>00455 {
+<a name="l00456"></a>00456 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+<a name="l00457"></a>00457 }
</pre></div>
<p>
</td>
@@ -2695,18 +2668,18 @@ Sends text from a user to one or more channels (mulicast).
<p>
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00477">477</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.<div class="fragment"><pre class="fragment"><a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00482"></a>00482 }
-<a name="l00483"></a>00483 <span class="keywordflow">else</span>
-<a name="l00484"></a>00484 {
-<a name="l00485"></a>00485 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00486"></a>00486 }
-<a name="l00487"></a>00487 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00476">476</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.<div class="fragment"><pre class="fragment"><a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00479"></a>00479 {
+<a name="l00480"></a>00480 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00481"></a>00481 }
+<a name="l00482"></a>00482 <span class="keywordflow">else</span>
+<a name="l00483"></a>00483 {
+<a name="l00484"></a>00484 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 }
</pre></div>
<p>
</td>
@@ -2756,11 +2729,11 @@ Sends text from a user to a socket.
<p>
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00436">436</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00435">435</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>.<div class="fragment"><pre class="fragment"><a name="l00437"></a>00437 {
-<a name="l00438"></a>00438 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00439"></a>00439 }
+References <a class="el" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom()</a>.<div class="fragment"><pre class="fragment"><a name="l00436"></a>00436 {
+<a name="l00437"></a>00437 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00438"></a>00438 }
</pre></div>
<p>
</td>
@@ -2817,11 +2790,11 @@ modes[2] = user-&gt;nick;<p>
Srv-&gt;SendMode(modes,3,user);<p>
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00421">421</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00420">420</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode()</a>.<div class="fragment"><pre class="fragment"><a name="l00422"></a>00422 {
-<a name="l00423"></a>00423 <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);
-<a name="l00424"></a>00424 }
+References <a class="el" href="inspircd_8h-source.html#l00109">InspIRCd::ModeGrok</a>, and <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser::ServerMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>-&gt;<a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(parameters,pcnt,user);
+<a name="l00423"></a>00423 }
</pre></div>
<p>
</td>
@@ -2856,11 +2829,11 @@ Sends text to all opers.
<p>
This method sends a server notice to all opers with the usermode +s.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00346">346</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00345">345</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00347"></a>00347 {
-<a name="l00348"></a>00348 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00349"></a>00349 }
+References <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00348"></a>00348 }
</pre></div>
<p>
</td>
@@ -2904,11 +2877,11 @@ Sends text from the server to a socket.
<p>
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00431">431</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00430">430</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00432"></a>00432 {
-<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00434"></a>00434 }
+References <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.<div class="fragment"><pre class="fragment"><a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00433"></a>00433 }
</pre></div>
<p>
</td>
@@ -2962,20 +2935,20 @@ The format will become:<p>
:localserver TEXT<p>
Which is useful for numerics and server notices to single users, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00441">441</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo()</a>.<div class="fragment"><pre class="fragment"><a name="l00442"></a>00442 {
-<a name="l00443"></a>00443 <span class="keywordflow">if</span> (!Source)
-<a name="l00444"></a>00444 {
-<a name="l00445"></a>00445 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-<a name="l00446"></a>00446 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
-<a name="l00447"></a>00447 }
-<a name="l00448"></a>00448 <span class="keywordflow">else</span>
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 <span class="comment">// otherwise it comes from the user specified</span>
-<a name="l00451"></a>00451 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00440">440</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo()</a>.<div class="fragment"><pre class="fragment"><a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <span class="keywordflow">if</span> (!Source)
+<a name="l00443"></a>00443 {
+<a name="l00444"></a>00444 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+<a name="l00445"></a>00445 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 <span class="keywordflow">else</span>
+<a name="l00448"></a>00448 {
+<a name="l00449"></a>00449 <span class="comment">// otherwise it comes from the user specified</span>
+<a name="l00450"></a>00450 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452 }
</pre></div>
<p>
</td>
@@ -3027,9 +3000,9 @@ These can be RFC specified modes such as +i, or module provided modes, including
Serv-&gt;SendToModeMask("xi", WM_OR, "m00");<p>
Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00359">359</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00362"></a>00362 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00358">358</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00361"></a>00361 }
</pre></div>
<p>
</td>
@@ -3073,11 +3046,11 @@ Sends a WALLOPS message.
<p>
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00489">489</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00488">488</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps()</a>.<div class="fragment"><pre class="fragment"><a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00492"></a>00492 }
+References <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps()</a>.<div class="fragment"><pre class="fragment"><a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00491"></a>00491 }
</pre></div>
<p>
</td>
@@ -3121,18 +3094,18 @@ Remove a user's connection to the irc server, but leave their client in existenc
<p>
When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00598">598</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="users_8cpp-source.html#l00232">userrec::ClearBuffer()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00101">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">userrec::ident</a>, and <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00599"></a>00599 {
-<a name="l00600"></a>00600 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00601"></a>00601 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>;
-<a name="l00602"></a>00602 user-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00603"></a>00603 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
-<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
-<a name="l00605"></a>00605 shutdown(old_fd,2);
-<a name="l00606"></a>00606 close(old_fd);
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00608"></a>00608 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00597">597</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00253">userrec::ClearBuffer()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00102">FD_MAGIC_NUMBER</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, and <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>.<div class="fragment"><pre class="fragment"><a name="l00598"></a>00598 {
+<a name="l00599"></a>00599 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00600"></a>00600 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>;
+<a name="l00601"></a>00601 user-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00602"></a>00602 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
+<a name="l00603"></a>00603 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
+<a name="l00604"></a>00604 shutdown(old_fd,2);
+<a name="l00605"></a>00605 close(old_fd);
+<a name="l00606"></a>00606 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00607"></a>00607 }
</pre></div>
<p>
</td>
@@ -3140,7 +3113,7 @@ References <a class="el" href="users_8cpp-source.html#l00232">userrec::ClearBuff
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classServerConfig-members.html b/docs/module-doc/classServerConfig-members.html
index 6093b0551..0913e0c3e 100644
--- a/docs/module-doc/classServerConfig-members.html
+++ b/docs/module-doc/classServerConfig-members.html
@@ -6,6 +6,7 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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>
<h1>ServerConfig Member List</h1>This is the complete list of members for <a class="el" href="classServerConfig.html">ServerConfig</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a>(int port, Module *iomod)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
@@ -20,6 +21,7 @@
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(char *tag, char *var, int index, char *result, std::stringstream *config)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(char *tag, std::stringstream *config)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#debugging">debugging</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a>(int port)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#DieDelay">DieDelay</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
@@ -29,7 +31,9 @@
<tr class="memlist"><td><a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *config_f, const char *tag)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, const char *tag, int index)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(char *buffer, size_t maxsize, FILE *&amp;file)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(int port)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#include_5Fstack">include_stack</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td><code> [private]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#IOHookModule">IOHookModule</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(const char *filename, std::stringstream *target, std::stringstream *errorstream)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#log_5Ffile">log_file</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#LogLevel">LogLevel</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
@@ -49,15 +53,15 @@
<tr class="memlist"><td><a class="el" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(bool bail, userrec *user)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *config_f, const char *tag, const char *var, int index, char *result)</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#RULES">RULES</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>()</td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#SoftLimit">SoftLimit</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classServerConfig.html#unlimitcore">unlimitcore</a></td><td><a class="el" href="classServerConfig.html">ServerConfig</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classServerConfig.html b/docs/module-doc/classServerConfig.html
index 990abb166..28c2a00f4 100644
--- a/docs/module-doc/classServerConfig.html
+++ b/docs/module-doc/classServerConfig.html
@@ -16,7 +16,7 @@ Inheritance diagram for ServerConfig:<p><center><img src="classServerConfig__inh
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ServerConfig:<p><center><img src="classServerConfig__coll__graph.gif" border="0" usemap="#ServerConfig__coll__map" alt="Collaboration graph"></center>
<map name="ServerConfig__coll__map">
-<area href="classclassbase.html" shape="rect" coords="38,12,118,39" alt="">
+<area href="classclassbase.html" shape="rect" coords="40,11,120,37" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classServerConfig-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
@@ -41,6 +41,12 @@ Inheritance diagram for ServerConfig:<p><center><img src="classServerConfig__inh
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a> (std::stringstream *config, const char *tag, int index)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classModule.html">Module</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a> (int port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a> (int port, <a class="el" href="classModule.html">Module</a> *iomod)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a> (int port)</td></tr>
+
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a> [MAXBUF]</td></tr>
@@ -149,6 +155,9 @@ Inheritance diagram for ServerConfig:<p><center><img src="classServerConfig__inh
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a> [255]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A list of ports which the server is listening on. <a href="#ports_5B_32_35_35_5D"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::map&lt; int, <a class="el" href="classModule.html">Module</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#IOHookModule">IOHookModule</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A list of ports claimed by IO Modules. <a href="#IOHookModule"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a> (char *buffer, size_t maxsize, FILE *&amp;file)</td></tr>
@@ -168,7 +177,7 @@ It allows for reading new config values, accessing configuration files, and stor
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00039">39</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00040">40</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ServerConfig_28_29"></a><!-- doxytag: member="ServerConfig::ServerConfig" ref="ServerConfig_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -197,6 +206,43 @@ Definition at line <a class="el" href="inspircd__io_8h-source.html#l00039">39</a
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29"></a><!-- doxytag: member="ServerConfig::AddIOHook" ref="AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29" args="(int port, Module *iomod)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">bool ServerConfig::AddIOHook </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="classModule.html">Module</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>iomod</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
<a class="anchor" name="ClearStack_28_29"></a><!-- doxytag: member="ServerConfig::ClearStack" ref="ClearStack_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -225,7 +271,7 @@ Clears the include stack in preperation for a <a class="el" href="classServerCon
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29"></a><!-- doxytag: member="ServerConfig::ConfProcess" ref="ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29" args="(char *buffer, long linenumber, std::stringstream *errorstream, bool &amp;error, std::string filename)" --><p>
@@ -339,7 +385,7 @@ This private method processes one line of configutation, appending errors to err
<p>
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>. </td>
</tr>
</table>
<a class="anchor" name="ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29"></a><!-- doxytag: member="ServerConfig::ConfValueEnum" ref="ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29" args="(char *tag, std::stringstream *config)" --><p>
@@ -379,6 +425,34 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPer
</td>
</tr>
</table>
+<a class="anchor" name="DelIOHook_28int_20port_29"></a><!-- doxytag: member="ServerConfig::DelIOHook" ref="DelIOHook_28int_20port_29" args="(int port)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">bool ServerConfig::DelIOHook </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>port</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
<a class="anchor" name="EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29"></a><!-- doxytag: member="ServerConfig::EnumConf" ref="EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29" args="(std::stringstream *config_f, const char *tag)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -415,7 +489,7 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPer
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00868">ConfigReader::Enumerate()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00867">ConfigReader::Enumerate()</a>. </td>
</tr>
</table>
<a class="anchor" name="EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29"></a><!-- doxytag: member="ServerConfig::EnumValues" ref="EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29" args="(std::stringstream *config, const char *tag, int index)" --><p>
@@ -460,7 +534,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00868">ConfigReader:
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00873">ConfigReader::EnumerateValues()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00872">ConfigReader::EnumerateValues()</a>. </td>
</tr>
</table>
<a class="anchor" name="fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29"></a><!-- doxytag: member="ServerConfig::fgets_safe" ref="fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29" args="(char *buffer, size_t maxsize, FILE *&amp;file)" --><p>
@@ -508,6 +582,36 @@ Used by the config file subsystem to safely read a C-style string without depend
it can read both windows and UNIX style linefeeds transparently. </td>
</tr>
</table>
+<a class="anchor" name="GetIOHook_28int_20port_29"></a><!-- doxytag: member="ServerConfig::GetIOHook" ref="GetIOHook_28int_20port_29" args="(int port)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classModule.html">Module</a>* ServerConfig::GetIOHook </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>port</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29"></a><!-- doxytag: member="ServerConfig::LoadConf" ref="LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29" args="(const char *filename, std::stringstream *target, std::stringstream *errorstream)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -550,7 +654,7 @@ it can read both windows and UNIX style linefeeds transparently. </td>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="Read_28bool_20bail_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="ServerConfig::Read" ref="Read_28bool_20bail_2C_20userrec_20_2Auser_29" args="(bool bail, userrec *user)" --><p>
@@ -591,7 +695,7 @@ Read the entire configuration into memory and initialize this class.
<p>
All other methods should be used only by the core.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00318">Server::RehashServer()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00317">Server::RehashServer()</a>. </td>
</tr>
</table>
<a class="anchor" name="ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29"></a><!-- doxytag: member="ServerConfig::ReadConf" ref="ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29" args="(std::stringstream *config_f, const char *tag, const char *var, int index, char *result)" --><p>
@@ -648,7 +752,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00318">Server::Rehas
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00782">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ConfigReader::ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00781">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ConfigReader::ReadValue()</a>. </td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
@@ -676,7 +780,7 @@ A list of IP addresses the server is listening on.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00216">216</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00217">217</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminEmail_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminEmail" ref="AdminEmail_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -703,9 +807,9 @@ Holds the email address of the admin, for output in the /ADMIN command.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00089">89</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00090">90</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminName_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminName" ref="AdminName_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -732,9 +836,9 @@ Holds the admin's name, for output in the /ADMIN command.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00085">85</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AdminNick_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::AdminNick" ref="AdminNick_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -761,9 +865,9 @@ Holds the admin's nickname, for output in the /ADMIN command.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00094">94</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00095">95</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00549">Server::GetAdmin()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00548">Server::GetAdmin()</a>. </td>
</tr>
</table>
<a class="anchor" name="AllowHalfop"></a><!-- doxytag: member="ServerConfig::AllowHalfop" ref="AllowHalfop" args="" --><p>
@@ -790,7 +894,7 @@ If this value is true, halfops have been enabled in the configuration file.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00171">171</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00172">172</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Classes"></a><!-- doxytag: member="ServerConfig::Classes" ref="Classes" args="" --><p>
@@ -817,7 +921,9 @@ The connect classes in use by the IRC server.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00242">242</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00243">243</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="config_5Ff"></a><!-- doxytag: member="ServerConfig::config_f" ref="config_5Ff" args="" --><p>
@@ -844,9 +950,9 @@ The parsed configuration file as a stringstream.
<p>
You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use <a class="el" href="classConfigReader.html">ConfigReader</a> instead which provides a simpler abstraction of configuration files.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00238">238</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00239">239</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>. </td>
</tr>
</table>
<a class="anchor" name="debugging"></a><!-- doxytag: member="ServerConfig::debugging" ref="debugging" args="" --><p>
@@ -873,7 +979,7 @@ True if the DEBUG loglevel is selected.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00202">202</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00203">203</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DieDelay"></a><!-- doxytag: member="ServerConfig::DieDelay" ref="DieDelay" args="" --><p>
@@ -900,7 +1006,7 @@ How many seconds to wait before exiting the program when /DIE is correctly issue
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00211">211</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00212">212</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="diepass_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::diepass" ref="diepass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -927,7 +1033,7 @@ The admin-configured /DIE password.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00098">98</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00099">99</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DieValue_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DieValue" ref="DieValue_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -954,7 +1060,7 @@ The last string found within a &lt;die&gt; tag, or an empty string.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00121">121</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00122">122</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="DisabledCommands_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DisabledCommands" ref="DisabledCommands_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -981,7 +1087,7 @@ This variable contains a space-seperated list of commands which are disabled by
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00131">131</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00132">132</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="dns_5Ftimeout"></a><!-- doxytag: member="ServerConfig::dns_timeout" ref="dns_5Ftimeout" args="" --><p>
@@ -1008,7 +1114,9 @@ The number of seconds the <a class="el" href="classDNS.html">DNS</a> subsystem w
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00176">176</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00177">177</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="DNSServer_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::DNSServer" ref="DNSServer_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1035,7 +1143,7 @@ The <a class="el" href="classDNS.html">DNS</a> server to use for <a class="el" h
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00125">125</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00126">126</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="include_5Fstack"></a><!-- doxytag: member="ServerConfig::include_stack" ref="include_5Fstack" args="" --><p>
@@ -1062,7 +1170,34 @@ This variable holds the names of all files included from the main one.
<p>
This is used to make sure that no files are recursively included.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00047">47</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00048">48</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IOHookModule"></a><!-- doxytag: member="ServerConfig::IOHookModule" ref="IOHookModule" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::map&lt;int,<a class="el" href="classModule.html">Module</a>*&gt; <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig::IOHookModule</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A list of ports claimed by IO Modules.
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00256">256</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="log_5Ffile"></a><!-- doxytag: member="ServerConfig::log_file" ref="log_5Ffile" args="" --><p>
@@ -1089,7 +1224,7 @@ The file handle of the logfile.
<p>
If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!).
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00151">151</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00152">152</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="LogLevel"></a><!-- doxytag: member="ServerConfig::LogLevel" ref="LogLevel" args="" --><p>
@@ -1116,7 +1251,7 @@ The loglevel in use by the IRC server.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00206">206</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00207">207</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MaxConn"></a><!-- doxytag: member="ServerConfig::MaxConn" ref="MaxConn" args="" --><p>
@@ -1143,7 +1278,7 @@ The value to be used for listen() backlogs as default.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00187">187</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00188">188</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MaxWhoResults"></a><!-- doxytag: member="ServerConfig::MaxWhoResults" ref="MaxWhoResults" args="" --><p>
@@ -1170,7 +1305,7 @@ The maximum number of /WHO results allowed in any single /WHO command.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00198">198</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00199">199</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ModPath_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::ModPath" ref="ModPath_5B_31_30_32_34_5D" args="[1024]" --><p>
@@ -1197,7 +1332,7 @@ The full path to the modules directory.
<p>
This is either set at compile time, or overridden in the configuration file via the &lt;options&gt; tag.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00138">138</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00139">139</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="module_5Fnames"></a><!-- doxytag: member="ServerConfig::module_names" ref="module_5Fnames" args="" --><p>
@@ -1224,9 +1359,9 @@ A list of module names (names only, no paths) which are currently loaded by the
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00247">247</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00248">248</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00724">Server::FindModule()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00723">Server::FindModule()</a>. </td>
</tr>
</table>
<a class="anchor" name="MOTD"></a><!-- doxytag: member="ServerConfig::MOTD" ref="MOTD" args="" --><p>
@@ -1253,7 +1388,7 @@ The MOTD file, cached in a file_cache type.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00220">220</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00221">221</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="motd_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::motd" ref="motd_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1280,7 +1415,7 @@ The pathname and filename of the message of the day file, as defined by the admi
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00107">107</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00108">108</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MyExecutable_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::MyExecutable" ref="MyExecutable_5B_31_30_32_34_5D" args="[1024]" --><p>
@@ -1307,7 +1442,7 @@ The full pathname to the executable, as given in argv[0] when the program starts
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00143">143</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00144">144</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="NetBufferSize"></a><!-- doxytag: member="ServerConfig::NetBufferSize" ref="NetBufferSize" args="" --><p>
@@ -1334,7 +1469,7 @@ The size of the read() buffer in the user handling code, used to read data into
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00182">182</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00183">183</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Network_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::Network" ref="Network_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1359,9 +1494,9 @@ Definition at line <a class="el" href="inspircd__io_8h-source.html#l00182">182</
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00074">74</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00075">75</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00539">Server::GetNetworkName()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00538">Server::GetNetworkName()</a>. </td>
</tr>
</table>
<a class="anchor" name="nofork"></a><!-- doxytag: member="ServerConfig::nofork" ref="nofork" args="" --><p>
@@ -1388,7 +1523,7 @@ If this value is true, the owner of the server specified -nofork on the command
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00158">158</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00159">159</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="PID_5B_31_30_32_34_5D"></a><!-- doxytag: member="ServerConfig::PID" ref="PID_5B_31_30_32_34_5D" args="[1024]" --><p>
@@ -1415,7 +1550,7 @@ The full pathname and filename of the PID file as defined in the configuration.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00229">229</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00230">230</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ports_5B_32_35_35_5D"></a><!-- doxytag: member="ServerConfig::ports" ref="ports_5B_32_35_35_5D" args="[255]" --><p>
@@ -1442,7 +1577,7 @@ A list of ports which the server is listening on.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00251">251</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00252">252</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="PrefixQuit_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::PrefixQuit" ref="PrefixQuit_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1469,7 +1604,7 @@ The quit prefix in use, or an empty string.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00116">116</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00117">117</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="restartpass_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::restartpass" ref="restartpass_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1496,7 +1631,7 @@ The admin-configured /RESTART password.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00102">102</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00103">103</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="RULES"></a><!-- doxytag: member="ServerConfig::RULES" ref="RULES" args="" --><p>
@@ -1523,7 +1658,7 @@ The RULES file, cached in a file_cache type.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00224">224</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00225">225</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="rules_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::rules" ref="rules_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1550,7 +1685,7 @@ The pathname and filename of the rules file, as defined by the administrator.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00112">112</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00113">113</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ServerDesc_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::ServerDesc" ref="ServerDesc_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1577,9 +1712,9 @@ Holds the description of the local server as defined by the administrator.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00544">Server::GetServerDescription()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00543">Server::GetServerDescription()</a>. </td>
</tr>
</table>
<a class="anchor" name="ServerName_5BMAXBUF_5D"></a><!-- doxytag: member="ServerConfig::ServerName" ref="ServerName_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1606,9 +1741,9 @@ Holds the server name of the local server as defined by the administrator.
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00068">68</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00069">69</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00534">Server::GetServerName()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00533">Server::GetServerName()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="SoftLimit"></a><!-- doxytag: member="ServerConfig::SoftLimit" ref="SoftLimit" args="" --><p>
@@ -1635,7 +1770,9 @@ The soft limit value assigned to the irc server.
<p>
The IRC server will not allow more than this number of local users.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00193">193</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00194">194</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="unlimitcore"></a><!-- doxytag: member="ServerConfig::unlimitcore" ref="unlimitcore" args="" --><p>
@@ -1662,12 +1799,12 @@ If this value is true, the owner of the server has chosen to unlimit the coredum
<p>
This is often used when debugging.
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00166">166</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00167">167</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classServerConfig__coll__graph.map b/docs/module-doc/classServerConfig__coll__graph.map
index aca75f307..c18c2ef12 100644
--- a/docs/module-doc/classServerConfig__coll__graph.map
+++ b/docs/module-doc/classServerConfig__coll__graph.map
@@ -1,2 +1,2 @@
base referer
-rect $classclassbase.html 38,12 118,39
+rect $classclassbase.html 40,11 120,37
diff --git a/docs/module-doc/classServerConfig__coll__graph.md5 b/docs/module-doc/classServerConfig__coll__graph.md5
index 8b64681f9..19bbc1210 100644
--- a/docs/module-doc/classServerConfig__coll__graph.md5
+++ b/docs/module-doc/classServerConfig__coll__graph.md5
@@ -1 +1 @@
-ccb417531b2d5c8c500f80e926167613 \ No newline at end of file
+6622bf16a5d6e3d1fa66d187c3430dae \ No newline at end of file
diff --git a/docs/module-doc/classSocketEngine-members.html b/docs/module-doc/classSocketEngine-members.html
index 4a2c4f319..2ba70b22c 100644
--- a/docs/module-doc/classSocketEngine-members.html
+++ b/docs/module-doc/classSocketEngine-members.html
@@ -17,7 +17,7 @@
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#ts">ts</a></td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">Wait</a>(std::vector&lt; int &gt; &amp;fdlist)</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">~SocketEngine</a>()</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classSocketEngine.html b/docs/module-doc/classSocketEngine.html
index 76c76d918..0dedef254 100644
--- a/docs/module-doc/classSocketEngine.html
+++ b/docs/module-doc/classSocketEngine.html
@@ -83,7 +83,7 @@ Please note that if there is a catastrophic failure (for example, you try and en
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00035">35</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00036"></a>00036 {
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00036"></a>00036 {
<a name="l00037"></a>00037 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::SocketEngine()"</span>);
<a name="l00038"></a>00038 <span class="preprocessor">#ifdef USE_EPOLL</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span> <a class="code" href="classSocketEngine.html#EngineHandle">EngineHandle</a> = epoll_create(65535);
@@ -127,7 +127,7 @@ Destructor The destructor transparently tidies up any resources used by the sock
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00046">46</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00047"></a>00047 {
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00047"></a>00047 {
<a name="l00048"></a>00048 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::~SocketEngine()"</span>);
<a name="l00049"></a>00049 <span class="preprocessor">#ifdef USE_EPOLL</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span> close(<a class="code" href="classSocketEngine.html#EngineHandle">EngineHandle</a>);
@@ -188,9 +188,9 @@ You must provide a type (see the consts in <a class="el" href="socketengine_8h.h
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00065">65</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00053">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00066"></a>00066 {
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>.<div class="fragment"><pre class="fragment"><a name="l00066"></a>00066 {
<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((fd &lt; 0) || (fd &gt; 65535))
<a name="l00068"></a>00068 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00069"></a>00069 this-&gt;<a class="code" href="classSocketEngine.html#fds">fds</a>.push_back(fd);
@@ -262,9 +262,9 @@ Delete a file descriptor f rom the engine This function call deletes a file desc
<p>
Definition at line <a class="el" href="socketengine_8cpp-source.html#l00103">103</a> of file <a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8h-source.html#l00069">EngineHandle</a>, <a class="el" href="socketengine_8h-source.html#l00068">fds</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="socketengine_8cpp-source.html#l00033">ref</a>, and <a class="el" href="socketengine_8h-source.html#l00055">X_READBIT</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104 {
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104 {
<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SocketEngine::DelFd(%d)"</span>,fd);
<a name="l00106"></a>00106
<a name="l00107"></a>00107 <span class="keywordflow">if</span> ((fd &lt; 0) || (fd &gt; 65535))
@@ -589,7 +589,7 @@ Referenced by <a class="el" href="socketengine_8cpp-source.html#l00146">Wait()</
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="socketengine_8h-source.html">socketengine.h</a><li><a class="el" href="socketengine_8cpp-source.html">socketengine.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classVersion-members.html b/docs/module-doc/classVersion-members.html
index 8463f70f4..d86eb68ce 100644
--- a/docs/module-doc/classVersion-members.html
+++ b/docs/module-doc/classVersion-members.html
@@ -15,7 +15,7 @@
<tr class="memlist"><td><a class="el" href="classVersion.html#Revision">Revision</a></td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a>(int major, int minor, int revision, int build, int flags)</td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classVersion.html b/docs/module-doc/classVersion.html
index d2b5d2220..d9be95e78 100644
--- a/docs/module-doc/classVersion.html
+++ b/docs/module-doc/classVersion.html
@@ -42,7 +42,7 @@ A class of type Version is returned by the GetVersion method of the <a class="el
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00113">113</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00131">131</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29"></a><!-- doxytag: member="Version::Version" ref="Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29" args="(int major, int minor, int revision, int build, int flags)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -97,7 +97,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00113">113</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00159">159</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00159"></a>00159 : <a class="code" href="classVersion.html#Major">Major</a>(major), <a class="code" href="classVersion.html#Minor">Minor</a>(minor), <a class="code" href="classVersion.html#Revision">Revision</a>(revision), <a class="code" href="classVersion.html#Build">Build</a>(build), <a class="code" href="classVersion.html#Flags">Flags</a>(flags) { };
+Definition at line <a class="el" href="modules_8cpp-source.html#l00158">158</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00158"></a>00158 : <a class="code" href="classVersion.html#Major">Major</a>(major), <a class="code" href="classVersion.html#Minor">Minor</a>(minor), <a class="code" href="classVersion.html#Revision">Revision</a>(revision), <a class="code" href="classVersion.html#Build">Build</a>(build), <a class="code" href="classVersion.html#Flags">Flags</a>(flags) { };
</pre></div>
<p>
</td>
@@ -126,7 +126,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00159">159</a>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Flags"></a><!-- doxytag: member="Version::Flags" ref="Flags" args="" --><p>
@@ -151,7 +151,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Major"></a><!-- doxytag: member="Version::Major" ref="Major" args="" --><p>
@@ -176,7 +176,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Minor"></a><!-- doxytag: member="Version::Minor" ref="Minor" args="" --><p>
@@ -201,7 +201,7 @@ Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="Revision"></a><!-- doxytag: member="Version::Revision" ref="Revision" args="" --><p>
@@ -226,12 +226,12 @@ Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00116">116</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00134">134</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classWhoWasUser-members.html b/docs/module-doc/classWhoWasUser-members.html
index 1139e562e..6e562e76f 100644
--- a/docs/module-doc/classWhoWasUser-members.html
+++ b/docs/module-doc/classWhoWasUser-members.html
@@ -13,7 +13,7 @@
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classWhoWasUser.html#signon">signon</a></td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classWhoWasUser.html b/docs/module-doc/classWhoWasUser.html
index f12e98d57..0a32092aa 100644
--- a/docs/module-doc/classWhoWasUser.html
+++ b/docs/module-doc/classWhoWasUser.html
@@ -34,7 +34,7 @@ A lightweight userrec used by WHOWAS.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00332">332</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00336">336</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="WhoWasUser::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -57,7 +57,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00332">332</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00337">337</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00341">341</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="WhoWasUser::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
@@ -82,7 +84,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00337">337</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00339">339</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00343">343</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5B_31_36_30_5D"></a><!-- doxytag: member="WhoWasUser::host" ref="host_5B_31_36_30_5D" args="[160]" --><p>
@@ -107,7 +111,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00339">339</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00338">338</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00342">342</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="ident_5BIDENTMAX_2B_31_5D"></a><!-- doxytag: member="WhoWasUser::ident" ref="ident_5BIDENTMAX_2B_31_5D" args="[IDENTMAX+1]" --><p>
@@ -132,7 +138,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00338">338</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00336">336</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00340">340</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="WhoWasUser::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
@@ -157,7 +165,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00336">336</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00335">335</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00339">339</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="server_5B_32_35_36_5D"></a><!-- doxytag: member="WhoWasUser::server" ref="server_5B_32_35_36_5D" args="[256]" --><p>
@@ -182,7 +192,9 @@ Definition at line <a class="el" href="users_8h-source.html#l00335">335</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00340">340</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00344">344</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<a class="anchor" name="signon"></a><!-- doxytag: member="WhoWasUser::signon" ref="signon" args="" --><p>
@@ -207,12 +219,14 @@ Definition at line <a class="el" href="users_8h-source.html#l00340">340</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00341">341</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00345">345</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classXLine-members.html b/docs/module-doc/classXLine-members.html
index f6812f058..d31eb7759 100644
--- a/docs/module-doc/classXLine-members.html
+++ b/docs/module-doc/classXLine-members.html
@@ -14,7 +14,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classXLine.html b/docs/module-doc/classXLine.html
index e031d7638..385859750 100644
--- a/docs/module-doc/classXLine.html
+++ b/docs/module-doc/classXLine.html
@@ -185,7 +185,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00053">53</a> of fi
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classZLine-members.html b/docs/module-doc/classZLine-members.html
index b2c982668..21ad50226 100644
--- a/docs/module-doc/classZLine-members.html
+++ b/docs/module-doc/classZLine-members.html
@@ -16,7 +16,7 @@
<tr class="memlist"><td><a class="el" href="classXLine.html#set_5Ftime">set_time</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classXLine.html#source_5B_32_35_36_5D">source</a></td><td><a class="el" href="classXLine.html">XLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classZLine.html b/docs/module-doc/classZLine.html
index 335760d10..caef06faf 100644
--- a/docs/module-doc/classZLine.html
+++ b/docs/module-doc/classZLine.html
@@ -92,7 +92,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00108">108</a> of f
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="xline_8h-source.html">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classchanrec-members.html b/docs/module-doc/classchanrec-members.html
index edb7982d7..3512117d8 100644
--- a/docs/module-doc/classchanrec-members.html
+++ b/docs/module-doc/classchanrec-members.html
@@ -34,7 +34,7 @@
<tr class="memlist"><td><a class="el" href="classchanrec.html#topicset">topicset</a></td><td><a class="el" href="classchanrec.html">chanrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classchanrec.html#_7Echanrec_28_29">~chanrec</a>()</td><td><a class="el" href="classchanrec.html">chanrec</a></td><td><code> [inline, virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classchanrec.html b/docs/module-doc/classchanrec.html
index ec4daab2b..228e998ed 100644
--- a/docs/module-doc/classchanrec.html
+++ b/docs/module-doc/classchanrec.html
@@ -123,18 +123,18 @@ Creates a channel record and initialises it with default values.
<p>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00074">74</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00147">binarymodes</a>, <a class="el" href="channels_8h-source.html#l00125">created</a>, <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="channels_8h-source.html#l00143">key</a>, <a class="el" href="channels_8h-source.html#l00138">limit</a>, <a class="el" href="channels_8h-source.html#l00108">name</a>, <a class="el" href="channels_8h-source.html#l00133">setby</a>, <a class="el" href="channels_8h-source.html#l00122">topic</a>, and <a class="el" href="channels_8h-source.html#l00129">topicset</a>.<div class="fragment"><pre class="fragment"><a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
-<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
-<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
-<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
-<a name="l00080"></a>00080 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
-<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
-<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
-<a name="l00083"></a>00083 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
-<a name="l00084"></a>00084 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00073">73</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00147">binarymodes</a>, <a class="el" href="channels_8h-source.html#l00125">created</a>, <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="channels_8h-source.html#l00143">key</a>, <a class="el" href="channels_8h-source.html#l00138">limit</a>, <a class="el" href="channels_8h-source.html#l00108">name</a>, <a class="el" href="channels_8h-source.html#l00133">setby</a>, <a class="el" href="channels_8h-source.html#l00122">topic</a>, and <a class="el" href="channels_8h-source.html#l00129">topicset</a>.<div class="fragment"><pre class="fragment"><a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 strcpy(<a class="code" href="classchanrec.html#topic_5BMAXBUF_5D">topic</a>,<span class="stringliteral">""</span>);
+<a name="l00078"></a>00078 strcpy(<a class="code" href="classchanrec.html#setby_5BNICKMAX_5D">setby</a>,<span class="stringliteral">""</span>);
+<a name="l00079"></a>00079 strcpy(<a class="code" href="classchanrec.html#key_5B_33_32_5D">key</a>,<span class="stringliteral">""</span>);
+<a name="l00080"></a>00080 <a class="code" href="classchanrec.html#created">created</a> = <a class="code" href="classchanrec.html#topicset">topicset</a> = <a class="code" href="classchanrec.html#limit">limit</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classchanrec.html#binarymodes">binarymodes</a> = 0;
+<a name="l00082"></a>00082 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.clear();
+<a name="l00083"></a>00083 }
</pre></div>
<p>
</td>
@@ -207,14 +207,14 @@ Add a user pointer to the internal reference list.
</dl>
The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00167">167</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00166">166</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
-<a name="l00170"></a>00170 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
-<a name="l00171"></a>00171 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>.<div class="fragment"><pre class="fragment"><a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.push_back(castuser);
+<a name="l00169"></a>00169 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
+<a name="l00170"></a>00170 }
</pre></div>
<p>
</td>
@@ -254,22 +254,22 @@ Delete a user pointer to the internal reference list.
</dl>
The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00173">173</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8h-source.html#l00108">name</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a &lt; <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (*a == castuser)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
-<a name="l00180"></a>00180 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
-<a name="l00181"></a>00181 <span class="keywordflow">return</span>;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
-<a name="l00185"></a>00185 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00172">172</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8h-source.html#l00108">name</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator a = <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.begin(); a &lt; <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.end(); a++)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (*a == castuser)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
+<a name="l00179"></a>00179 <a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>.erase(a);
+<a name="l00180"></a>00180 <span class="keywordflow">return</span>;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,<a class="code" href="classchanrec.html#name_5BCHANMAX_5D">name</a>);
+<a name="l00184"></a>00184 }
</pre></div>
<p>
</td>
@@ -311,21 +311,21 @@ For example if "+L #foo" is set, and you pass this method 'L', it will return 'f
<dl compact><dt><b>Returns:</b></dt><dd>The parameter for this mode is returned, or an empty string</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00147">147</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8cpp-source.html#l00070">custom_mode_params</a>.<div class="fragment"><pre class="fragment"><a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> i-&gt;parameter;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00160"></a>00160 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00146">146</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8cpp-source.html#l00069">custom_mode_params</a>.<div class="fragment"><pre class="fragment"><a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keywordflow">return</span> i-&gt;parameter;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00159"></a>00159 }
</pre></div>
<p>
</td>
@@ -360,9 +360,9 @@ Obtain the channel "user counter" This returns the channel reference counter, wh
<dl compact><dt><b>Returns:</b></dt><dd>The number of users on this channel</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00162">162</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> (this-&gt;internal_userlist.size());
-<a name="l00165"></a>00165 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00161">161</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> (this-&gt;internal_userlist.size());
+<a name="l00164"></a>00164 }
</pre></div>
<p>
</td>
@@ -398,13 +398,13 @@ These are used for rapid comparison to determine channel membership for PRIVMSG,
<dl compact><dt><b>Returns:</b></dt><dd>This function returns a vector of userrec pointers, each of which has been casted to char* to prevent circular references</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00187">187</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+Definition at line <a class="el" href="channels_8cpp-source.html#l00186">186</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
<p>
References <a class="el" href="channels_8h-source.html#l00117">internal_userlist</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00374">Server::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> &amp;<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
-<a name="l00190"></a>00190 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00373">Server::GetUsers()</a>.<div class="fragment"><pre class="fragment"><a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keywordflow">return</span> &amp;<a class="code" href="classchanrec.html#internal_5Fuserlist">internal_userlist</a>;
+<a name="l00189"></a>00189 }
</pre></div>
<p>
</td>
@@ -445,9 +445,9 @@ Returns true if a custom mode is set on a channel.
<dl compact><dt><b>Returns:</b></dt><dd>True if the custom mode is set, false if otherwise</dd></dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00142">142</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> (strchr(this-&gt;custom_modes,mode));
-<a name="l00145"></a>00145 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00141">141</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> (strchr(this-&gt;custom_modes,mode));
+<a name="l00144"></a>00144 }
</pre></div>
<p>
</td>
@@ -497,30 +497,30 @@ Sets or unsets a custom mode in the channels info.
</dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00086">86</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8cpp-source.html#l00111">SetCustomModeParam()</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (mode_on) {
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
-<a name="l00090"></a>00090 m[0] = mode;
-<a name="l00091"></a>00091 m[1] = <span class="charliteral">'\0'</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!strchr(this-&gt;custom_modes,mode))
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> {
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-&gt;<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
-<a name="l00101"></a>00101 <span class="keywordtype">int</span> pos = a.find(mode);
-<a name="l00102"></a>00102 a.erase(pos,1);
-<a name="l00103"></a>00103 strncpy(this-&gt;custom_modes,a.c_str(),MAXMODES);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this-&gt;custom_modes);
-<a name="l00106"></a>00106 this-&gt;<a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00085">85</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00112">custom_modes</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="channels_8cpp-source.html#l00110">SetCustomModeParam()</a>.<div class="fragment"><pre class="fragment"><a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (mode_on) {
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
+<a name="l00089"></a>00089 m[0] = mode;
+<a name="l00090"></a>00090 m[1] = <span class="charliteral">'\0'</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (!strchr(this-&gt;custom_modes,mode))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 strlcat(<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>,m,MAXMODES);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c set"</span>,mode);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> {
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="namespaceirc.html#string">std::string</a> a = this-&gt;<a class="code" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">custom_modes</a>;
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> pos = a.find(mode);
+<a name="l00101"></a>00101 a.erase(pos,1);
+<a name="l00102"></a>00102 strncpy(this-&gt;custom_modes,a.c_str(),MAXMODES);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this-&gt;custom_modes);
+<a name="l00105"></a>00105 this-&gt;<a class="code" href="classchanrec.html#SetCustomModeParam_28char_20mode_2C_20char_20_2Aparameter_2C_20bool_20mode_5Fon_29">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 }
</pre></div>
<p>
</td>
@@ -577,39 +577,39 @@ Sets or unsets the parameters for a custom mode in a channels info.
</dl>
<p>
-Definition at line <a class="el" href="channels_8cpp-source.html#l00111">111</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
-<p>
-References <a class="el" href="channels_8h-source.html#l00084">ModeParameter::channel</a>, <a class="el" href="channels_8cpp-source.html#l00070">custom_mode_params</a>, <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00082">ModeParameter::mode</a>, and <a class="el" href="channels_8h-source.html#l00083">ModeParameter::parameter</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00086">SetCustomMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00112"></a>00112 {
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
-<a name="l00115"></a>00115 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
-<a name="l00116"></a>00116 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
-<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this-&gt;name,CHANMAX);
-<a name="l00118"></a>00118 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (mode_on)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
-<a name="l00122"></a>00122 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">else</span>
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
-<a name="l00133"></a>00133 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
+Definition at line <a class="el" href="channels_8cpp-source.html#l00110">110</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
+<p>
+References <a class="el" href="channels_8h-source.html#l00084">ModeParameter::channel</a>, <a class="el" href="channels_8cpp-source.html#l00069">custom_mode_params</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="channels_8h-source.html#l00082">ModeParameter::mode</a>, and <a class="el" href="channels_8h-source.html#l00083">ModeParameter::parameter</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00085">SetCustomMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00111"></a>00111 {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"SetCustomModeParam called"</span>);
+<a name="l00114"></a>00114 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
+<a name="l00115"></a>00115 M.<a class="code" href="classModeParameter.html#mode">mode</a> = mode;
+<a name="l00116"></a>00116 strlcpy(M.<a class="code" href="classModeParameter.html#channel_5BCHANMAX_5D">channel</a>,this-&gt;name,CHANMAX);
+<a name="l00117"></a>00117 strlcpy(M.<a class="code" href="classModeParameter.html#parameter_5BMAXBUF_5D">parameter</a>,parameter,MAXBUF);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (mode_on)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
+<a name="l00121"></a>00121 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.push_back(M);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 <span class="keywordflow">else</span>
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.size())
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <span class="keywordflow">for</span> (vector&lt;ModeParameter&gt;::iterator i = <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.begin(); i &lt; <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.end(); i++)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> ((i-&gt;mode == mode) &amp;&amp; (!strcasecmp(this-&gt;name,i-&gt;channel)))
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
+<a name="l00132"></a>00132 <a class="code" href="channels_8cpp.html#custom_5Fmode_5Fparams">custom_mode_params</a>.erase(i);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
</pre></div>
<p>
</td>
@@ -642,7 +642,7 @@ The list of all bans set on the channel.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00151">151</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="binarymodes"></a><!-- doxytag: member="chanrec::binarymodes" ref="binarymodes" args="" --><p>
@@ -671,7 +671,7 @@ Contains a bitmask of the CM_* builtin (RFC) binary mode symbols.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00147">147</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="created"></a><!-- doxytag: member="chanrec::created" ref="created" args="" --><p>
@@ -700,7 +700,7 @@ Creation time.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00125">125</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="custom_5Fmodes_5BMAXMODES_5D"></a><!-- doxytag: member="chanrec::custom_modes" ref="custom_5Fmodes_5BMAXMODES_5D" args="[MAXMODES]" --><p>
@@ -729,7 +729,7 @@ Plugins may use this field in any way they see fit.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00112">112</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, and <a class="el" href="channels_8cpp-source.html#l00086">SetCustomMode()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, and <a class="el" href="channels_8cpp-source.html#l00085">SetCustomMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="internal_5Fuserlist"></a><!-- doxytag: member="chanrec::internal_userlist" ref="internal_5Fuserlist" args="" --><p>
@@ -758,7 +758,7 @@ User list (casted to char*'s to stop forward declaration stuff) (chicken and egg
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00117">117</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00167">AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00173">DelUser()</a>, and <a class="el" href="channels_8cpp-source.html#l00187">GetUsers()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00166">AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00172">DelUser()</a>, and <a class="el" href="channels_8cpp-source.html#l00186">GetUsers()</a>. </td>
</tr>
</table>
<a class="anchor" name="key_5B_33_32_5D"></a><!-- doxytag: member="chanrec::key" ref="key_5B_33_32_5D" args="[32]" --><p>
@@ -787,7 +787,7 @@ If this value is an empty string, there is no channel key in place.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00143">143</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="limit"></a><!-- doxytag: member="chanrec::limit" ref="limit" args="" --><p>
@@ -816,7 +816,7 @@ If this value is zero, there is no limit in place.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00138">138</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="name_5BCHANMAX_5D"></a><!-- doxytag: member="chanrec::name" ref="name_5BCHANMAX_5D" args="[CHANMAX]" --><p>
@@ -845,7 +845,7 @@ The channels name.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00108">108</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00173">DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00172">DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="setby_5BNICKMAX_5D"></a><!-- doxytag: member="chanrec::setby" ref="setby_5BNICKMAX_5D" args="[NICKMAX]" --><p>
@@ -874,7 +874,7 @@ If this member is an empty string, no topic was ever set.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00133">133</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="topic_5BMAXBUF_5D"></a><!-- doxytag: member="chanrec::topic" ref="topic_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -903,7 +903,7 @@ If this is an empty string, no channel topic is set.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00122">122</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="topicset"></a><!-- doxytag: member="chanrec::topicset" ref="topicset" args="" --><p>
@@ -932,12 +932,12 @@ If no topic was ever set, this will be equal to <a class="el" href="classchanrec
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00129">129</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00074">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00073">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, and <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a><li><a class="el" href="channels_8cpp-source.html">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classclassbase-members.html b/docs/module-doc/classclassbase-members.html
index 6ebcc98e8..2b22f303a 100644
--- a/docs/module-doc/classclassbase-members.html
+++ b/docs/module-doc/classclassbase-members.html
@@ -9,7 +9,7 @@
<tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classclassbase.html b/docs/module-doc/classclassbase.html
index ccef96079..5deada124 100644
--- a/docs/module-doc/classclassbase.html
+++ b/docs/module-doc/classclassbase.html
@@ -150,7 +150,7 @@ Referenced by <a class="el" href="base_8h-source.html#l00040">classbase()</a>.
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classclassbase__inherit__graph.md5 b/docs/module-doc/classclassbase__inherit__graph.md5
index f544ba5d8..90a8c0c47 100644
--- a/docs/module-doc/classclassbase__inherit__graph.md5
+++ b/docs/module-doc/classclassbase__inherit__graph.md5
@@ -1 +1 @@
-2dcead24293b96c88fe586688d98dbf1 \ No newline at end of file
+a7cad757539041de468d74629f972ab7 \ No newline at end of file
diff --git a/docs/module-doc/classcommand__t-members.html b/docs/module-doc/classcommand__t-members.html
index 661039851..ca5522451 100644
--- a/docs/module-doc/classcommand__t-members.html
+++ b/docs/module-doc/classcommand__t-members.html
@@ -6,21 +6,16 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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>
<h1>command_t Member List</h1>This is the complete list of members for <a class="el" href="classcommand__t.html">command_t</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#age">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#classbase_28_29">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extend</a>(std::string key, char *p)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#command">command</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a>(std::string cmd, char flags, int minpara)</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#flags_5Fneeded">flags_needed</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#GetExt_28std_3A_3Astring_20key_29">GetExt</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#GetExtList_28std_3A_3Adeque_3C_20std_3A_3Astring_20_3E_20_26list_29">GetExtList</a>(std::deque&lt; std::string &gt; &amp;list)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#handler_5Ffunction">handler_function</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a>(char **parameters, int pcnt, userrec *user)=0</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#min_5Fparams">min_params</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">source</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#source">source</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#total_5Fbytes">total_bytes</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classcommand__t.html#use_5Fcount">use_count</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+ <tr class="memlist"><td><a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a>()</td><td><a class="el" href="classcommand__t.html">command_t</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classcommand__t.html b/docs/module-doc/classcommand__t.html
index 1b665f081..11c891bda 100644
--- a/docs/module-doc/classcommand__t.html
+++ b/docs/module-doc/classcommand__t.html
@@ -5,30 +5,29 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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>
-<h1>command_t Class Reference</h1><!-- doxytag: class="command_t" --><!-- doxytag: inherits="Extensible" -->A structure that defines a command.
+<h1>command_t Class Reference</h1><!-- doxytag: class="command_t" -->A structure that defines a command.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="ctables_8h-source.html">ctables.h</a>&gt;</code>
<p>
Inheritance diagram for command_t:<p><center><img src="classcommand__t__inherit__graph.gif" border="0" usemap="#command__t__inherit__map" alt="Inheritance graph"></center>
<map name="command__t__inherit__map">
-<area href="classExtensible.html" shape="rect" coords="11,81,93,108" alt="">
-<area href="classclassbase.html" shape="rect" coords="12,7,92,33" alt="">
+<area href="classcmd__mode.html" shape="rect" coords="8,82,96,108" alt="">
</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for command_t:<p><center><img src="classcommand__t__coll__graph.gif" border="0" usemap="#command__t__coll__map" alt="Collaboration graph"></center>
-<map name="command__t__coll__map">
-<area href="classExtensible.html" shape="rect" coords="80,97,163,124" alt="">
-<area href="classclassbase.html" shape="rect" coords="7,7,87,33" alt="">
-</map>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center><a href="classcommand__t-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command</a> [MAXBUF]</td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a> (<a class="el" href="namespaceirc.html#string">std::string</a> cmd, char flags, int minpara)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)=0</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Command name. <a href="#command_5BMAXBUF_5D"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#handler_5Ffunction">handler_function</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#command">command</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handler function as in typedef. <a href="#handler_5Ffunction"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Command name. <a href="#command"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#flags_5Fneeded">flags_needed</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User flags needed to execute the command or 0. <a href="#flags_5Fneeded"></a><br></td></tr>
@@ -41,23 +40,43 @@ Inheritance diagram for command_t:<p><center><img src="classcommand__t__inherit_
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#total_5Fbytes">total_bytes</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">used by /stats m <a href="#total_5Fbytes"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">source</a> [MAXBUF]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html#source">source</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">used for resource tracking between modules <a href="#source_5BMAXBUF_5D"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">used for resource tracking between modules <a href="#source"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A structure that defines a command.
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00026">26</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="command_5BMAXBUF_5D"></a><!-- doxytag: member="command_t::command" ref="command_5BMAXBUF_5D" args="[MAXBUF]" --><p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00029">29</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29"></a><!-- doxytag: member="command_t::command_t" ref="command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29" args="(std::string cmd, char flags, int minpara)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t::command</a>[MAXBUF] </td>
+ <td class="md" nowrap valign="top">command_t::command_t </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>cmd</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>minpara</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
</tr>
</table>
</td>
@@ -71,20 +90,31 @@ Definition at line <a class="el" href="ctables_8h-source.html#l00026">26</a> of
<td>
<p>
-Command name.
-<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00031">31</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00051">51</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+References <a class="el" href="ctables_8h-source.html#l00049">source</a>, <a class="el" href="ctables_8h-source.html#l00046">total_bytes</a>, and <a class="el" href="ctables_8h-source.html#l00043">use_count</a>.<div class="fragment"><pre class="fragment"><a name="l00051"></a>00051 : <a class="code" href="classcommand__t.html#command">command</a>(cmd), <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>(flags), <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>(minpara)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a> = <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a> = 0;
+<a name="l00054"></a>00054 <a class="code" href="classcommand__t.html#source">source</a> = <span class="stringliteral">"&lt;core&gt;"</span>;
+<a name="l00055"></a>00055 }
+</pre></div>
+<p>
+ </td>
</tr>
</table>
-<a class="anchor" name="flags_5Fneeded"></a><!-- doxytag: member="command_t::flags_needed" ref="flags_5Fneeded" args="" --><p>
+<a class="anchor" name="_7Ecommand_5Ft_28_29"></a><!-- doxytag: member="command_t::~command_t" ref="_7Ecommand_5Ft_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t::flags_needed</a> </td>
+ <td class="md" nowrap valign="top">virtual command_t::~command_t </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
</tr>
</table>
</td>
@@ -98,20 +128,68 @@ Definition at line <a class="el" href="ctables_8h-source.html#l00031">31</a> of
<td>
<p>
-User flags needed to execute the command or 0.
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00059">59</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.<div class="fragment"><pre class="fragment"><a name="l00059"></a>00059 {}
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30"></a><!-- doxytag: member="command_t::Handle" ref="Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30" args="(char **parameters, int pcnt, userrec *user)=0" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">virtual void command_t::Handle </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap> <em>parameters</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00037">37</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Implemented in <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>. </td>
</tr>
</table>
-<a class="anchor" name="handler_5Ffunction"></a><!-- doxytag: member="command_t::handler_function" ref="handler_5Ffunction" args="" --><p>
+<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="command"></a><!-- doxytag: member="command_t::command" ref="command" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>* <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t::handler_function</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classcommand__t.html#command">command_t::command</a> </td>
</tr>
</table>
</td>
@@ -125,13 +203,40 @@ Definition at line <a class="el" href="ctables_8h-source.html#l00037">37</a> of
<td>
<p>
-Handler function as in typedef.
+Command name.
<p>
<p>
Definition at line <a class="el" href="ctables_8h-source.html#l00034">34</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
+<a class="anchor" name="flags_5Fneeded"></a><!-- doxytag: member="command_t::flags_needed" ref="flags_5Fneeded" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t::flags_needed</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+User flags needed to execute the command or 0.
+<p>
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00037">37</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="min_5Fparams"></a><!-- doxytag: member="command_t::min_params" ref="min_5Fparams" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -159,13 +264,13 @@ Minimum number of parameters command takes.
Definition at line <a class="el" href="ctables_8h-source.html#l00040">40</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="source_5BMAXBUF_5D"></a><!-- doxytag: member="command_t::source" ref="source_5BMAXBUF_5D" args="[MAXBUF]" --><p>
+<a class="anchor" name="source"></a><!-- doxytag: member="command_t::source" ref="source" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">char <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t::source</a>[MAXBUF] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> <a class="el" href="classcommand__t.html#source">command_t::source</a> </td>
</tr>
</table>
</td>
@@ -183,7 +288,9 @@ used for resource tracking between modules
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00049">49</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00049">49</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<a class="anchor" name="total_5Fbytes"></a><!-- doxytag: member="command_t::total_bytes" ref="total_5Fbytes" args="" --><p>
@@ -210,7 +317,9 @@ used by /stats m
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00046">46</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00046">46</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<a class="anchor" name="use_5Fcount"></a><!-- doxytag: member="command_t::use_count" ref="use_5Fcount" args="" --><p>
@@ -237,12 +346,14 @@ used by /stats m
<p>
<p>
-Definition at line <a class="el" href="ctables_8h-source.html#l00043">43</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+Definition at line <a class="el" href="ctables_8h-source.html#l00043">43</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>.
+<p>
+Referenced by <a class="el" href="ctables_8h-source.html#l00051">command_t()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ctables_8h-source.html">ctables.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classcommand__t__coll__graph.map b/docs/module-doc/classcommand__t__coll__graph.map
index cc88b53ff..5a14779e7 100644
--- a/docs/module-doc/classcommand__t__coll__graph.map
+++ b/docs/module-doc/classcommand__t__coll__graph.map
@@ -1,3 +1 @@
base referer
-rect $classExtensible.html 80,97 163,124
-rect $classclassbase.html 7,7 87,33
diff --git a/docs/module-doc/classcommand__t__coll__graph.md5 b/docs/module-doc/classcommand__t__coll__graph.md5
index 312c9417b..0ef3d64e9 100644
--- a/docs/module-doc/classcommand__t__coll__graph.md5
+++ b/docs/module-doc/classcommand__t__coll__graph.md5
@@ -1 +1 @@
-c1351289da2fb0e69df5517d601b50d5 \ No newline at end of file
+a870a1a889c9b48d45ed8d3fe3dde1c9 \ No newline at end of file
diff --git a/docs/module-doc/classcommand__t__inherit__graph.map b/docs/module-doc/classcommand__t__inherit__graph.map
index f7ab96c5d..7c32f56f5 100644
--- a/docs/module-doc/classcommand__t__inherit__graph.map
+++ b/docs/module-doc/classcommand__t__inherit__graph.map
@@ -1,3 +1,2 @@
base referer
-rect $classExtensible.html 11,81 93,108
-rect $classclassbase.html 12,7 92,33
+rect $classcmd__mode.html 8,82 96,108
diff --git a/docs/module-doc/classcommand__t__inherit__graph.md5 b/docs/module-doc/classcommand__t__inherit__graph.md5
index 9c538143f..f6a379e71 100644
--- a/docs/module-doc/classcommand__t__inherit__graph.md5
+++ b/docs/module-doc/classcommand__t__inherit__graph.md5
@@ -1 +1 @@
-f184248fba7e0bab49a632a5b1d29a64 \ No newline at end of file
+561f8c00e2c3919b70cd1ad50528624f \ No newline at end of file
diff --git a/docs/module-doc/classconnection-members.html b/docs/module-doc/classconnection-members.html
index 6d4b23eee..6498c8c87 100644
--- a/docs/module-doc/classconnection-members.html
+++ b/docs/module-doc/classconnection-members.html
@@ -28,7 +28,7 @@
<tr class="memlist"><td><a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Shrink</a>(std::string key)</td><td><a class="el" href="classExtensible.html">Extensible</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#signon">signon</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classconnection.html b/docs/module-doc/classconnection.html
index 7fec9c414..b2d31161f 100644
--- a/docs/module-doc/classconnection.html
+++ b/docs/module-doc/classconnection.html
@@ -142,7 +142,7 @@ Stats counter for bytes inbound.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00054">54</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="bytes_5Fout"></a><!-- doxytag: member="connection::bytes_out" ref="bytes_5Fout" args="" --><p>
@@ -171,7 +171,7 @@ Stats counter for bytes outbound.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00058">58</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00270">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmds_5Fin"></a><!-- doxytag: member="connection::cmds_in" ref="cmds_5Fin" args="" --><p>
@@ -200,7 +200,7 @@ Stats counter for commands inbound.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00062">62</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmds_5Fout"></a><!-- doxytag: member="connection::cmds_out" ref="cmds_5Fout" args="" --><p>
@@ -229,7 +229,7 @@ Stats counter for commands outbound.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00066">66</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00270">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="fd"></a><!-- doxytag: member="connection::fd" ref="fd" args="" --><p>
@@ -258,7 +258,7 @@ File descriptor of the connection.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00042">42</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="connection_8h-source.html#l00100">connection()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="connection_8h-source.html#l00100">connection()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="haspassed"></a><!-- doxytag: member="connection::haspassed" ref="haspassed" args="" --><p>
@@ -287,7 +287,7 @@ True if server/user has authenticated, false if otherwise.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00070">70</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="host_5B_31_36_30_5D"></a><!-- doxytag: member="connection::host" ref="host_5B_31_36_30_5D" args="[160]" --><p>
@@ -316,7 +316,7 @@ Not used if this is a serverrec
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00046">46</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00089">userrec::GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00116">userrec::GetFullRealHost()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="idle_5Flastmsg"></a><!-- doxytag: member="connection::idle_lastmsg" ref="idle_5Flastmsg" args="" --><p>
@@ -345,7 +345,7 @@ Time that the connection last sent data, used to calculate idle time.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00092">92</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="ip_5B_31_36_5D"></a><!-- doxytag: member="connection::ip" ref="ip_5B_31_36_5D" args="[16]" --><p>
@@ -374,7 +374,7 @@ IP of connection.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00050">50</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="lastping"></a><!-- doxytag: member="connection::lastping" ref="lastping" args="" --><p>
@@ -403,7 +403,7 @@ Time the connection was last pinged.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00084">84</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="nping"></a><!-- doxytag: member="connection::nping" ref="nping" args="" --><p>
@@ -432,7 +432,7 @@ Used by PING checks with clients.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00096">96</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="port"></a><!-- doxytag: member="connection::port" ref="port" args="" --><p>
@@ -461,7 +461,7 @@ For a serverrec this is the current listening port of the serverrec object.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00076">76</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="registered"></a><!-- doxytag: member="connection::registered" ref="registered" args="" --><p>
@@ -490,7 +490,7 @@ Used by userrec to indicate the registration status of the connection.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00080">80</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="signon"></a><!-- doxytag: member="connection::signon" ref="signon" args="" --><p>
@@ -519,12 +519,12 @@ Time the connection was created, set in the constructor.
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00088">88</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classes.html b/docs/module-doc/classes.html
index bf330f4a0..71b5f16a9 100644
--- a/docs/module-doc/classes.html
+++ b/docs/module-doc/classes.html
@@ -8,26 +8,26 @@
<h1>InspIRCd Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_K">K</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Q">Q</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Z">Z</a></div><p>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classCullList.html">CullList</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classAdmin.html">Admin</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">hash&lt; in_addr &gt;</a> (<a class="el" href="namespacenspace.html">nspace</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModeParameter.html">ModeParameter</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structirc_1_1StrHashComp.html">StrHashComp</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classDNS.html">DNS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash&lt; string &gt;</a> (<a class="el" href="namespacenspace.html">nspace</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModule.html">Module</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classBanItem.html">BanItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classHostItem.html">HostItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classucrec.html">ucrec</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classBoolSet.html">BoolSet</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;E&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classconnection.html">connection</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classKLine.html">KLine</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classserverstats.html">serverstats</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classAdmin.html">Admin</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classCullItem.html">CullItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classGLine.html">GLine</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classSocketEngine.html">SocketEngine</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classAES.html">AES</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classCullList.html">CullList</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classModeParameter.html">ModeParameter</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structirc_1_1StrHashComp.html">StrHashComp</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">hash&lt; in_addr &gt;</a> (<a class="el" href="namespacenspace.html">nspace</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModeParser.html">ModeParser</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classBanItem.html">BanItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classDNS.html">DNS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash&lt; string &gt;</a> (<a class="el" href="namespacenspace.html">nspace</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModule.html">Module</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classucrec.html">ucrec</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classBoolSet.html">BoolSet</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classHostItem.html">HostItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classuserrec.html">userrec</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;E&nbsp;&nbsp;</div></td></tr></table>
</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classuserrec.html">userrec</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classELine.html">ELine</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">InAddr_HashComp</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Q&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classEvent.html">Event</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classQLine.html">QLine</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classVersion.html">Version</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classstd_1_1char__traits.html">char_traits</a> (<a class="el" href="namespacestd.html">std</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExemptItem.html">ExemptItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInspSocket.html">InspSocket</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExtensible.html">Extensible</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInvited.html">Invited</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRequest.html">Request</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcommand__t.html">command_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExtMode.html">ExtMode</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInviteItem.html">InviteItem</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;X&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classConfigReader.html">ConfigReader</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classServer.html">Server</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classXLine.html">XLine</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classConnectClass.html">ConnectClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classFileReader.html">FileReader</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;K&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classServerConfig.html">ServerConfig</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Z"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Z&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classconnection.html">connection</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classKLine.html">KLine</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classserverstats.html">serverstats</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classZLine.html">ZLine</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classCullItem.html">CullItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classGLine.html">GLine</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_K">K</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Q">Q</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Z">Z</a></div><p>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+</td><td><a class="el" href="classModuleMessage.html">ModuleMessage</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classELine.html">ELine</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">InAddr_HashComp</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Q&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classVersion.html">Version</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classstd_1_1char__traits.html">char_traits</a> (<a class="el" href="namespacestd.html">std</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classEvent.html">Event</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInspIRCd.html">InspIRCd</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classQLine.html">QLine</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExemptItem.html">ExemptItem</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInspSocket.html">InspSocket</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classWhoWasUser.html">WhoWasUser</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcmd__mode.html">cmd_mode</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExtensible.html">Extensible</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInvited.html">Invited</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRequest.html">Request</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;X&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classcommand__t.html">command_t</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classExtMode.html">ExtMode</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classInviteItem.html">InviteItem</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classXLine.html">XLine</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classConfigReader.html">ConfigReader</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc_char_traits</a> (<a class="el" href="namespaceirc.html">irc</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classServer.html">Server</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Z"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Z&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classConnectClass.html">ConnectClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classFileReader.html">FileReader</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;K&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classServerConfig.html">ServerConfig</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classZLine.html">ZLine</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_K">K</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Q">Q</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Z">Z</a></div><p>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classserverstats-members.html b/docs/module-doc/classserverstats-members.html
index 09fe9f5f3..fdabefd95 100644
--- a/docs/module-doc/classserverstats-members.html
+++ b/docs/module-doc/classserverstats-members.html
@@ -6,6 +6,7 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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>
<h1>serverstats Member List</h1>This is the complete list of members for <a class="el" href="classserverstats.html">serverstats</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classserverstats.html#BoundPortCount">BoundPortCount</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a>()</td><td><a class="el" href="classserverstats.html">serverstats</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsAccept">statsAccept</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsCollisions">statsCollisions</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
@@ -17,7 +18,7 @@
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsRefused">statsRefused</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsSent">statsSent</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classserverstats.html#statsUnknown">statsUnknown</a></td><td><a class="el" href="classserverstats.html">serverstats</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classserverstats.html b/docs/module-doc/classserverstats.html
index 676683293..eed83c8c8 100644
--- a/docs/module-doc/classserverstats.html
+++ b/docs/module-doc/classserverstats.html
@@ -34,13 +34,15 @@ Collaboration diagram for serverstats:<p><center><img src="classserverstats__col
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classserverstats.html#statsRecv">statsRecv</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classserverstats.html#BoundPortCount">BoundPortCount</a></td></tr>
+
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00072">72</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00074">74</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="serverstats_28_29"></a><!-- doxytag: member="serverstats::serverstats" ref="serverstats_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -67,19 +69,47 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00072">72</a> of
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00086">86</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00089">89</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-References <a class="el" href="inspircd_8h-source.html#l00075">statsAccept</a>, <a class="el" href="inspircd_8h-source.html#l00078">statsCollisions</a>, <a class="el" href="inspircd_8h-source.html#l00082">statsConnects</a>, <a class="el" href="inspircd_8h-source.html#l00079">statsDns</a>, <a class="el" href="inspircd_8h-source.html#l00081">statsDnsBad</a>, <a class="el" href="inspircd_8h-source.html#l00080">statsDnsGood</a>, <a class="el" href="inspircd_8h-source.html#l00084">statsRecv</a>, <a class="el" href="inspircd_8h-source.html#l00076">statsRefused</a>, <a class="el" href="inspircd_8h-source.html#l00083">statsSent</a>, and <a class="el" href="inspircd_8h-source.html#l00077">statsUnknown</a>.<div class="fragment"><pre class="fragment"><a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
-<a name="l00090"></a>00090 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
-<a name="l00091"></a>00091 }
+References <a class="el" href="inspircd_8h-source.html#l00087">BoundPortCount</a>, <a class="el" href="inspircd_8h-source.html#l00077">statsAccept</a>, <a class="el" href="inspircd_8h-source.html#l00080">statsCollisions</a>, <a class="el" href="inspircd_8h-source.html#l00084">statsConnects</a>, <a class="el" href="inspircd_8h-source.html#l00081">statsDns</a>, <a class="el" href="inspircd_8h-source.html#l00083">statsDnsBad</a>, <a class="el" href="inspircd_8h-source.html#l00082">statsDnsGood</a>, <a class="el" href="inspircd_8h-source.html#l00086">statsRecv</a>, <a class="el" href="inspircd_8h-source.html#l00078">statsRefused</a>, <a class="el" href="inspircd_8h-source.html#l00085">statsSent</a>, and <a class="el" href="inspircd_8h-source.html#l00079">statsUnknown</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
+<a name="l00094"></a>00094 <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a> = 0;
+<a name="l00095"></a>00095 }
</pre></div>
<p>
</td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
+<a class="anchor" name="BoundPortCount"></a><!-- doxytag: member="serverstats::BoundPortCount" ref="BoundPortCount" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="classserverstats.html#BoundPortCount">serverstats::BoundPortCount</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00087">87</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+<p>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="statsAccept"></a><!-- doxytag: member="serverstats::statsAccept" ref="statsAccept" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -102,9 +132,9 @@ References <a class="el" href="inspircd_8h-source.html#l00075">statsAccept</a>,
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00075">75</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00077">77</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsCollisions"></a><!-- doxytag: member="serverstats::statsCollisions" ref="statsCollisions" args="" --><p>
@@ -129,9 +159,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00078">78</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsConnects"></a><!-- doxytag: member="serverstats::statsConnects" ref="statsConnects" args="" --><p>
@@ -156,9 +186,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00082">82</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDns"></a><!-- doxytag: member="serverstats::statsDns" ref="statsDns" args="" --><p>
@@ -183,9 +213,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00081">81</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDnsBad"></a><!-- doxytag: member="serverstats::statsDnsBad" ref="statsDnsBad" args="" --><p>
@@ -210,9 +240,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00081">81</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00083">83</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsDnsGood"></a><!-- doxytag: member="serverstats::statsDnsGood" ref="statsDnsGood" args="" --><p>
@@ -237,9 +267,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00080">80</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00082">82</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsRecv"></a><!-- doxytag: member="serverstats::statsRecv" ref="statsRecv" args="" --><p>
@@ -264,9 +294,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00084">84</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00086">86</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsRefused"></a><!-- doxytag: member="serverstats::statsRefused" ref="statsRefused" args="" --><p>
@@ -291,9 +321,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00076">76</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00078">78</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsSent"></a><!-- doxytag: member="serverstats::statsSent" ref="statsSent" args="" --><p>
@@ -318,9 +348,9 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00083">83</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00085">85</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<a class="anchor" name="statsUnknown"></a><!-- doxytag: member="serverstats::statsUnknown" ref="statsUnknown" args="" --><p>
@@ -345,14 +375,14 @@ Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()<
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00077">77</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00079">79</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="inspircd_8h-source.html#l00086">serverstats()</a>. </td>
+Referenced by <a class="el" href="inspircd_8h-source.html#l00089">serverstats()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="inspircd_8h-source.html">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classserverstats__coll__graph.md5 b/docs/module-doc/classserverstats__coll__graph.md5
index bebb257cf..bdc97b9ee 100644
--- a/docs/module-doc/classserverstats__coll__graph.md5
+++ b/docs/module-doc/classserverstats__coll__graph.md5
@@ -1 +1 @@
-0d72c6ae7afecc93452896afbba8a691 \ No newline at end of file
+fdefe64364c509e2b3a4a66fc7ca77f1 \ No newline at end of file
diff --git a/docs/module-doc/classstd_1_1char__traits.html b/docs/module-doc/classstd_1_1char__traits.html
index cf38e16f5..f4299f6e8 100644
--- a/docs/module-doc/classstd_1_1char__traits.html
+++ b/docs/module-doc/classstd_1_1char__traits.html
@@ -14,7 +14,7 @@
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classucrec-members.html b/docs/module-doc/classucrec-members.html
index f1038cef0..09954f765 100644
--- a/docs/module-doc/classucrec-members.html
+++ b/docs/module-doc/classucrec-members.html
@@ -13,7 +13,7 @@
<tr class="memlist"><td><a class="el" href="classucrec.html#ucrec_28_29">ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classucrec.html#_7Eucrec_28_29">~ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classucrec.html b/docs/module-doc/classucrec.html
index cf4852d6d..5710fbb6f 100644
--- a/docs/module-doc/classucrec.html
+++ b/docs/module-doc/classucrec.html
@@ -133,7 +133,7 @@ If the record is not in use, this value will be NULL.
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00254">254</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
</tr>
</table>
<a class="anchor" name="uc_5Fmodes"></a><!-- doxytag: member="ucrec::uc_modes" ref="uc_5Fmodes" args="" --><p>
@@ -162,12 +162,12 @@ Contains a bitmask of the UCMODE_OP .
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00249">249</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classuserrec-members.html b/docs/module-doc/classuserrec-members.html
index 9dccd1622..45e7fee94 100644
--- a/docs/module-doc/classuserrec-members.html
+++ b/docs/module-doc/classuserrec-members.html
@@ -35,14 +35,14 @@
<tr class="memlist"><td><a class="el" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#haspassed">haspassed</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a>(char *command)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a>(std::string &amp;command)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#host_5B_31_36_30_5D">host</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#invites">invites</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a>(irc::string &amp;channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#ip_5B_31_36_5D">ip</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(irc::string &amp;channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#lastping">lastping</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#lines_5Fin">lines_in</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#modes_5B_35_34_5D">modes</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
@@ -56,7 +56,7 @@
<tr class="memlist"><td><a class="el" href="classuserrec.html#recvq">recvq</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#recvqmax">recvqmax</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classconnection.html#registered">registered</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(char *channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(irc::string &amp;channel)</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#reset_5Fdue">reset_due</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#sendq">sendq</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#sendqmax">sendqmax</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
@@ -70,7 +70,7 @@
<tr class="memlist"><td><a class="el" href="classuserrec.html#WriteError">WriteError</a></td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classclassbase.html#_7Eclassbase_28_29">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [virtual]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/classuserrec.html b/docs/module-doc/classuserrec.html
index bd18e2d55..4313e9ff5 100644
--- a/docs/module-doc/classuserrec.html
+++ b/docs/module-doc/classuserrec.html
@@ -31,18 +31,18 @@ Inheritance diagram for userrec:<p><center><img src="classuserrec__inherit__grap
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a> ()</td></tr>
<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. <a href="#GetFullRealHost_28_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a> (char *channel)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &amp;channel)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if a user is invited to a channel. <a href="#IsInvited_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a> (char *channel)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if a user is invited to a channel. <a href="#IsInvited_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &amp;channel)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). <a href="#InviteTo_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a> (char *channel)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a channel to a users invite list (invites them to a channel). <a href="#InviteTo_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a> (<a class="el" href="namespaceirc.html#string">irc::string</a> &amp;channel)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a channel from a users invite list. <a href="#RemoveInvite_28char_20_2Achannel_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a> (char *command)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a channel from a users invite list. <a href="#RemoveInvite_28irc_3A_3Astring_20_26channel_29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a> (<a class="el" href="namespaceirc.html#string">std::string</a> &amp;command)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. <a href="#HasPermission_28char_20_2Acommand_29"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true or false for if a user can execute a privilaged oper command. <a href="#HasPermission_28std_3A_3Astring_20_26command_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a> (void *buffer, size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls read() to read some data for this user using their fd. <a href="#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29"></a><br></td></tr>
@@ -153,7 +153,7 @@ Everything about a connection is stored here primarily, from the user's socket I
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00111">111</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+Definition at line <a class="el" href="users_8h-source.html#l00115">115</a> of file <a class="el" href="users_8h-source.html">users.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="userrec_28_29"></a><!-- doxytag: member="userrec::userrec" ref="userrec_28_29" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -180,32 +180,32 @@ Definition at line <a class="el" href="users_8h-source.html#l00111">111</a> of f
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00036">36</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00158">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="users_8h-source.html#l00149">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00134">dhost</a>, <a class="el" href="users_8h-source.html#l00181">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8h-source.html#l00164">flood</a>, <a class="el" href="users_8h-source.html#l00138">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00117">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00206">lines_in</a>, <a class="el" href="users_8h-source.html#l00147">modes</a>, <a class="el" href="users_8h-source.html#l00124">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00177">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00197">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00207">reset_due</a>, <a class="el" href="users_8h-source.html#l00202">sendq</a>, <a class="el" href="users_8h-source.html#l00153">server</a>, <a class="el" href="inspircd__io_8h-source.html#l00068">ServerConfig::ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="users_8h-source.html#l00170">timeout</a>.<div class="fragment"><pre class="fragment"><a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
-<a name="l00039"></a>00039 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
-<a name="l00040"></a>00040 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
-<a name="l00041"></a>00041 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
-<a name="l00042"></a>00042 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
-<a name="l00043"></a>00043 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
-<a name="l00044"></a>00044 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
-<a name="l00045"></a>00045 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
-<a name="l00046"></a>00046 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
-<a name="l00047"></a>00047 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
-<a name="l00048"></a>00048 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
-<a name="l00049"></a>00049 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
-<a name="l00050"></a>00050 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00051"></a>00051 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
-<a name="l00052"></a>00052 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
-<a name="l00053"></a>00053 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
-<a name="l00054"></a>00054 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
-<a name="l00055"></a>00055 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
-<a name="l00056"></a>00056 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00057"></a>00057 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
-<a name="l00058"></a>00058 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
-<a name="l00059"></a>00059 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
-<a name="l00060"></a>00060 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00063">63</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00162">awaymsg</a>, <a class="el" href="connection_8h-source.html#l00054">connection::bytes_in</a>, <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="users_8h-source.html#l00153">chans</a>, <a class="el" href="connection_8h-source.html#l00062">connection::cmds_in</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00138">dhost</a>, <a class="el" href="users_8h-source.html#l00185">dns_done</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8h-source.html#l00168">flood</a>, <a class="el" href="users_8h-source.html#l00142">fullname</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="users_8h-source.html#l00121">invites</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="connection_8h-source.html#l00084">connection::lastping</a>, <a class="el" href="users_8h-source.html#l00210">lines_in</a>, <a class="el" href="users_8h-source.html#l00151">modes</a>, <a class="el" href="users_8h-source.html#l00128">nick</a>, <a class="el" href="connection_8h-source.html#l00096">connection::nping</a>, <a class="el" href="users_8h-source.html#l00181">oper</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="users_8h-source.html#l00201">recvq</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="users_8h-source.html#l00211">reset_due</a>, <a class="el" href="users_8h-source.html#l00206">sendq</a>, <a class="el" href="users_8h-source.html#l00157">server</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, and <a class="el" href="users_8h-source.html#l00174">timeout</a>.<div class="fragment"><pre class="fragment"><a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
+<a name="l00066"></a>00066 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
+<a name="l00067"></a>00067 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
+<a name="l00068"></a>00068 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
+<a name="l00069"></a>00069 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
+<a name="l00070"></a>00070 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
+<a name="l00071"></a>00071 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
+<a name="l00072"></a>00072 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
+<a name="l00073"></a>00073 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
+<a name="l00074"></a>00074 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00078"></a>00078 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
+<a name="l00079"></a>00079 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
+<a name="l00080"></a>00080 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
+<a name="l00082"></a>00082 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
+<a name="l00083"></a>00083 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00084"></a>00084 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
+<a name="l00085"></a>00085 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
+<a name="l00086"></a>00086 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
+<a name="l00087"></a>00087 }
</pre></div>
<p>
</td>
@@ -237,8 +237,8 @@ References <a class="el" href="users_8h-source.html#l00158">awaymsg</a>, <a clas
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00062">62</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00089">89</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 }
</pre></div>
<p>
</td>
@@ -274,32 +274,32 @@ This method adds data to the buffer of the user.
<p>
The buffer can grow to any size within limits of the available memory, managed by the size of a <a class="el" href="namespaceirc.html#string">std::string</a>, 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.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00198">198</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>, <a class="el" href="users_8h-source.html#l00220">recvqmax</a>, <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
-<a name="l00202"></a>00202 <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))
-<a name="l00203"></a>00203 b = b + a[i];
-<a name="l00204"></a>00204 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
-<a name="l00205"></a>00205 stream &lt;&lt; b;
-<a name="l00206"></a>00206 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
-<a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
-<a name="l00208"></a>00208 <span class="comment">// count the size of the first line in the buffer.</span>
-<a name="l00209"></a>00209 <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
-<a name="l00212"></a>00212 <span class="keywordflow">break</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
-<a name="l00217"></a>00217 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
-<a name="l00220"></a>00220 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> (i &lt; 600);
-<a name="l00222"></a>00222 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00219">219</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>, <a class="el" href="users_8h-source.html#l00224">recvqmax</a>, <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
+<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
+<a name="l00223"></a>00223 <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))
+<a name="l00224"></a>00224 b = b + a[i];
+<a name="l00225"></a>00225 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
+<a name="l00226"></a>00226 stream &lt;&lt; b;
+<a name="l00227"></a>00227 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
+<a name="l00228"></a>00228 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
+<a name="l00229"></a>00229 <span class="comment">// count the size of the first line in the buffer.</span>
+<a name="l00230"></a>00230 <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
+<a name="l00231"></a>00231 {
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
+<a name="l00233"></a>00233 <span class="keywordflow">break</span>;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
+<a name="l00238"></a>00238 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
+<a name="l00241"></a>00241 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> (i &lt; 600);
+<a name="l00243"></a>00243 }
</pre></div>
<p>
</td>
@@ -334,21 +334,25 @@ Adds to the user's write buffer.
<p>
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#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError()</a> will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00254">254</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00202">sendq</a>, <a class="el" href="users_8h-source.html#l00216">sendqmax</a>, <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (this-&gt;GetWriteError() != <span class="stringliteral">""</span>)
-<a name="l00257"></a>00257 <span class="keywordflow">return</span>;
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
-<a name="l00261"></a>00261 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
-<a name="l00262"></a>00262 <span class="keywordflow">return</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 std::stringstream stream;
-<a name="l00265"></a>00265 stream &lt;&lt; <a class="code" href="classuserrec.html#sendq">sendq</a> &lt;&lt; data;
-<a name="l00266"></a>00266 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
-<a name="l00267"></a>00267 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00275">275</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00206">sendq</a>, <a class="el" href="users_8h-source.html#l00220">sendqmax</a>, <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.<div class="fragment"><pre class="fragment"><a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (this-&gt;GetWriteError() != <span class="stringliteral">""</span>)
+<a name="l00278"></a>00278 <span class="keywordflow">return</span>;
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="comment">/* Fix by brain - Set the error text BEFORE calling writeopers, because</span>
+<a name="l00282"></a>00282 <span class="comment"> * if we dont it'll recursively call here over and over again trying</span>
+<a name="l00283"></a>00283 <span class="comment"> * to repeatedly add the text to the sendq!</span>
+<a name="l00284"></a>00284 <span class="comment"> */</span>
+<a name="l00285"></a>00285 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
+<a name="l00286"></a>00286 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
+<a name="l00287"></a>00287 <span class="keywordflow">return</span>;
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 std::stringstream stream;
+<a name="l00290"></a>00290 stream &lt;&lt; <a class="code" href="classuserrec.html#sendq">sendq</a> &lt;&lt; data;
+<a name="l00291"></a>00291 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
+<a name="l00292"></a>00292 }
</pre></div>
<p>
</td>
@@ -382,14 +386,14 @@ This method returns true if the buffer contains at least one carriage return cha
<p>
one complete line may be read)
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00224">224</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00245">245</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00229"></a>00229 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00230"></a>00230 }
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251 }
</pre></div>
<p>
</td>
@@ -423,13 +427,13 @@ This function clears the entire buffer by setting it to an empty string.
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00232">232</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00253">253</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00235"></a>00235 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>.<div class="fragment"><pre class="fragment"><a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00256"></a>00256 }
</pre></div>
<p>
</td>
@@ -463,10 +467,12 @@ Shuts down and closes the user's socket.
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00066">66</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 shutdown(this-&gt;fd,2);
-<a name="l00069"></a>00069 close(this-&gt;fd);
-<a name="l00070"></a>00070 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00093">93</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 shutdown(this-&gt;fd,2);
+<a name="l00096"></a>00096 close(this-&gt;fd);
+<a name="l00097"></a>00097 }
</pre></div>
<p>
</td>
@@ -500,28 +506,30 @@ Flushes as much of the user's buffer to the file descriptor as possible.
<p>
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.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00270">270</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00202">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>.<div class="fragment"><pre class="fragment"><a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
-<a name="l00275"></a>00275 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (n_sent == -1)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="keywordflow">else</span>
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="comment">// advance the queue</span>
-<a name="l00283"></a>00283 tb += n_sent;
-<a name="l00284"></a>00284 this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
-<a name="l00285"></a>00285 <span class="comment">// update the user's stats counters</span>
-<a name="l00286"></a>00286 this-&gt;<a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
-<a name="l00287"></a>00287 this-&gt;<a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00295">295</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="connection_8h-source.html#l00058">connection::bytes_out</a>, <a class="el" href="connection_8h-source.html#l00066">connection::cmds_out</a>, <a class="el" href="users_8h-source.html#l00206">sendq</a>, and <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>.<div class="fragment"><pre class="fragment"><a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
+<a name="l00300"></a>00300 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (n_sent == -1)
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 <span class="keywordflow">else</span>
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="comment">// advance the queue</span>
+<a name="l00308"></a>00308 tb += n_sent;
+<a name="l00309"></a>00309 this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
+<a name="l00310"></a>00310 <span class="comment">// update the user's stats counters</span>
+<a name="l00311"></a>00311 this-&gt;<a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
+<a name="l00312"></a>00312 this-&gt;<a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
+<a name="l00313"></a>00313 }
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 }
</pre></div>
<p>
</td>
@@ -555,23 +563,23 @@ This method returns the first available string at the tail end of the buffer and
<p>
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#BufferIsReady_28_29">BufferIsReady()</a> to check if it is ok to read the buffer before calling <a class="el" href="classuserrec.html#GetBuffer_28_29">GetBuffer()</a>.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00237">237</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="users_8h-source.html#l00197">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00241"></a>00241 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
-<a name="l00242"></a>00242 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
-<a name="l00243"></a>00243 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 ret = ret + *line;
-<a name="l00246"></a>00246 line++;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
-<a name="l00249"></a>00249 line++;
-<a name="l00250"></a>00250 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> ret;
-<a name="l00252"></a>00252 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00258">258</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00201">recvq</a>.<div class="fragment"><pre class="fragment"><a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
+<a name="l00261"></a>00261 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00262"></a>00262 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
+<a name="l00263"></a>00263 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
+<a name="l00264"></a>00264 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 ret = ret + *line;
+<a name="l00267"></a>00267 line++;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
+<a name="l00270"></a>00270 line++;
+<a name="l00271"></a>00271 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> ret;
+<a name="l00273"></a>00273 }
</pre></div>
<p>
</td>
@@ -605,15 +613,15 @@ Returns the full displayed host of the user This member function returns the hos
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00072">72</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00099">99</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00134">dhost</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, and <a class="el" href="users_8h-source.html#l00124">nick</a>.
+References <a class="el" href="users_8h-source.html#l00138">dhost</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, and <a class="el" href="users_8h-source.html#l00128">nick</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
-<a name="l00075"></a>00075 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> result;
-<a name="l00077"></a>00077 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
+<a name="l00102"></a>00102 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> result;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
@@ -647,13 +655,13 @@ Returns the full real host of the user This member function returns the hostname
<p>
If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00089">89</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00116">116</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00129">ident</a>, and <a class="el" href="users_8h-source.html#l00124">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
-<a name="l00092"></a>00092 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> fresult;
-<a name="l00094"></a>00094 }
+References <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">ident</a>, and <a class="el" href="users_8h-source.html#l00128">nick</a>.<div class="fragment"><pre class="fragment"><a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
+<a name="l00119"></a>00119 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> fresult;
+<a name="l00121"></a>00121 }
</pre></div>
<p>
</td>
@@ -687,11 +695,11 @@ Returns the list of channels this user has been invited to but has not yet joine
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00110">110</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00136">136</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00117">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> &amp;<a class="code" href="classuserrec.html#invites">invites</a>;
-<a name="l00113"></a>00113 }
+References <a class="el" href="users_8h-source.html#l00121">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> &amp;<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00139"></a>00139 }
</pre></div>
<p>
</td>
@@ -725,17 +733,17 @@ Returns the write error which last occured on this connection or an empty string
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00300">300</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00325">325</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00212">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a>;
-<a name="l00303"></a>00303 }
+References <a class="el" href="users_8h-source.html#l00216">WriteError</a>.<div class="fragment"><pre class="fragment"><a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00328"></a>00328 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="HasPermission_28char_20_2Acommand_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28char_20_2Acommand_29" args="(char *command)" --><p>
+<a class="anchor" name="HasPermission_28std_3A_3Astring_20_26command_29"></a><!-- doxytag: member="userrec::HasPermission" ref="HasPermission_28std_3A_3Astring_20_26command_29" args="(std::string &amp;command)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -743,7 +751,7 @@ References <a class="el" href="users_8h-source.html#l00212">WriteError</a>.<div
<tr>
<td class="md" nowrap valign="top">bool userrec::HasPermission </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>command</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
@@ -764,65 +772,65 @@ Returns true or false for if a user can execute a privilaged oper command.
<p>
This is done by looking up their oper type from <a class="el" href="classuserrec.html#oper_5BNICKMAX_5D">userrec::oper</a>, then referencing this to their oper classes and checking the commands they can execute.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00144">144</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00238">ServerConfig::config_f</a>, <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig::ConfValue()</a>, and <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-<a name="l00147"></a>00147 <span class="keywordtype">char</span>* mycmd;
-<a name="l00148"></a>00148 <span class="keywordtype">char</span>* savept;
-<a name="l00149"></a>00149 <span class="keywordtype">char</span>* savept2;
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="comment">// users on u-lined servers can completely bypass</span>
-<a name="l00152"></a>00152 <span class="comment">// all permissions based checks.</span>
-<a name="l00153"></a>00153 <span class="comment">//</span>
-<a name="l00154"></a>00154 <span class="comment">// of course, if this is sent to a remote server and this</span>
-<a name="l00155"></a>00155 <span class="comment">// server is not ulined there, then that other server</span>
-<a name="l00156"></a>00156 <span class="comment">// silently drops the command.</span>
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this-&gt;server))
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">// are they even an oper at all?</span>
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00169"></a>00169 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (myclass)
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00178"></a>00178 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
-<a name="l00179"></a>00179 <span class="keywordflow">while</span> (mycmd)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command)) || (*mycmd == <span class="charliteral">'*'</span>))
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00195"></a>00195 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00165">165</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00239">ServerConfig::config_f</a>, <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig::ConfValue()</a>, and <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline()</a>.<div class="fragment"><pre class="fragment"><a name="l00166"></a>00166 {
+<a name="l00167"></a>00167 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+<a name="l00168"></a>00168 <span class="keywordtype">char</span>* mycmd;
+<a name="l00169"></a>00169 <span class="keywordtype">char</span>* savept;
+<a name="l00170"></a>00170 <span class="keywordtype">char</span>* savept2;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// users on u-lined servers can completely bypass</span>
+<a name="l00173"></a>00173 <span class="comment">// all permissions based checks.</span>
+<a name="l00174"></a>00174 <span class="comment">//</span>
+<a name="l00175"></a>00175 <span class="comment">// of course, if this is sent to a remote server and this</span>
+<a name="l00176"></a>00176 <span class="comment">// server is not ulined there, then that other server</span>
+<a name="l00177"></a>00177 <span class="comment">// silently drops the command.</span>
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this-&gt;server))
+<a name="l00179"></a>00179 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// are they even an oper at all?</span>
+<a name="l00182"></a>00182 <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
+<a name="l00191"></a>00191 <span class="keywordflow">while</span> (myclass)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00199"></a>00199 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
+<a name="l00200"></a>00200 <span class="keywordflow">while</span> (mycmd)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == <span class="charliteral">'*'</span>))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00216"></a>00216 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="InviteTo_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="InviteTo_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::InviteTo" ref="InviteTo_28irc_3A_3Astring_20_26channel_29" args="(irc::string &amp;channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -830,7 +838,7 @@ References <a class="el" href="inspircd__io_8h-source.html#l00238">ServerConfig:
<tr>
<td class="md" nowrap valign="top">void userrec::InviteTo </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
@@ -851,19 +859,19 @@ Adds a channel to a users invite list (invites them to a channel).
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00115">115</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00141">141</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00042">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00117">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <a class="code" href="classInvited.html">Invited</a> i;
-<a name="l00118"></a>00118 strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
-<a name="l00119"></a>00119 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
-<a name="l00120"></a>00120 }
+References <a class="el" href="users_8h-source.html#l00046">Invited::channel</a>, and <a class="el" href="users_8h-source.html#l00121">invites</a>.<div class="fragment"><pre class="fragment"><a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <a class="code" href="classInvited.html">Invited</a> i;
+<a name="l00144"></a>00144 i.<a class="code" href="classInvited.html#channel">channel</a> = channel;
+<a name="l00145"></a>00145 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
+<a name="l00146"></a>00146 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="IsInvited_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="IsInvited_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::IsInvited" ref="IsInvited_28irc_3A_3Astring_20_26channel_29" args="(irc::string &amp;channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -871,7 +879,7 @@ References <a class="el" href="users_8h-source.html#l00042">Invited::channel</a>
<tr>
<td class="md" nowrap valign="top">bool userrec::IsInvited </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
@@ -892,22 +900,21 @@ Returns true if a user is invited to a channel.
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00096">96</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00123">123</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="users_8h-source.html#l00117">invites</a>.
+References <a class="el" href="users_8h-source.html#l00121">invites</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (i-&gt;channel) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00108"></a>00108 }
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i-&gt;channel;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00134"></a>00134 }
</pre></div>
<p>
</td>
@@ -951,19 +958,19 @@ Calls read() to read some data for this user using their fd.
<p>
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00079">79</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (this-&gt;fd &gt; -1)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> read(this-&gt;fd, buffer, size);
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00106">106</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.<div class="fragment"><pre class="fragment"><a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (this-&gt;fd &gt; -1)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> read(this-&gt;fd, buffer, size);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00113"></a>00113 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="RemoveInvite_28char_20_2Achannel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28char_20_2Achannel_29" args="(char *channel)" --><p>
+<a class="anchor" name="RemoveInvite_28irc_3A_3Astring_20_26channel_29"></a><!-- doxytag: member="userrec::RemoveInvite" ref="RemoveInvite_28irc_3A_3Astring_20_26channel_29" args="(irc::string &amp;channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -971,7 +978,7 @@ Definition at line <a class="el" href="users_8cpp-source.html#l00079">79</a> of
<tr>
<td class="md" nowrap valign="top">void userrec::RemoveInvite </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">irc::string</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>channel</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
@@ -992,30 +999,25 @@ Removes a channel from a users invite list.
<p>
This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00122">122</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
-<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="users_8h-source.html#l00117">invites</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
-<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (channel)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (i-&gt;channel)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
+Definition at line <a class="el" href="users_8cpp-source.html#l00148">148</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00121">invites</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>.<div class="fragment"><pre class="fragment"><a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i-&gt;channel;
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
+<a name="l00159"></a>00159 <span class="keywordflow">return</span>;
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 }
</pre></div>
<p>
</td>
@@ -1050,16 +1052,16 @@ Sets the write error for a connection.
<p>
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.
<p>
-Definition at line <a class="el" href="users_8cpp-source.html#l00292">292</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+Definition at line <a class="el" href="users_8cpp-source.html#l00317">317</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
<p>
-References <a class="el" href="inspircd__io_8h-source.html#l00028">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="users_8h-source.html#l00212">WriteError</a>.
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, and <a class="el" href="users_8h-source.html#l00216">WriteError</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00270">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00293"></a>00293 {
-<a name="l00294"></a>00294 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
-<a name="l00295"></a>00295 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (this-&gt;WriteError == <span class="stringliteral">""</span>)
-<a name="l00297"></a>00297 this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
-<a name="l00298"></a>00298 }
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00295">FlushWriteBuf()</a>.<div class="fragment"><pre class="fragment"><a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
+<a name="l00320"></a>00320 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
+<a name="l00321"></a>00321 <span class="keywordflow">if</span> (this-&gt;WriteError == <span class="stringliteral">""</span>)
+<a name="l00322"></a>00322 this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
+<a name="l00323"></a>00323 }
</pre></div>
<p>
</td>
@@ -1090,9 +1092,9 @@ The user's away message.
<p>
If this string is empty, the user is not marked as away.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00158">158</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00162">162</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="chans"></a><!-- doxytag: member="userrec::chans" ref="chans" args="" --><p>
@@ -1117,9 +1119,9 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00149">149</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00153">153</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="dhost_5B_31_36_30_5D"></a><!-- doxytag: member="userrec::dhost" ref="dhost_5B_31_36_30_5D" args="[160]" --><p>
@@ -1146,9 +1148,9 @@ The host displayed to non-opers (used for cloaking etc).
<p>
This usually matches the value of <a class="el" href="classconnection.html#host_5B_31_36_30_5D">userrec::host</a>.
<p>
-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>.
+Definition at line <a class="el" href="users_8h-source.html#l00138">138</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="dns_5Fdone"></a><!-- doxytag: member="userrec::dns_done" ref="dns_5Fdone" args="" --><p>
@@ -1175,9 +1177,9 @@ True when <a class="el" href="classDNS.html">DNS</a> lookups are completed.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00181">181</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00185">185</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="flood"></a><!-- doxytag: member="userrec::flood" ref="flood" args="" --><p>
@@ -1204,9 +1206,9 @@ Number of lines the user can place into the buffer (up to the global NetBufferSi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00164">164</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00168">168</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="fullname_5BMAXGECOS_2B_31_5D"></a><!-- doxytag: member="userrec::fullname" ref="fullname_5BMAXGECOS_2B_31_5D" args="[MAXGECOS+1]" --><p>
@@ -1233,9 +1235,9 @@ The users full name.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00138">138</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00142">142</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="ident_5BIDENTMAX_2B_32_5D"></a><!-- doxytag: member="userrec::ident" ref="ident_5BIDENTMAX_2B_32_5D" args="[IDENTMAX+2]" --><p>
@@ -1262,9 +1264,9 @@ The users ident reply.
<p>
Two characters are added to the user-defined limit to compensate for the tilde etc.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00129">129</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00133">133</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00089">GetFullRealHost()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00116">GetFullRealHost()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="invites"></a><!-- doxytag: member="userrec::invites" ref="invites" args="" --><p>
@@ -1291,9 +1293,9 @@ A list of channels the user has a pending invite to.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00117">117</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00121">121</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00110">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00115">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00096">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00122">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00136">GetInviteList()</a>, <a class="el" href="users_8cpp-source.html#l00141">InviteTo()</a>, <a class="el" href="users_8cpp-source.html#l00123">IsInvited()</a>, <a class="el" href="users_8cpp-source.html#l00148">RemoveInvite()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="lines_5Fin"></a><!-- doxytag: member="userrec::lines_in" ref="lines_5Fin" args="" --><p>
@@ -1320,9 +1322,9 @@ Flood counters.
<p>
<p>
-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>.
+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>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="modes_5B_35_34_5D"></a><!-- doxytag: member="userrec::modes" ref="modes_5B_35_34_5D" args="[54]" --><p>
@@ -1349,9 +1351,9 @@ The user's mode string.
<p>
This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00147">147</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00151">151</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="nick_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::nick" ref="nick_5BNICKMAX_5D" args="[NICKMAX]" --><p>
@@ -1378,9 +1380,9 @@ The users nickname.
<p>
An invalid nickname indicates an unregistered connection prior to the NICK command.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00124">124</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00128">128</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00072">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00089">GetFullRealHost()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00099">GetFullHost()</a>, <a class="el" href="users_8cpp-source.html#l00116">GetFullRealHost()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="oper_5BNICKMAX_5D"></a><!-- doxytag: member="userrec::oper" ref="oper_5BNICKMAX_5D" args="[NICKMAX]" --><p>
@@ -1407,9 +1409,9 @@ The oper type they logged in as, if they are an oper.
<p>
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.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00177">177</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00181">181</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="password_5BMAXBUF_5D"></a><!-- doxytag: member="userrec::password" ref="password_5BMAXBUF_5D" args="[MAXBUF]" --><p>
@@ -1436,7 +1438,7 @@ Password specified by the user when they registered.
<p>
This is stored even if the &lt;connect&gt; block doesnt need a password, so that modules may check it.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00191">191</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00195">195</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="pingmax"></a><!-- doxytag: member="userrec::pingmax" ref="pingmax" args="" --><p>
@@ -1463,7 +1465,7 @@ Number of seconds between PINGs for this user (set from &lt;connect:allow&gt; ta
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00185">185</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00189">189</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="recvq"></a><!-- doxytag: member="userrec::recvq" ref="recvq" args="" --><p>
@@ -1490,9 +1492,9 @@ User's receive queue.
<p>
Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00197">197</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00201">201</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00224">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00232">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00237">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00245">BufferIsReady()</a>, <a class="el" href="users_8cpp-source.html#l00253">ClearBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00258">GetBuffer()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="recvqmax"></a><!-- doxytag: member="userrec::recvqmax" ref="recvqmax" args="" --><p>
@@ -1519,9 +1521,9 @@ Maximum size this user's recvq can become.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00220">220</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00224">224</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">AddBuffer()</a>. </td>
</tr>
</table>
<a class="anchor" name="reset_5Fdue"></a><!-- doxytag: member="userrec::reset_due" ref="reset_5Fdue" args="" --><p>
@@ -1546,9 +1548,9 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00198">AddBuffer()</a>
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00207">207</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00211">211</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendq"></a><!-- doxytag: member="userrec::sendq" ref="sendq" args="" --><p>
@@ -1575,9 +1577,9 @@ User's send queue.
<p>
Lines waiting to be sent are stored here until their buffer is flushed.
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00202">202</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00206">206</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00270">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>, <a class="el" href="users_8cpp-source.html#l00295">FlushWriteBuf()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="sendqmax"></a><!-- doxytag: member="userrec::sendqmax" ref="sendqmax" args="" --><p>
@@ -1604,9 +1606,9 @@ Maximum size this user's sendq can become.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00216">216</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00220">220</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00254">AddWriteBuf()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00275">AddWriteBuf()</a>. </td>
</tr>
</table>
<a class="anchor" name="server"></a><!-- doxytag: member="userrec::server" ref="server" args="" --><p>
@@ -1633,9 +1635,9 @@ The server the user is connected to.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00153">153</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00157">157</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="threshold"></a><!-- doxytag: member="userrec::threshold" ref="threshold" args="" --><p>
@@ -1660,7 +1662,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00208">208</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00212">212</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="timeout"></a><!-- doxytag: member="userrec::timeout" ref="timeout" args="" --><p>
@@ -1687,9 +1689,9 @@ Number of seconds this user is given to send USER/NICK If they do not send their
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00170">170</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00174">174</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00063">userrec()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteError"></a><!-- doxytag: member="userrec::WriteError" ref="WriteError" args="" --><p>
@@ -1714,14 +1716,14 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec()</a>.
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00212">212</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00216">216</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00300">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00292">SetWriteError()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00325">GetWriteError()</a>, and <a class="el" href="users_8cpp-source.html#l00317">SetWriteError()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/commands_8h-source.html b/docs/module-doc/commands_8h-source.html
index 463355e9f..33fbaa71d 100644
--- a/docs/module-doc/commands_8h-source.html
+++ b/docs/module-doc/commands_8h-source.html
@@ -11,7 +11,7 @@
<a name="l00002"></a>00002 <span class="comment"> * | Inspire Internet Relay Chat Daemon |</span>
<a name="l00003"></a>00003 <span class="comment"> * +------------------------------------+</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span>
+<a name="l00005"></a>00005 <span class="comment"> * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.</span>
<a name="l00006"></a>00006 <span class="comment"> * E-mail:</span>
<a name="l00007"></a>00007 <span class="comment"> * &lt;brain@chatspike.net&gt;</span>
<a name="l00008"></a>00008 <span class="comment"> * &lt;Craig@chatspike.net&gt;</span>
@@ -37,67 +37,79 @@
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00034"></a>00034 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_join</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00035"></a>00035 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_part</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kick</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_die</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_restart</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00040"></a>00040 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_summon</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_users</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pass</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_invite</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_topic</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_names</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00046"></a>00046 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_privmsg</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_notice</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_info</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_time</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whois</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_quit</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00052"></a>00052 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_who</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_wallops</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_list</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00055"></a>00055 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rehash</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_lusers</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00057"></a>00057 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_admin</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ping</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pong</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00060"></a>00060 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_motd</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rules</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_user</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00063"></a>00063 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_userhost</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ison</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_away</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whowas</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_trace</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00068"></a>00068 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_modules</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00069"></a>00069 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_stats</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_connect</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00071"></a>00071 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_squit</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00072"></a>00072 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_links</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_map</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_oper</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_nick</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_gline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00078"></a>00078 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_zline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00079"></a>00079 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_qline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_eline</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_server</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_loadmodule</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_unloadmodule</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00084"></a>00084 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_commands</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00085"></a>00085
-<a name="l00088"></a>00088 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* server);
-<a name="l00089"></a>00089
-<a name="l00092"></a>00092 <span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str);
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classuserrec.html">userrec</a>* dest,<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> signon, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> idle, <span class="keywordtype">char</span>* nick);
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00031"></a>00031 <span class="keywordtype">char</span>* <a class="code" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">CleanFilename</a>(<span class="keywordtype">char</span>* name);
+<a name="l00032"></a>00032 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* server);
+<a name="l00033"></a>00033 <span class="keywordtype">long</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str);
+<a name="l00034"></a>00034 <span class="keywordtype">void</span> <a class="code" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classuserrec.html">userrec</a>* dest,<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> signon, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> idle, <span class="keywordtype">char</span>* nick);
+<a name="l00035"></a>00035 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">host_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">ip_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ip, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00037"></a>00037 <span class="keywordtype">bool</span> <a class="code" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">nick_matches_everyone</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> <a class="code" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">operstrcmp</a>(<span class="keywordtype">char</span>* data,<span class="keywordtype">char</span>* input);
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="comment">/* XXX Serious WTFness XXX</span>
+<a name="l00041"></a>00041 <span class="comment"> *</span>
+<a name="l00042"></a>00042 <span class="comment"> * Well, unless someone invents a wildcard or</span>
+<a name="l00043"></a>00043 <span class="comment"> * regexp #include, and makes it a standard,</span>
+<a name="l00044"></a>00044 <span class="comment"> * we're stuck with this way of including all</span>
+<a name="l00045"></a>00045 <span class="comment"> * the commands.</span>
+<a name="l00046"></a>00046 <span class="comment"> */</span>
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="preprocessor">#include "cmd_admin.h"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "cmd_away.h"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "cmd_commands.h"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "cmd_connect.h"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "cmd_die.h"</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include "cmd_eline.h"</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include "cmd_gline.h"</span>
+<a name="l00055"></a>00055 <span class="preprocessor">#include "cmd_info.h"</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include "cmd_invite.h"</span>
+<a name="l00057"></a>00057 <span class="preprocessor">#include "cmd_ison.h"</span>
+<a name="l00058"></a>00058 <span class="preprocessor">#include "cmd_join.h"</span>
+<a name="l00059"></a>00059 <span class="preprocessor">#include "cmd_kick.h"</span>
+<a name="l00060"></a>00060 <span class="preprocessor">#include "cmd_kill.h"</span>
+<a name="l00061"></a>00061 <span class="preprocessor">#include "cmd_kline.h"</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#include "cmd_links.h"</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#include "cmd_list.h"</span>
+<a name="l00064"></a>00064 <span class="preprocessor">#include "cmd_loadmodule.h"</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#include "cmd_lusers.h"</span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include "cmd_map.h"</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#include "cmd_modules.h"</span>
+<a name="l00068"></a>00068 <span class="preprocessor">#include "cmd_motd.h"</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#include "cmd_names.h"</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#include "cmd_nick.h"</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#include "cmd_notice.h"</span>
+<a name="l00072"></a>00072 <span class="preprocessor">#include "cmd_oper.h"</span>
+<a name="l00073"></a>00073 <span class="preprocessor">#include "cmd_part.h"</span>
+<a name="l00074"></a>00074 <span class="preprocessor">#include "cmd_pass.h"</span>
+<a name="l00075"></a>00075 <span class="preprocessor">#include "cmd_ping.h"</span>
+<a name="l00076"></a>00076 <span class="preprocessor">#include "cmd_pong.h"</span>
+<a name="l00077"></a>00077 <span class="preprocessor">#include "cmd_privmsg.h"</span>
+<a name="l00078"></a>00078 <span class="preprocessor">#include "cmd_qline.h"</span>
+<a name="l00079"></a>00079 <span class="preprocessor">#include "cmd_quit.h"</span>
+<a name="l00080"></a>00080 <span class="preprocessor">#include "cmd_rehash.h"</span>
+<a name="l00081"></a>00081 <span class="preprocessor">#include "cmd_restart.h"</span>
+<a name="l00082"></a>00082 <span class="preprocessor">#include "cmd_rules.h"</span>
+<a name="l00083"></a>00083 <span class="preprocessor">#include "cmd_server.h"</span>
+<a name="l00084"></a>00084 <span class="preprocessor">#include "cmd_squit.h"</span>
+<a name="l00085"></a>00085 <span class="preprocessor">#include "cmd_stats.h"</span>
+<a name="l00086"></a>00086 <span class="preprocessor">#include "cmd_summon.h"</span>
+<a name="l00087"></a>00087 <span class="preprocessor">#include "cmd_time.h"</span>
+<a name="l00088"></a>00088 <span class="preprocessor">#include "cmd_topic.h"</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#include "cmd_trace.h"</span>
+<a name="l00090"></a>00090 <span class="preprocessor">#include "cmd_unloadmodule.h"</span>
+<a name="l00091"></a>00091 <span class="preprocessor">#include "cmd_user.h"</span>
+<a name="l00092"></a>00092 <span class="preprocessor">#include "cmd_userhost.h"</span>
+<a name="l00093"></a>00093 <span class="preprocessor">#include "cmd_users.h"</span>
+<a name="l00094"></a>00094 <span class="preprocessor">#include "cmd_version.h"</span>
+<a name="l00095"></a>00095 <span class="preprocessor">#include "cmd_wallops.h"</span>
+<a name="l00096"></a>00096 <span class="preprocessor">#include "cmd_who.h"</span>
+<a name="l00097"></a>00097 <span class="preprocessor">#include "cmd_whois.h"</span>
+<a name="l00098"></a>00098 <span class="preprocessor">#include "cmd_whowas.h"</span>
+<a name="l00099"></a>00099 <span class="preprocessor">#include "cmd_zline.h"</span>
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/commands_8h.html b/docs/module-doc/commands_8h.html
index d34bebd33..519a15ab4 100644
--- a/docs/module-doc/commands_8h.html
+++ b/docs/module-doc/commands_8h.html
@@ -15,13 +15,64 @@
<code>#include &lt;vector&gt;</code><br>
<code>#include &quot;<a class="el" href="users_8h-source.html">users.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="channels_8h-source.html">channels.h</a>&quot;</code><br>
+<code>#include &quot;cmd_admin.h&quot;</code><br>
+<code>#include &quot;cmd_away.h&quot;</code><br>
+<code>#include &quot;cmd_commands.h&quot;</code><br>
+<code>#include &quot;cmd_connect.h&quot;</code><br>
+<code>#include &quot;cmd_die.h&quot;</code><br>
+<code>#include &quot;cmd_eline.h&quot;</code><br>
+<code>#include &quot;cmd_gline.h&quot;</code><br>
+<code>#include &quot;cmd_info.h&quot;</code><br>
+<code>#include &quot;cmd_invite.h&quot;</code><br>
+<code>#include &quot;cmd_ison.h&quot;</code><br>
+<code>#include &quot;cmd_join.h&quot;</code><br>
+<code>#include &quot;cmd_kick.h&quot;</code><br>
+<code>#include &quot;cmd_kill.h&quot;</code><br>
+<code>#include &quot;cmd_kline.h&quot;</code><br>
+<code>#include &quot;cmd_links.h&quot;</code><br>
+<code>#include &quot;cmd_list.h&quot;</code><br>
+<code>#include &quot;cmd_loadmodule.h&quot;</code><br>
+<code>#include &quot;cmd_lusers.h&quot;</code><br>
+<code>#include &quot;cmd_map.h&quot;</code><br>
+<code>#include &quot;cmd_modules.h&quot;</code><br>
+<code>#include &quot;cmd_motd.h&quot;</code><br>
+<code>#include &quot;cmd_names.h&quot;</code><br>
+<code>#include &quot;cmd_nick.h&quot;</code><br>
+<code>#include &quot;cmd_notice.h&quot;</code><br>
+<code>#include &quot;cmd_oper.h&quot;</code><br>
+<code>#include &quot;cmd_part.h&quot;</code><br>
+<code>#include &quot;cmd_pass.h&quot;</code><br>
+<code>#include &quot;cmd_ping.h&quot;</code><br>
+<code>#include &quot;cmd_pong.h&quot;</code><br>
+<code>#include &quot;cmd_privmsg.h&quot;</code><br>
+<code>#include &quot;cmd_qline.h&quot;</code><br>
+<code>#include &quot;cmd_quit.h&quot;</code><br>
+<code>#include &quot;cmd_rehash.h&quot;</code><br>
+<code>#include &quot;cmd_restart.h&quot;</code><br>
+<code>#include &quot;cmd_rules.h&quot;</code><br>
+<code>#include &quot;cmd_server.h&quot;</code><br>
+<code>#include &quot;cmd_squit.h&quot;</code><br>
+<code>#include &quot;cmd_stats.h&quot;</code><br>
+<code>#include &quot;cmd_summon.h&quot;</code><br>
+<code>#include &quot;cmd_time.h&quot;</code><br>
+<code>#include &quot;cmd_topic.h&quot;</code><br>
+<code>#include &quot;cmd_trace.h&quot;</code><br>
+<code>#include &quot;cmd_unloadmodule.h&quot;</code><br>
+<code>#include &quot;cmd_user.h&quot;</code><br>
+<code>#include &quot;cmd_userhost.h&quot;</code><br>
+<code>#include &quot;cmd_users.h&quot;</code><br>
+<code>#include &quot;cmd_version.h&quot;</code><br>
+<code>#include &quot;cmd_wallops.h&quot;</code><br>
+<code>#include &quot;cmd_who.h&quot;</code><br>
+<code>#include &quot;cmd_whois.h&quot;</code><br>
+<code>#include &quot;cmd_whowas.h&quot;</code><br>
+<code>#include &quot;cmd_zline.h&quot;</code><br>
<p>
Include dependency graph for commands.h:<p><center><img src="commands_8h__incl.gif" border="0" usemap="#commands.h_map" alt=""></center>
<map name="commands.h_map">
-<area href="users_8h-source.html" shape="rect" coords="159,260,223,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="283,210,368,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="276,362,375,388" alt="">
+<area href="users_8h-source.html" shape="rect" coords="198,260,262,287" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="355,311,440,337" alt="">
</map>
<p>
@@ -36,1912 +87,36 @@ This graph shows which files directly or indirectly include this file:<p><center
<a href="commands_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_join</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">These are the handlers for user commands. <a href="#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_part</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kick</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_die</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_restart</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kill</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_summon</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_users</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pass</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_invite</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_topic</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_names</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_privmsg</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_notice</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_info</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_time</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whois</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_quit</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_who</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_wallops</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_list</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rehash</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_lusers</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_admin</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ping</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_pong</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_motd</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_rules</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_user</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_userhost</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_ison</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_away</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_whowas</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_trace</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_modules</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_stats</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_connect</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_squit</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_links</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_map</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_oper</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_nick</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_kline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_gline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_zline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_qline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_eline</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_server</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_loadmodule</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_unloadmodule</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_commands</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">CleanFilename</a> (char *name)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a> (const char *server)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions for u:lined servers. <a href="#is_5Fuline_28const_20char_20_2Aserver_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a> (const char *str)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Other useful functions. <a href="#duration_28const_20char_20_2Astr_29"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">do_whois</a> (<a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classuserrec.html">userrec</a> *dest, unsigned long signon, unsigned long idle, char *nick)</td></tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29"></a><!-- doxytag: member="commands.h::do_whois" ref="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29" args="(userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void do_whois </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>signon</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>idle</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>nick</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="duration_28const_20char_20_2Astr_29"></a><!-- doxytag: member="commands.h::duration" ref="duration_28const_20char_20_2Astr_29" args="(const char *str)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">long duration </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Other useful functions.
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00690">Server::CalcDuration()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_admin" ref="handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_admin </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_away" ref="handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_away </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_commands" ref="handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_commands </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_connect" ref="handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_connect </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_die" ref="handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_die </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_eline" ref="handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_eline </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_gline" ref="handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_gline </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_info" ref="handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_info </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_invite" ref="handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_invite </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_ison" ref="handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_ison </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_join" ref="handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_join </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-These are the handlers for user commands.
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kick" ref="handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kick </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">host_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> mask, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kill" ref="handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kill </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">ip_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> ip, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_kline" ref="handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_kline </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">nick_matches_everyone</a> (<a class="el" href="namespaceirc.html#string">std::string</a> nick, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_links" ref="handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_links </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">operstrcmp</a> (char *data, char *input)</td></tr>
-<p>
- </td>
- </tr>
</table>
-<a class="anchor" name="handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_list" ref="handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_list </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_loadmodule" ref="handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_loadmodule </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_lusers" ref="handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_lusers </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_map" ref="handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_map </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_modules" ref="handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_modules </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_motd" ref="handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_motd </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_names" ref="handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_names </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_nick" ref="handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_nick </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_notice" ref="handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_notice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_oper" ref="handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_oper </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_part" ref="handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_part </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_pass" ref="handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_pass </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_ping" ref="handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_ping </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_pong" ref="handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_pong </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_privmsg" ref="handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_privmsg </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_qline" ref="handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_qline </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_quit" ref="handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_quit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_rehash" ref="handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_rehash </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_restart" ref="handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_restart </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_rules" ref="handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_rules </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_server" ref="handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_server </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_squit" ref="handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_squit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_stats" ref="handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_stats </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_summon" ref="handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_summon </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_time" ref="handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="CleanFilename_28char_20_2Aname_29"></a><!-- doxytag: member="commands.h::CleanFilename" ref="CleanFilename_28char_20_2Aname_29" args="(char *name)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_time </td>
+ <td class="md" nowrap valign="top">char* CleanFilename </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>name</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
</td>
@@ -1958,114 +133,40 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_topic" ref="handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29"></a><!-- doxytag: member="commands.h::do_whois" ref="do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29" args="(userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_topic </td>
+ <td class="md" nowrap valign="top">void do_whois </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_trace" ref="handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_trace </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_unloadmodule" ref="handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_unloadmodule </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
+ <td class="md" nowrap>unsigned long&nbsp;</td>
+ <td class="mdname" nowrap> <em>signon</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap>unsigned long&nbsp;</td>
+ <td class="mdname" nowrap> <em>idle</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>nick</em></td>
</tr>
<tr>
<td class="md"></td>
@@ -2087,33 +188,18 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_user" ref="handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="duration_28const_20char_20_2Astr_29"></a><!-- doxytag: member="commands.h::duration" ref="duration_28const_20char_20_2Astr_29" args="(const char *str)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_user </td>
+ <td class="md" nowrap valign="top">long duration </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
</td>
@@ -2127,68 +213,21 @@ These are the handlers for user commands.
<td>
<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_userhost" ref="handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_userhost </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
<p>
- </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00689">Server::CalcDuration()</a>. </td>
</tr>
</table>
-<a class="anchor" name="handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_users" ref="handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::host_matches_everyone" ref="host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29" args="(std::string mask, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_users </td>
+ <td class="md" nowrap valign="top">bool host_matches_everyone </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>mask</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
@@ -2216,22 +255,16 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_wallops" ref="handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::ip_matches_everyone" ref="ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29" args="(std::string ip, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_wallops </td>
+ <td class="md" nowrap valign="top">bool ip_matches_everyone </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>ip</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
@@ -2259,33 +292,18 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_who" ref="handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="is_5Fuline_28const_20char_20_2Aserver_29"></a><!-- doxytag: member="commands.h::is_uline" ref="is_5Fuline_28const_20char_20_2Aserver_29" args="(const char *server)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_who </td>
+ <td class="md" nowrap valign="top">bool is_uline </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>server</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
</tr>
</table>
</td>
@@ -2299,68 +317,21 @@ These are the handlers for user commands.
<td>
<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_whois" ref="handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_whois </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
<p>
- </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00165">userrec::HasPermission()</a>, <a class="el" href="modules_8cpp-source.html#l00395">Server::IsUlined()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
-<a class="anchor" name="handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_whowas" ref="handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::nick_matches_everyone" ref="nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29" args="(std::string nick, userrec *user)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_whowas </td>
+ <td class="md" nowrap valign="top">bool nick_matches_everyone </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">std::string</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nick</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
@@ -2388,28 +359,22 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="commands.h::handle_zline" ref="handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
+<a class="anchor" name="operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29"></a><!-- doxytag: member="commands.h::operstrcmp" ref="operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29" args="(char *data, char *input)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void handle_zline </td>
+ <td class="md" nowrap valign="top">int operstrcmp </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>input</em></td>
</tr>
<tr>
<td class="md"></td>
@@ -2431,39 +396,7 @@ These are the handlers for user commands.
</td>
</tr>
</table>
-<a class="anchor" name="is_5Fuline_28const_20char_20_2Aserver_29"></a><!-- doxytag: member="commands.h::is_uline" ref="is_5Fuline_28const_20char_20_2Aserver_29" args="(const char *server)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool is_uline </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>server</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Functions for u:lined servers.
-<p>
-
-<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00144">userrec::HasPermission()</a>, <a class="el" href="modules_8cpp-source.html#l00396">Server::IsUlined()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
- </tr>
-</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/commands_8h__incl.map b/docs/module-doc/commands_8h__incl.map
index c90c37759..3712e88fb 100644
--- a/docs/module-doc/commands_8h__incl.map
+++ b/docs/module-doc/commands_8h__incl.map
@@ -1,4 +1,3 @@
base referer
-rect $users_8h-source.html 159,260 223,287
-rect $channels_8h-source.html 283,210 368,236
-rect $connection_8h-source.html 276,362 375,388
+rect $users_8h-source.html 198,260 262,287
+rect $channels_8h-source.html 355,311 440,337
diff --git a/docs/module-doc/commands_8h__incl.md5 b/docs/module-doc/commands_8h__incl.md5
index 75966de38..cb82238d9 100644
--- a/docs/module-doc/commands_8h__incl.md5
+++ b/docs/module-doc/commands_8h__incl.md5
@@ -1 +1 @@
-0ab6434b364171922a16fbd69fe35c2b \ No newline at end of file
+a53e792c40a1f2a94bc199e5679cfe9b \ No newline at end of file
diff --git a/docs/module-doc/connection_8h-source.html b/docs/module-doc/connection_8h-source.html
index be8560aa5..d0aa3eac3 100644
--- a/docs/module-doc/connection_8h-source.html
+++ b/docs/module-doc/connection_8h-source.html
@@ -82,7 +82,7 @@
<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span>
<a name="l00109"></a>00109
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/connection_8h.html b/docs/module-doc/connection_8h.html
index d78e7e3ba..5b9315941 100644
--- a/docs/module-doc/connection_8h.html
+++ b/docs/module-doc/connection_8h.html
@@ -43,7 +43,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Please note: classes serverrec and userrec both inherit from class connection. <a href="classconnection.html#_details">More...</a><br></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/connection_8h__dep__incl.md5 b/docs/module-doc/connection_8h__dep__incl.md5
index 107cf65bd..805703248 100644
--- a/docs/module-doc/connection_8h__dep__incl.md5
+++ b/docs/module-doc/connection_8h__dep__incl.md5
@@ -1 +1 @@
-59ee32ffe8ea5904c6be653a9ecfd51c \ No newline at end of file
+0e1861daaddbab4521f1d2933037aa81 \ No newline at end of file
diff --git a/docs/module-doc/ctables_8h-source.html b/docs/module-doc/ctables_8h-source.html
index d5c1630ad..e2d1ecb8b 100644
--- a/docs/module-doc/ctables_8h-source.html
+++ b/docs/module-doc/ctables_8h-source.html
@@ -27,24 +27,38 @@
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define __CTABLES_H__</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "inspircd_config.h"</span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="base_8h.html">base.h</a>"</span>
-<a name="l00023"></a>00023
-<a name="l00026"></a><a class="code" href="classcommand__t.html">00026</a> <span class="keyword">class </span><a class="code" href="classcommand__t.html">command_t</a> : <span class="keyword">public</span> <a class="code" href="classExtensible.html">Extensible</a>
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="keyword">public</span>:
-<a name="l00031"></a><a class="code" href="classcommand__t.html#command_5BMAXBUF_5D">00031</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#command_5BMAXBUF_5D">command</a>[MAXBUF];
-<a name="l00034"></a><a class="code" href="classcommand__t.html#handler_5Ffunction">00034</a> <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> *<a class="code" href="classcommand__t.html#handler_5Ffunction">handler_function</a>;
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;deque&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a>;
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="comment">/*typedef void (handlerfunc) (char**, int, userrec*);*/</span>
+<a name="l00026"></a>00026
+<a name="l00029"></a><a class="code" href="classcommand__t.html">00029</a> <span class="keyword">class </span><a class="code" href="classcommand__t.html">command_t</a>
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031 <span class="keyword">public</span>:
+<a name="l00034"></a><a class="code" href="classcommand__t.html#command">00034</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classcommand__t.html#command">command</a>;
<a name="l00037"></a><a class="code" href="classcommand__t.html#flags_5Fneeded">00037</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>;
<a name="l00040"></a><a class="code" href="classcommand__t.html#min_5Fparams">00040</a> <span class="keywordtype">int</span> <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>;
<a name="l00043"></a><a class="code" href="classcommand__t.html#use_5Fcount">00043</a> <span class="keywordtype">long</span> <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a>;
<a name="l00046"></a><a class="code" href="classcommand__t.html#total_5Fbytes">00046</a> <span class="keywordtype">long</span> <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a>;
-<a name="l00049"></a><a class="code" href="classcommand__t.html#source_5BMAXBUF_5D">00049</a> <span class="keywordtype">char</span> <a class="code" href="classcommand__t.html#source_5BMAXBUF_5D">source</a>[MAXBUF];
-<a name="l00050"></a>00050 };
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="preprocessor">#endif</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00049"></a><a class="code" href="classcommand__t.html#source">00049</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classcommand__t.html#source">source</a>;
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">00051</a> <a class="code" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a>(<a class="code" href="namespaceirc.html#string">std::string</a> cmd, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minpara) : <a class="code" href="classcommand__t.html#command">command</a>(cmd), <a class="code" href="classcommand__t.html#flags_5Fneeded">flags_needed</a>(flags), <a class="code" href="classcommand__t.html#min_5Fparams">min_params</a>(minpara)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <a class="code" href="classcommand__t.html#use_5Fcount">use_count</a> = <a class="code" href="classcommand__t.html#total_5Fbytes">total_bytes</a> = 0;
+<a name="l00054"></a>00054 <a class="code" href="classcommand__t.html#source">source</a> = <span class="stringliteral">"&lt;core&gt;"</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">Handle</a>(<span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user) = 0;
+<a name="l00058"></a>00058
+<a name="l00059"></a><a class="code" href="classcommand__t.html#_7Ecommand_5Ft_28_29">00059</a> <span class="keyword">virtual</span> <a class="code" href="classcommand__t.html#_7Ecommand_5Ft_28_29">~command_t</a>() {}
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00062"></a><a class="code" href="ctables_8h.html#command_5Ftable">00062</a> <span class="keyword">typedef</span> std::deque&lt;command_t*&gt; <a class="code" href="ctables_8h.html#command_5Ftable">command_table</a>;
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/ctables_8h.html b/docs/module-doc/ctables_8h.html
index 8c924681f..42e44d330 100644
--- a/docs/module-doc/ctables_8h.html
+++ b/docs/module-doc/ctables_8h.html
@@ -8,23 +8,19 @@
<div class="nav">
<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_000004.html">include</a></div>
<h1>ctables.h File Reference</h1><code>#include &quot;inspircd_config.h&quot;</code><br>
-<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
-<code>#include &quot;<a class="el" href="base_8h-source.html">base.h</a>&quot;</code><br>
+<code>#include &lt;deque&gt;</code><br>
<p>
Include dependency graph for ctables.h:<p><center><img src="ctables_8h__incl.gif" border="0" usemap="#ctables.h_map" alt=""></center>
-<map name="ctables.h_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="132,57,212,84" alt="">
-<area href="base_8h-source.html" shape="rect" coords="141,108,203,135" alt="">
-</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="ctables_8h__dep__incl.gif" border="0" usemap="#ctables.hdep_map" alt=""></center>
<map name="ctables.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="400,58,499,84" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="400,159,499,186" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="400,108,499,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="400,184,499,211" alt="">
<area href="modules_8h-source.html" shape="rect" coords="134,108,216,135" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="266,58,351,84" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="266,159,351,185" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="275,209,342,236" alt="">
</map>
<p>
@@ -34,8 +30,37 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcommand__t.html">command_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A structure that defines a command. <a href="classcommand__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::deque&lt; <a class="el" href="classcommand__t.html">command_t</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a></td></tr>
+
+</table>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="command_5Ftable"></a><!-- doxytag: member="ctables.h::command_table" ref="command_5Ftable" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="classcommand__t.html">command_t</a>*&gt; <a class="el" href="ctables_8h.html#command_5Ftable">command_table</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="ctables_8h-source.html#l00062">62</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
+ </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/ctables_8h__dep__incl.map b/docs/module-doc/ctables_8h__dep__incl.map
index 87b8aefa4..23354987f 100644
--- a/docs/module-doc/ctables_8h__dep__incl.map
+++ b/docs/module-doc/ctables_8h__dep__incl.map
@@ -1,5 +1,6 @@
base referer
-rect $channels_8cpp-source.html 400,58 499,84
-rect $modules_8cpp-source.html 400,159 499,186
+rect $channels_8cpp-source.html 400,108 499,135
+rect $modules_8cpp-source.html 400,184 499,211
rect $modules_8h-source.html 134,108 216,135
-rect $typedefs_8h-source.html 266,58 351,84
+rect $typedefs_8h-source.html 266,159 351,185
+rect $mode_8h-source.html 275,209 342,236
diff --git a/docs/module-doc/ctables_8h__dep__incl.md5 b/docs/module-doc/ctables_8h__dep__incl.md5
index 3307d14f6..c35f9be47 100644
--- a/docs/module-doc/ctables_8h__dep__incl.md5
+++ b/docs/module-doc/ctables_8h__dep__incl.md5
@@ -1 +1 @@
-6858a245b05b677af1e0f72cce2d967f \ No newline at end of file
+1cb19b8d7a8ce1acf4cdb02da02f3f37 \ No newline at end of file
diff --git a/docs/module-doc/ctables_8h__incl.map b/docs/module-doc/ctables_8h__incl.map
index 413e1a566..5a14779e7 100644
--- a/docs/module-doc/ctables_8h__incl.map
+++ b/docs/module-doc/ctables_8h__incl.map
@@ -1,3 +1 @@
base referer
-rect $inspircd_8h-source.html 132,57 212,84
-rect $base_8h-source.html 141,108 203,135
diff --git a/docs/module-doc/ctables_8h__incl.md5 b/docs/module-doc/ctables_8h__incl.md5
index 8cde4cbba..cd96c12ea 100644
--- a/docs/module-doc/ctables_8h__incl.md5
+++ b/docs/module-doc/ctables_8h__incl.md5
@@ -1 +1 @@
-4bac505726c8cdd742349b74377d3ac3 \ No newline at end of file
+40fd955ba897df932e17c7525207162b \ No newline at end of file
diff --git a/docs/module-doc/cull__list_8h-source.html b/docs/module-doc/cull__list_8h-source.html
index 0edd66e92..83695c0e5 100644
--- a/docs/module-doc/cull__list_8h-source.html
+++ b/docs/module-doc/cull__list_8h-source.html
@@ -60,7 +60,7 @@
<a name="l00109"></a>00109 };
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/cull__list_8h.html b/docs/module-doc/cull__list_8h.html
index 3495b81d6..4e852de90 100644
--- a/docs/module-doc/cull__list_8h.html
+++ b/docs/module-doc/cull__list_8h.html
@@ -20,8 +20,9 @@
Include dependency graph for cull_list.h:<p><center><img src="cull__list_8h__incl.gif" border="0" usemap="#cull_list.h_map" alt=""></center>
<map name="cull_list.h_map">
<area href="users_8h-source.html" shape="rect" coords="138,260,202,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="262,210,347,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="255,362,354,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="262,209,347,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="255,412,354,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="258,311,351,337" alt="">
</map>
<p>
@@ -35,7 +36,7 @@ Include dependency graph for cull_list.h:<p><center><img src="cull__list_8h__inc
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The CullList class can be used by modules, and is used by the core, to compile large lists of users in preperation to quitting them all at once. <a href="classCullList.html#_details">More...</a><br></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/cull__list_8h__incl.map b/docs/module-doc/cull__list_8h__incl.map
index 1308df182..83585e216 100644
--- a/docs/module-doc/cull__list_8h__incl.map
+++ b/docs/module-doc/cull__list_8h__incl.map
@@ -1,4 +1,5 @@
base referer
rect $users_8h-source.html 138,260 202,287
-rect $channels_8h-source.html 262,210 347,236
-rect $connection_8h-source.html 255,362 354,388
+rect $channels_8h-source.html 262,209 347,236
+rect $connection_8h-source.html 255,412 354,439
+rect $hashcomp_8h-source.html 258,311 351,337
diff --git a/docs/module-doc/cull__list_8h__incl.md5 b/docs/module-doc/cull__list_8h__incl.md5
index 0d58df24d..8e48434f9 100644
--- a/docs/module-doc/cull__list_8h__incl.md5
+++ b/docs/module-doc/cull__list_8h__incl.md5
@@ -1 +1 @@
-eba432fe5650ee3ba1491a9f1a296ae1 \ No newline at end of file
+15a1b582a0c3999d28743f4a72ab2570 \ No newline at end of file
diff --git a/docs/module-doc/dir_000000.html b/docs/module-doc/dir_000000.html
index 1d1d82589..34e772952 100644
--- a/docs/module-doc/dir_000000.html
+++ b/docs/module-doc/dir_000000.html
@@ -20,7 +20,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000001.html">brain</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000000_dep.gif b/docs/module-doc/dir_000000_dep.gif
index f2c3bcd44..62bb6fe7e 100644
--- a/docs/module-doc/dir_000000_dep.gif
+++ b/docs/module-doc/dir_000000_dep.gif
Binary files differ
diff --git a/docs/module-doc/dir_000001.html b/docs/module-doc/dir_000001.html
index 5a5ae1ff0..3ba6911ae 100644
--- a/docs/module-doc/dir_000001.html
+++ b/docs/module-doc/dir_000001.html
@@ -21,7 +21,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000002.html">inspircd-cvs</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000001_dep.gif b/docs/module-doc/dir_000001_dep.gif
index a2748fee9..dcea55c5c 100644
--- a/docs/module-doc/dir_000001_dep.gif
+++ b/docs/module-doc/dir_000001_dep.gif
Binary files differ
diff --git a/docs/module-doc/dir_000002.html b/docs/module-doc/dir_000002.html
index 9661f9726..20d93c329 100644
--- a/docs/module-doc/dir_000002.html
+++ b/docs/module-doc/dir_000002.html
@@ -21,7 +21,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000003.html">inspircd</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000002_dep.gif b/docs/module-doc/dir_000002_dep.gif
index fb9a6f64a..370b51966 100644
--- a/docs/module-doc/dir_000002_dep.gif
+++ b/docs/module-doc/dir_000002_dep.gif
Binary files differ
diff --git a/docs/module-doc/dir_000003.html b/docs/module-doc/dir_000003.html
index bbc95ada8..2ac34368a 100644
--- a/docs/module-doc/dir_000003.html
+++ b/docs/module-doc/dir_000003.html
@@ -26,7 +26,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">directory &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_000005.html">src</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000003_dep.gif b/docs/module-doc/dir_000003_dep.gif
index 57efe33a6..b920a467f 100644
--- a/docs/module-doc/dir_000003_dep.gif
+++ b/docs/module-doc/dir_000003_dep.gif
Binary files differ
diff --git a/docs/module-doc/dir_000004.html b/docs/module-doc/dir_000004.html
index 9f9dfde98..1cb43f248 100644
--- a/docs/module-doc/dir_000004.html
+++ b/docs/module-doc/dir_000004.html
@@ -17,6 +17,8 @@
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="aes_8h.html">aes.h</a> <a href="aes_8h-source.html">[code]</a></td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html">base.h</a> <a href="base_8h-source.html">[code]</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="channels_8h.html">channels.h</a> <a href="channels_8h-source.html">[code]</a></td></tr>
@@ -58,7 +60,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xline_8h.html">xline.h</a> <a href="xline_8h-source.html">[code]</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000004_dep.gif b/docs/module-doc/dir_000004_dep.gif
index 069d80062..4db6c66d6 100644
--- a/docs/module-doc/dir_000004_dep.gif
+++ b/docs/module-doc/dir_000004_dep.gif
Binary files differ
diff --git a/docs/module-doc/dir_000005.html b/docs/module-doc/dir_000005.html
index f5c01a6e1..7afa9451f 100644
--- a/docs/module-doc/dir_000005.html
+++ b/docs/module-doc/dir_000005.html
@@ -31,7 +31,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html">users.cpp</a> <a href="users_8cpp-source.html">[code]</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000005_000004.html b/docs/module-doc/dir_000005_000004.html
index 028cea65e..700c77fbb 100644
--- a/docs/module-doc/dir_000005_000004.html
+++ b/docs/module-doc/dir_000005_000004.html
@@ -7,7 +7,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>
<div class="nav">
<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>
-<h3>src &rarr; include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in <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></th><th class="dirtab">Includes file in <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_000004.html">include</a></th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="channels_8h.html">channels.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="connection_8h.html">connection.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr></table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<h3>src &rarr; include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in <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></th><th class="dirtab">Includes file in <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_000004.html">include</a></th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="channels_8cpp.html">channels.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="ctables_8h.html">ctables.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="mode_8h.html">mode.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="modules_8h.html">modules.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="modules_8cpp.html">modules.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="inspircd__io_8h.html">inspircd_io.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socket_8h.html">socket.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socket_8cpp.html">socket.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="globals_8h.html">globals.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="socketengine_8cpp.html">socketengine.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="channels_8h.html">channels.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="commands_8h.html">commands.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="connection_8h.html">connection.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="hashcomp_8h.html">hashcomp.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="inspircd_8h.html">inspircd.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="message_8h.html">message.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="socketengine_8h.html">socketengine.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="typedefs_8h.html">typedefs.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="users_8h.html">users.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="users_8cpp.html">users.cpp</a></td><td class="dirtab"><a class="el" href="xline_8h.html">xline.h</a></td></tr></table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dir_000005_dep.gif b/docs/module-doc/dir_000005_dep.gif
index 946e6e401..b101b5fba 100644
--- a/docs/module-doc/dir_000005_dep.gif
+++ b/docs/module-doc/dir_000005_dep.gif
Binary files differ
diff --git a/docs/module-doc/dirs.html b/docs/module-doc/dirs.html
index f4c283aef..e195168bb 100644
--- a/docs/module-doc/dirs.html
+++ b/docs/module-doc/dirs.html
@@ -21,7 +21,7 @@
</ul>
</ul>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dns_8h-source.html b/docs/module-doc/dns_8h-source.html
index 76c546680..197c36e83 100644
--- a/docs/module-doc/dns_8h-source.html
+++ b/docs/module-doc/dns_8h-source.html
@@ -74,8 +74,10 @@
<a name="l00097"></a>00097 <span class="keywordtype">void</span> <a class="code" href="classDNS.html#SetNS_28std_3A_3Astring_20dnsserver_29">SetNS</a>(<a class="code" href="namespaceirc.html#string">std::string</a> dnsserver);
<a name="l00098"></a>00098 };
<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00105"></a>00105 <span class="keywordtype">void</span>* <a class="code" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a>(<span class="keywordtype">void</span>* arg);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/dns_8h.html b/docs/module-doc/dns_8h.html
index e24387110..3b5c6dc4f 100644
--- a/docs/module-doc/dns_8h.html
+++ b/docs/module-doc/dns_8h.html
@@ -24,8 +24,43 @@ Include dependency graph for dns.h:<p><center><img src="dns_8h__incl.gif" border
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDNS.html">DNS</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DNS class allows fast nonblocking resolution of hostnames and ip addresses. <a href="classDNS.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a> (void *arg)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the handler function for multi-threaded <a class="el" href="classDNS.html">DNS</a>. <a href="#dns_5Ftask_28void_20_2Aarg_29"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="dns_5Ftask_28void_20_2Aarg_29"></a><!-- doxytag: member="dns.h::dns_task" ref="dns_5Ftask_28void_20_2Aarg_29" args="(void *arg)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void* dns_task </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>arg</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This is the handler function for multi-threaded <a class="el" href="classDNS.html">DNS</a>.
+<p>
+It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh). </td>
+ </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/files.html b/docs/module-doc/files.html
index 32fe81008..00a06dc08 100644
--- a/docs/module-doc/files.html
+++ b/docs/module-doc/files.html
@@ -6,6 +6,7 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" 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>
<h1>InspIRCd File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="aes_8h.html">aes.h</a> <a href="aes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="base_8h.html">base.h</a> <a href="base_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="channels_8cpp.html">channels.cpp</a> <a href="channels_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="channels_8h.html">channels.h</a> <a href="channels_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
@@ -32,7 +33,7 @@
<tr><td class="indexkey"><a class="el" href="users_8h.html">users.h</a> <a href="users_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="xline_8h.html">xline.h</a> <a href="xline_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions.html b/docs/module-doc/functions.html
index 63ec060ee..95dd71675 100644
--- a/docs/module-doc/functions.html
+++ b/docs/module-doc/functions.html
@@ -5,21 +5,24 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindexHL" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AddBuffer()
+<li>a
+: <a class="el" href="classAES.html#a_5BMAX_5FBC_5D">AES</a><li>AddBan()
+: <a class="el" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>AddBuffer()
: <a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec</a><li>AddCommand()
-: <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server</a><li>AddELine()
+: <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server</a><li>AddELine()
: <a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddExtendedListMode()
: <a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server</a><li>AddExtendedMode()
: <a class="el" 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</a><li>AddFd()
: <a class="el" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">SocketEngine</a><li>AddGLine()
-: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddItem()
+: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddIOHook()
+: <a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">ServerConfig</a><li>AddItem()
: <a class="el" href="classCullList.html#AddItem_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">CullList</a><li>AddKLine()
: <a class="el" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddQLine()
: <a class="el" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server</a><li>addr
@@ -33,12 +36,14 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>AdminEmail
: <a class="el" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">ServerConfig</a><li>AdminName
: <a class="el" href="classServerConfig.html#AdminName_5BMAXBUF_5D">ServerConfig</a><li>AdminNick
-: <a class="el" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">ServerConfig</a><li>age
-: <a class="el" href="classclassbase.html#age">classbase</a><li>AllowHalfop
+: <a class="el" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">ServerConfig</a><li>AES()
+: <a class="el" href="classAES.html#AES_28_29">AES</a><li>age
+: <a class="el" href="classclassbase.html#age">classbase</a><li>AllowedUmode()
+: <a class="el" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">ModeParser</a><li>AllowHalfop
: <a class="el" href="classServerConfig.html#AllowHalfop">ServerConfig</a><li>Apply()
: <a class="el" href="classCullList.html#Apply_28_29">CullList</a><li>awaymsg
: <a class="el" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x62.html b/docs/module-doc/functions_0x62.html
index 736160f32..bc155ce8e 100644
--- a/docs/module-doc/functions_0x62.html
+++ b/docs/module-doc/functions_0x62.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindexHL" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindexHL" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -17,12 +17,14 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classchanrec.html#binarymodes">chanrec</a><li>binip
: <a class="el" href="classDNS.html#binip">DNS</a><li>bits
: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>BoolSet()
-: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BufferIsReady()
+: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BoundPortCount
+: <a class="el" href="classserverstats.html#BoundPortCount">serverstats</a><li>Buffer
+: <a class="el" href="classInspSocket.html#Buffer">InspSocket</a><li>BufferIsReady()
: <a class="el" href="classuserrec.html#BufferIsReady_28_29">userrec</a><li>Build
: <a class="el" href="classVersion.html#Build">Version</a><li>bytes_in
: <a class="el" href="classconnection.html#bytes_5Fin">connection</a><li>bytes_out
: <a class="el" href="classconnection.html#bytes_5Fout">connection</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x63.html b/docs/module-doc/functions_0x63.html
index 0d8524325..74818b341 100644
--- a/docs/module-doc/functions_0x63.html
+++ b/docs/module-doc/functions_0x63.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -15,12 +15,14 @@ Here is a list of all class members with links to the classes they belong to:
<li>cache
: <a class="el" href="classConfigReader.html#cache">ConfigReader</a><li>CalcDuration()
: <a class="el" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">Server</a><li>CallCommandHandler()
-: <a class="el" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a><li>ChangeGECOS()
+: <a class="el" href="classServer.html#CallCommandHandler_28std_3A_3Astring_20commandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a><li>CBC
+: <a class="el" href="classAES.html#_40_30CBC">AES</a><li>CFB
+: <a class="el" href="classAES.html#_40_30CFB">AES</a><li>ChangeGECOS()
: <a class="el" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Server</a><li>ChangeHost()
: <a class="el" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">Server</a><li>ChangeUserNick()
: <a class="el" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">Server</a><li>ChanMode()
: <a class="el" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>channel
-: <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chanrec()
+: <a class="el" href="classInvited.html#channel">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chanrec()
: <a class="el" href="classchanrec.html#chanrec_28_29">chanrec</a><li>chans
: <a class="el" href="classuserrec.html#chans">userrec</a><li>classbase()
: <a class="el" href="classclassbase.html#classbase_28_29">classbase</a><li>Classes
@@ -29,12 +31,15 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig</a><li>client
: <a class="el" href="classInspSocket.html#client">InspSocket</a><li>Close()
: <a class="el" href="classInspSocket.html#Close_28_29">InspSocket</a><li>CloseSocket()
-: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmds_in
+: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmd_mode()
+: <a class="el" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a><li>cmds_in
: <a class="el" href="classconnection.html#cmds_5Fin">connection</a><li>cmds_out
: <a class="el" href="classconnection.html#cmds_5Fout">connection</a><li>command
-: <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t</a><li>CommonChannels()
+: <a class="el" href="classcommand__t.html#command">command_t</a><li>command_t()
+: <a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a><li>CommonChannels()
: <a class="el" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server</a><li>compare()
-: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>config_f
+: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>CompressModes()
+: <a class="el" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">ModeParser</a><li>config_f
: <a class="el" href="classServerConfig.html#config_5Ff">ServerConfig</a><li>ConfigReader()
: <a class="el" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">ConfigReader</a><li>ConfProcess()
: <a class="el" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ServerConfig</a><li>ConfValue()
@@ -48,7 +53,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classCullItem.html#CullItem_28userrec_20_2Au_2C_20std_3A_3Astring_20r_29">CullItem</a><li>CullList()
: <a class="el" href="classCullList.html#CullList_28_29">CullList</a><li>custom_modes
: <a class="el" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">chanrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x64.html b/docs/module-doc/functions_0x64.html
index 0b78affb0..005209a84 100644
--- a/docs/module-doc/functions_0x64.html
+++ b/docs/module-doc/functions_0x64.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -14,10 +14,16 @@ Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>data
: <a class="el" href="classEvent.html#data">Event</a>, <a class="el" href="classRequest.html#data">Request</a>, <a class="el" href="classHostItem.html#data_5BMAXBUF_5D">HostItem</a><li>debugging
-: <a class="el" href="classServerConfig.html#debugging">ServerConfig</a><li>DelELine()
+: <a class="el" href="classServerConfig.html#debugging">ServerConfig</a><li>Decrypt()
+: <a class="el" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>DecryptBlock()
+: <a class="el" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DEFAULT_BLOCK_SIZE
+: <a class="el" href="classAES.html#_40_31DEFAULT_5FBLOCK_5FSIZE">AES</a><li>DefDecryptBlock()
+: <a class="el" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefEncryptBlock()
+: <a class="el" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DelELine()
: <a class="el" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelFd()
: <a class="el" href="classSocketEngine.html#DelFd_28int_20fd_29">SocketEngine</a><li>DelGLine()
-: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelKLine()
+: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelIOHook()
+: <a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">ServerConfig</a><li>DelKLine()
: <a class="el" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelQLine()
: <a class="el" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server</a><li>DelSocket()
: <a class="el" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server</a><li>DelUser()
@@ -49,7 +55,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">ServerConfig</a><li>DumpErrors()
: <a class="el" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader</a><li>duration
: <a class="el" href="classXLine.html#duration">XLine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x65.html b/docs/module-doc/functions_0x65.html
index b13a3179c..0e48c9ad0 100644
--- a/docs/module-doc/functions_0x65.html
+++ b/docs/module-doc/functions_0x65.html
@@ -5,15 +5,18 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Email
-: <a class="el" href="classAdmin.html#Email">Admin</a><li>EngineHandle
+<li>ECB
+: <a class="el" href="classAES.html#_40_30ECB">AES</a><li>Email
+: <a class="el" href="classAdmin.html#Email">Admin</a><li>Encrypt()
+: <a class="el" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>EncryptBlock()
+: <a class="el" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>EngineHandle
: <a class="el" href="classSocketEngine.html#EngineHandle">SocketEngine</a><li>EnumConf()
: <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig</a><li>Enumerate()
: <a class="el" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader</a><li>EnumerateValues()
@@ -30,7 +33,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extensible</a><li>Extension_Items
: <a class="el" href="classExtensible.html#Extension_5FItems">Extensible</a><li>ExtMode()
: <a class="el" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x66.html b/docs/module-doc/functions_0x66.html
index 6943c877f..f29c77ed4 100644
--- a/docs/module-doc/functions_0x66.html
+++ b/docs/module-doc/functions_0x66.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -27,10 +27,11 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classVersion.html#Flags">Version</a><li>flags_needed
: <a class="el" href="classcommand__t.html#flags_5Fneeded">command_t</a><li>flood
: <a class="el" href="classuserrec.html#flood">userrec</a>, <a class="el" href="classConnectClass.html#flood">ConnectClass</a><li>FlushWriteBuf()
-: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>ForwardLookup()
+: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>FlushWriteBuffer()
+: <a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket</a><li>ForwardLookup()
: <a class="el" href="classDNS.html#ForwardLookup_28std_3A_3Astring_20host_29">DNS</a><li>fullname
: <a class="el" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x67.html b/docs/module-doc/functions_0x67.html
index acc6bf592..eb9b310a7 100644
--- a/docs/module-doc/functions_0x67.html
+++ b/docs/module-doc/functions_0x67.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -14,7 +14,8 @@ Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>Get()
: <a class="el" href="classBoolSet.html#Get_28int_20number_29">BoolSet</a><li>GetAdmin()
-: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBuffer()
+: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBlockSize()
+: <a class="el" href="classAES.html#GetBlockSize_28_29">AES</a><li>GetBuffer()
: <a class="el" href="classuserrec.html#GetBuffer_28_29">userrec</a><li>GetConfig()
: <a class="el" href="classServer.html#GetConfig_28_29">Server</a><li>GetData()
: <a class="el" href="classEvent.html#GetData_28_29">Event</a>, <a class="el" href="classRequest.html#GetData_28_29">Request</a><li>GetDest()
@@ -27,8 +28,10 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classDNS.html#GetFD_28_29">DNS</a><li>GetFullHost()
: <a class="el" href="classuserrec.html#GetFullHost_28_29">userrec</a><li>GetFullRealHost()
: <a class="el" href="classuserrec.html#GetFullRealHost_28_29">userrec</a><li>GetInviteList()
-: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIP()
-: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetLine()
+: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIOHook()
+: <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig</a><li>GetIP()
+: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetKeyLength()
+: <a class="el" href="classAES.html#GetKeyLength_28_29">AES</a><li>GetLine()
: <a class="el" href="classFileReader.html#GetLine_28int_20x_29">FileReader</a><li>GetModeParameter()
: <a class="el" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec</a><li>GetName()
: <a class="el" href="classSocketEngine.html#GetName_28_29">SocketEngine</a><li>GetNetworkName()
@@ -36,7 +39,8 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classCullItem.html#GetReason_28_29">CullItem</a><li>GetResult()
: <a class="el" href="classDNS.html#GetResult_28_29">DNS</a><li>GetResultIP()
: <a class="el" href="classDNS.html#GetResultIP_28_29">DNS</a><li>GetRevision()
-: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetServerDescription()
+: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetRounds()
+: <a class="el" href="classAES.html#GetRounds_28_29">AES</a><li>GetServerDescription()
: <a class="el" href="classServer.html#GetServerDescription_28_29">Server</a><li>GetServerName()
: <a class="el" href="classServer.html#GetServerName_28_29">Server</a><li>GetSource()
: <a class="el" href="classEvent.html#GetSource_28_29">Event</a>, <a class="el" href="classRequest.html#GetSource_28_29">Request</a><li>GetState()
@@ -47,8 +51,11 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server</a>, <a class="el" href="classchanrec.html#GetUsers_28_29">chanrec</a><li>GetVersion()
: <a class="el" href="classServer.html#GetVersion_28_29">Server</a>, <a class="el" href="classModule.html#GetVersion_28_29">Module</a><li>GetVersionString()
: <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd</a><li>GetWriteError()
-: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a><li>GiveHops()
+: <a class="el" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveOps()
+: <a class="el" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveVoice()
+: <a class="el" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x68.html b/docs/module-doc/functions_0x68.html
index 3250e4c58..863b6e1e4 100644
--- a/docs/module-doc/functions_0x68.html
+++ b/docs/module-doc/functions_0x68.html
@@ -5,22 +5,22 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handler_function
-: <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t</a><li>haspassed
+<li>Handle()
+: <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>, <a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">command_t</a><li>haspassed
: <a class="el" href="classconnection.html#haspassed">connection</a><li>HasPermission()
-: <a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec</a><li>HasResult()
+: <a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec</a><li>HasResult()
: <a class="el" href="classDNS.html#HasResult_28int_20fd_29">DNS</a><li>host
: <a class="el" href="classWhoWasUser.html#host_5B_31_36_30_5D">WhoWasUser</a>, <a class="el" href="classConnectClass.html#host_5BMAXBUF_5D">ConnectClass</a>, <a class="el" href="classInspSocket.html#host">InspSocket</a>, <a class="el" href="classconnection.html#host_5B_31_36_30_5D">connection</a><li>HostItem()
: <a class="el" href="classHostItem.html#HostItem_28_29">HostItem</a><li>hostmask
: <a class="el" href="classELine.html#hostmask_5B_32_30_30_5D">ELine</a>, <a class="el" href="classGLine.html#hostmask_5B_32_30_30_5D">GLine</a>, <a class="el" href="classKLine.html#hostmask_5B_32_30_30_5D">KLine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x69.html b/docs/module-doc/functions_0x69.html
index 00e894dc9..5647c4c11 100644
--- a/docs/module-doc/functions_0x69.html
+++ b/docs/module-doc/functions_0x69.html
@@ -5,15 +5,15 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>ibuf
-: <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket</a><li>id
+: <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket</a><li>id
: <a class="el" href="classEvent.html#id">Event</a><li>ident
: <a class="el" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec</a><li>idle_lastmsg
: <a class="el" href="classconnection.html#idle_5Flastmsg">connection</a><li>include_stack
@@ -23,19 +23,20 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classchanrec.html#internal_5Fuserlist">chanrec</a><li>Invert()
: <a class="el" href="classBoolSet.html#Invert_28int_20number_29">BoolSet</a><li>invites
: <a class="el" href="classuserrec.html#invites">userrec</a><li>InviteTo()
-: <a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec</a><li>IP
-: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ip
-: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>ipaddr
+: <a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IOHookModule
+: <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig</a><li>ip
+: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>IP
+: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ipaddr
: <a class="el" href="classZLine.html#ipaddr_5B_34_30_5D">ZLine</a><li>is_global
: <a class="el" href="classQLine.html#is_5Fglobal">QLine</a>, <a class="el" href="classZLine.html#is_5Fglobal">ZLine</a><li>IsCustomModeSet()
: <a class="el" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec</a><li>IsInvited()
-: <a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec</a><li>IsNick()
+: <a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsNick()
: <a class="el" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server</a><li>IsOnChannel()
: <a class="el" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>IsUlined()
: <a class="el" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server</a><li>IsValidMask()
: <a class="el" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server</a><li>IsValidModuleCommand()
: <a class="el" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6a.html b/docs/module-doc/functions_0x6a.html
index 9ab823918..2fd50b8bf 100644
--- a/docs/module-doc/functions_0x6a.html
+++ b/docs/module-doc/functions_0x6a.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -14,7 +14,7 @@ Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
<li>JoinUserToChannel()
: <a class="el" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6b.html b/docs/module-doc/functions_0x6b.html
index b31f235c5..0f93a0eb6 100644
--- a/docs/module-doc/functions_0x6b.html
+++ b/docs/module-doc/functions_0x6b.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -15,7 +15,7 @@ Here is a list of all class members with links to the classes they belong to:
<li>ke_list
: <a class="el" href="classSocketEngine.html#ke_5Flist_5B_36_35_35_33_35_5D">SocketEngine</a><li>key
: <a class="el" href="classchanrec.html#key_5B_33_32_5D">chanrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6c.html b/docs/module-doc/functions_0x6c.html
index f61606efc..2168c2141 100644
--- a/docs/module-doc/functions_0x6c.html
+++ b/docs/module-doc/functions_0x6c.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindexHL" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindexHL" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -26,7 +26,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classServerConfig.html#log_5Ffile">ServerConfig</a><li>LogLevel
: <a class="el" href="classServerConfig.html#LogLevel">ServerConfig</a><li>lt()
: <a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6d.html b/docs/module-doc/functions_0x6d.html
index 44a413882..6c662b1b8 100644
--- a/docs/module-doc/functions_0x6d.html
+++ b/docs/module-doc/functions_0x6d.html
@@ -5,34 +5,51 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Major
-: <a class="el" href="classVersion.html#Major">Version</a><li>MatchText()
-: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>MaxConn
+<li>m_bKeyInit
+: <a class="el" href="classAES.html#m_5FbKeyInit">AES</a><li>m_blockSize
+: <a class="el" href="classAES.html#m_5FblockSize">AES</a><li>m_chain
+: <a class="el" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_chain0
+: <a class="el" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_iROUNDS
+: <a class="el" href="classAES.html#m_5FiROUNDS">AES</a><li>m_Kd
+: <a class="el" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_Ke
+: <a class="el" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_keylength
+: <a class="el" href="classAES.html#m_5Fkeylength">AES</a><li>Major
+: <a class="el" href="classVersion.html#Major">Version</a><li>MakeKey()
+: <a class="el" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">AES</a><li>MakeLowerMap()
+: <a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">InspIRCd</a><li>MatchText()
+: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>MAX_BC
+: <a class="el" href="classAES.html#_40_32MAX_5FBC">AES</a><li>MAX_BLOCK_SIZE
+: <a class="el" href="classAES.html#_40_32MAX_5FBLOCK_5FSIZE">AES</a><li>MAX_KC
+: <a class="el" href="classAES.html#_40_32MAX_5FKC">AES</a><li>MAX_ROUNDS
+: <a class="el" href="classAES.html#_40_32MAX_5FROUNDS">AES</a><li>MaxConn
: <a class="el" href="classServerConfig.html#MaxConn">ServerConfig</a><li>MaxWhoResults
: <a class="el" href="classServerConfig.html#MaxWhoResults">ServerConfig</a><li>min_params
: <a class="el" href="classcommand__t.html#min_5Fparams">command_t</a><li>Minor
: <a class="el" href="classVersion.html#Minor">Version</a><li>mode
: <a class="el" href="classModeParameter.html#mode">ModeParameter</a><li>modechar
-: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>MODERR
+: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>ModeGrok
+: <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd</a><li>MODERR
: <a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">InspIRCd</a><li>modes
: <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec</a><li>ModPath
: <a class="el" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ServerConfig</a><li>Module()
: <a class="el" href="classModule.html#Module_28Server_20_2AMe_29">Module</a><li>module_names
: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>ModuleError()
: <a class="el" href="classInspIRCd.html#ModuleError_28_29">InspIRCd</a><li>ModuleFactory()
-: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>motd
-: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MOTD
-: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>MyExecutable
+: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>MOTD
+: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>motd
+: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>Mul()
+: <a class="el" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">AES</a><li>Mul4()
+: <a class="el" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">AES</a><li>MyExecutable
: <a class="el" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">ServerConfig</a><li>myfd
: <a class="el" href="classDNS.html#myfd">DNS</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6e.html b/docs/module-doc/functions_0x6e.html
index 397d656be..89d86504b 100644
--- a/docs/module-doc/functions_0x6e.html
+++ b/docs/module-doc/functions_0x6e.html
@@ -5,27 +5,27 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>n_matches
-: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>name
-: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>Name
-: <a class="el" href="classAdmin.html#Name">Admin</a><li>ne()
+: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>Name
+: <a class="el" href="classAdmin.html#Name">Admin</a><li>name
+: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>ne()
: <a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a><li>needsoper
: <a class="el" href="classExtMode.html#needsoper">ExtMode</a><li>NetBufferSize
: <a class="el" href="classServerConfig.html#NetBufferSize">ServerConfig</a><li>Network
: <a class="el" href="classServerConfig.html#Network_5BMAXBUF_5D">ServerConfig</a><li>next
-: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>nick
-: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>Nick
-: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nofork
+: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>Nick
+: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nick
+: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>nofork
: <a class="el" href="classServerConfig.html#nofork">ServerConfig</a><li>nping
: <a class="el" href="classconnection.html#nping">connection</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x6f.html b/docs/module-doc/functions_0x6f.html
index f012bb45a..db6082df5 100644
--- a/docs/module-doc/functions_0x6f.html
+++ b/docs/module-doc/functions_0x6f.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -101,7 +101,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classBoolSet.html#operator_3D_28BoolSet_20other_29">BoolSet</a><li>operator==()
: <a class="el" href="classBoolSet.html#operator_3D_3D_28BoolSet_20other_29">BoolSet</a><li>operator|()
: <a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">BoolSet</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x70.html b/docs/module-doc/functions_0x70.html
index 5d6613503..22b5ef20b 100644
--- a/docs/module-doc/functions_0x70.html
+++ b/docs/module-doc/functions_0x70.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -15,7 +15,8 @@ Here is a list of all class members with links to the classes they belong to:
<li>parameter
: <a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#params_5Fwhen_5Foff">ExtMode</a><li>params_when_on
-: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>PartUserFromChannel()
+: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>Parser
+: <a class="el" href="classInspIRCd.html#Parser">InspIRCd</a><li>PartUserFromChannel()
: <a class="el" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server</a><li>pass
: <a class="el" href="classConnectClass.html#pass_5BMAXBUF_5D">ConnectClass</a><li>password
: <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec</a><li>PID
@@ -25,11 +26,13 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>port
: <a class="el" href="classInspSocket.html#port">InspSocket</a>, <a class="el" href="classconnection.html#port">connection</a><li>ports
: <a class="el" href="classServerConfig.html#ports_5B_32_35_35_5D">ServerConfig</a><li>PrefixQuit
-: <a class="el" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">ServerConfig</a><li>ProtoSendMetaData()
+: <a class="el" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">ServerConfig</a><li>ProcessModes()
+: <a class="el" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ModeParser</a><li>ProcessModuleUmode()
+: <a class="el" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ModeParser</a><li>ProtoSendMetaData()
: <a class="el" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module</a><li>ProtoSendMode()
: <a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module</a><li>PseudoToUser()
: <a class="el" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x71.html b/docs/module-doc/functions_0x71.html
index 7b4365cb6..8e071e032 100644
--- a/docs/module-doc/functions_0x71.html
+++ b/docs/module-doc/functions_0x71.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -14,7 +14,7 @@ Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>QuitUser()
: <a class="el" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x72.html b/docs/module-doc/functions_0x72.html
index e89daa627..4b19d3f79 100644
--- a/docs/module-doc/functions_0x72.html
+++ b/docs/module-doc/functions_0x72.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -26,17 +26,18 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classconnection.html#registered">connection</a><li>registration_timeout
: <a class="el" href="classConnectClass.html#registration_5Ftimeout">ConnectClass</a><li>RehashServer()
: <a class="el" href="classServer.html#RehashServer_28_29">Server</a><li>RemoveInvite()
-: <a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec</a><li>Request()
+: <a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec</a><li>Request()
: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>reset_due
-: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>restartpass
+: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>ResetChain()
+: <a class="el" href="classAES.html#ResetChain_28_29">AES</a><li>restartpass
: <a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">ServerConfig</a><li>result
: <a class="el" href="classDNS.html#result">DNS</a><li>ReverseLookup()
: <a class="el" href="classDNS.html#ReverseLookup_28std_3A_3Astring_20ip_29">DNS</a><li>Revision
-: <a class="el" href="classVersion.html#Revision">Version</a><li>rules
-: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>RULES
-: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>Run()
+: <a class="el" href="classVersion.html#Revision">Version</a><li>RULES
+: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>rules
+: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>Run()
: <a class="el" href="classInspIRCd.html#Run_28_29">InspIRCd</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x73.html b/docs/module-doc/functions_0x73.html
index 12dbd6c49..154b57c31 100644
--- a/docs/module-doc/functions_0x73.html
+++ b/docs/module-doc/functions_0x73.html
@@ -5,14 +5,15 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>Send()
+<li>SE
+: <a class="el" href="classInspIRCd.html#SE">InspIRCd</a><li>Send()
: <a class="el" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Server</a>, <a class="el" href="classEvent.html#Send_28_29">Event</a>, <a class="el" href="classRequest.html#Send_28_29">Request</a>, <a class="el" href="classModuleMessage.html#Send_28_29_3D_30">ModuleMessage</a><li>SendChannel()
: <a class="el" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">Server</a><li>SendChannelServerNotice()
: <a class="el" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">Server</a><li>SendCommon()
@@ -29,7 +30,8 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#server">userrec</a>, <a class="el" href="classInspSocket.html#server">InspSocket</a><li>Server()
: <a class="el" href="classServer.html#Server_28_29">Server</a><li>ServerConfig()
: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>ServerDesc
-: <a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerConfig</a><li>ServerName
+: <a class="el" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerConfig</a><li>ServerMode()
+: <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser</a><li>ServerName
: <a class="el" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerConfig</a><li>serverstats()
: <a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a><li>Set()
: <a class="el" href="classBoolSet.html#Set_28int_20number_29">BoolSet</a><li>set_by
@@ -42,12 +44,32 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket</a><li>SetWriteError()
: <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec</a><li>Shrink()
: <a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Extensible</a><li>signon
-: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>SocketEngine()
+: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>sm_alog
+: <a class="el" href="classAES.html#sm_5Falog_5B_32_35_36_5D">AES</a><li>sm_chain0
+: <a class="el" href="classAES.html#sm_5Fchain_30">AES</a><li>sm_log
+: <a class="el" href="classAES.html#sm_5Flog_5B_32_35_36_5D">AES</a><li>sm_rcon
+: <a class="el" href="classAES.html#sm_5Frcon_5B_33_30_5D">AES</a><li>sm_S
+: <a class="el" href="classAES.html#sm_5FS_5B_32_35_36_5D">AES</a><li>sm_shifts
+: <a class="el" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">AES</a><li>sm_Si
+: <a class="el" href="classAES.html#sm_5FSi_5B_32_35_36_5D">AES</a><li>sm_T1
+: <a class="el" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">AES</a><li>sm_T2
+: <a class="el" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">AES</a><li>sm_T3
+: <a class="el" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">AES</a><li>sm_T4
+: <a class="el" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">AES</a><li>sm_T5
+: <a class="el" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">AES</a><li>sm_T6
+: <a class="el" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">AES</a><li>sm_T7
+: <a class="el" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">AES</a><li>sm_T8
+: <a class="el" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">AES</a><li>sm_U1
+: <a class="el" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">AES</a><li>sm_U2
+: <a class="el" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">AES</a><li>sm_U3
+: <a class="el" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">AES</a><li>sm_U4
+: <a class="el" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">AES</a><li>SocketEngine()
: <a class="el" href="classSocketEngine.html#SocketEngine_28_29">SocketEngine</a><li>SoftLimit
: <a class="el" href="classServerConfig.html#SoftLimit">ServerConfig</a><li>source
-: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t</a><li>startup_time
+: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source">command_t</a><li>startup_time
: <a class="el" href="classInspIRCd.html#startup_5Ftime">InspIRCd</a><li>state
-: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>statsAccept
+: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>stats
+: <a class="el" href="classInspIRCd.html#stats">InspIRCd</a><li>statsAccept
: <a class="el" href="classserverstats.html#statsAccept">serverstats</a><li>statsCollisions
: <a class="el" href="classserverstats.html#statsCollisions">serverstats</a><li>statsConnects
: <a class="el" href="classserverstats.html#statsConnects">serverstats</a><li>statsDns
@@ -58,7 +80,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classserverstats.html#statsRefused">serverstats</a><li>statsSent
: <a class="el" href="classserverstats.html#statsSent">serverstats</a><li>statsUnknown
: <a class="el" href="classserverstats.html#statsUnknown">serverstats</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x74.html b/docs/module-doc/functions_0x74.html
index 79d5d82a7..9a538ab9e 100644
--- a/docs/module-doc/functions_0x74.html
+++ b/docs/module-doc/functions_0x74.html
@@ -5,25 +5,30 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>t
-: <a class="el" href="classDNS.html#t">DNS</a><li>threshold
+: <a class="el" href="classDNS.html#t">DNS</a>, <a class="el" href="classAES.html#t_5BMAX_5FBC_5D">AES</a><li>TakeBan()
+: <a class="el" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeHops()
+: <a class="el" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeOps()
+: <a class="el" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeVoice()
+: <a class="el" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>threshold
: <a class="el" href="classuserrec.html#threshold">userrec</a>, <a class="el" href="classConnectClass.html#threshold">ConnectClass</a><li>Timeout()
: <a class="el" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket</a><li>timeout
: <a class="el" href="classuserrec.html#timeout">userrec</a>, <a class="el" href="classInspSocket.html#timeout">InspSocket</a><li>timeout_end
-: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>topic
+: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>tk
+: <a class="el" href="classAES.html#tk_5BMAX_5FKC_5D">AES</a><li>topic
: <a class="el" href="classchanrec.html#topic_5BMAXBUF_5D">chanrec</a><li>topicset
: <a class="el" href="classchanrec.html#topicset">chanrec</a><li>total_bytes
: <a class="el" href="classcommand__t.html#total_5Fbytes">command_t</a><li>ts
: <a class="el" href="classSocketEngine.html#ts">SocketEngine</a><li>type
: <a class="el" href="classConnectClass.html#type">ConnectClass</a>, <a class="el" href="classExtMode.html#type">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x75.html b/docs/module-doc/functions_0x75.html
index 2867f70ee..9a5e271b4 100644
--- a/docs/module-doc/functions_0x75.html
+++ b/docs/module-doc/functions_0x75.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -22,7 +22,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classCullItem.html#user">CullItem</a><li>userrec()
: <a class="el" href="classuserrec.html#userrec_28_29">userrec</a><li>UserToPseudo()
: <a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x76.html b/docs/module-doc/functions_0x76.html
index 2bb6274dc..4c63ec899 100644
--- a/docs/module-doc/functions_0x76.html
+++ b/docs/module-doc/functions_0x76.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -15,7 +15,7 @@ Here is a list of all class members with links to the classes they belong to:
<li>Verify()
: <a class="el" href="classConfigReader.html#Verify_28_29">ConfigReader</a><li>Version()
: <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x77.html b/docs/module-doc/functions_0x77.html
index 3a959fe84..3f205a5dc 100644
--- a/docs/module-doc/functions_0x77.html
+++ b/docs/module-doc/functions_0x77.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindex" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
@@ -16,7 +16,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">SocketEngine</a><li>Write()
: <a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket</a><li>WriteError
: <a class="el" href="classuserrec.html#WriteError">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_0x7e.html b/docs/module-doc/functions_0x7e.html
index 1845daa86..70858c9c3 100644
--- a/docs/module-doc/functions_0x7e.html
+++ b/docs/module-doc/functions_0x7e.html
@@ -5,16 +5,18 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindexHL" href="functions_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions.html#index_a">a</a> | <a class="qindex" href="functions_0x62.html#index_b">b</a> | <a class="qindex" href="functions_0x63.html#index_c">c</a> | <a class="qindex" href="functions_0x64.html#index_d">d</a> | <a class="qindex" href="functions_0x65.html#index_e">e</a> | <a class="qindex" href="functions_0x66.html#index_f">f</a> | <a class="qindex" href="functions_0x67.html#index_g">g</a> | <a class="qindex" href="functions_0x68.html#index_h">h</a> | <a class="qindex" href="functions_0x69.html#index_i">i</a> | <a class="qindex" href="functions_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_0x6b.html#index_k">k</a> | <a class="qindex" href="functions_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_0x70.html#index_p">p</a> | <a class="qindex" href="functions_0x71.html#index_q">q</a> | <a class="qindex" href="functions_0x72.html#index_r">r</a> | <a class="qindex" href="functions_0x73.html#index_s">s</a> | <a class="qindex" href="functions_0x74.html#index_t">t</a> | <a class="qindex" href="functions_0x75.html#index_u">u</a> | <a class="qindex" href="functions_0x76.html#index_v">v</a> | <a class="qindex" href="functions_0x77.html#index_w">w</a> | <a class="qindex" href="functions_0x78.html#index_x">x</a> | <a class="qindexHL" href="functions_0x7e.html#index_~">~</a></div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~chanrec()
+<li>~AES()
+: <a class="el" href="classAES.html#_7EAES_28_29">AES</a><li>~chanrec()
: <a class="el" href="classchanrec.html#_7Echanrec_28_29">chanrec</a><li>~classbase()
-: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~ConfigReader()
+: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~command_t()
+: <a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">command_t</a><li>~ConfigReader()
: <a class="el" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader</a><li>~DNS()
: <a class="el" href="classDNS.html#_7EDNS_28_29">DNS</a><li>~FileReader()
: <a class="el" href="classFileReader.html#_7EFileReader_28_29">FileReader</a><li>~HostItem()
@@ -27,7 +29,7 @@ Here is a list of all class members with links to the classes they belong to:
: <a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">SocketEngine</a><li>~ucrec()
: <a class="el" href="classucrec.html#_7Eucrec_28_29">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#_7Euserrec_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func.html b/docs/module-doc/functions_func.html
index f9c400a64..eac6ec6d8 100644
--- a/docs/module-doc/functions_func.html
+++ b/docs/module-doc/functions_func.html
@@ -5,21 +5,23 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindexHL" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindexHL" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AddBuffer()
+<li>AddBan()
+: <a class="el" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>AddBuffer()
: <a class="el" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec</a><li>AddCommand()
-: <a class="el" href="classServer.html#AddCommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">Server</a><li>AddELine()
+: <a class="el" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server</a><li>AddELine()
: <a class="el" href="classServer.html#AddELine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddExtendedListMode()
: <a class="el" href="classServer.html#AddExtendedListMode_28char_20modechar_29">Server</a><li>AddExtendedMode()
: <a class="el" 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</a><li>AddFd()
: <a class="el" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">SocketEngine</a><li>AddGLine()
-: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddItem()
+: <a class="el" href="classServer.html#AddGLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddIOHook()
+: <a class="el" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">ServerConfig</a><li>AddItem()
: <a class="el" href="classCullList.html#AddItem_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">CullList</a><li>AddKLine()
: <a class="el" href="classServer.html#AddKLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Server</a><li>AddQLine()
: <a class="el" href="classServer.html#AddQLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickname_29">Server</a><li>AddSocket()
@@ -27,9 +29,11 @@
: <a class="el" href="classchanrec.html#AddUser_28char_20_2Acastuser_29">chanrec</a><li>AddWriteBuf()
: <a class="el" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec</a><li>AddZLine()
: <a class="el" href="classServer.html#AddZLine_28long_20duration_2C_20std_3A_3Astring_20source_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipaddr_29">Server</a><li>Admin()
-: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>Apply()
+: <a class="el" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">Admin</a><li>AES()
+: <a class="el" href="classAES.html#AES_28_29">AES</a><li>AllowedUmode()
+: <a class="el" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">ModeParser</a><li>Apply()
: <a class="el" href="classCullList.html#Apply_28_29">CullList</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x62.html b/docs/module-doc/functions_func_0x62.html
index 4cc924223..516e7fa73 100644
--- a/docs/module-doc/functions_func_0x62.html
+++ b/docs/module-doc/functions_func_0x62.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindexHL" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindexHL" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -15,7 +15,7 @@
<li>BoolSet()
: <a class="el" href="classBoolSet.html#BoolSet_28char_20bitmask_29">BoolSet</a><li>BufferIsReady()
: <a class="el" href="classuserrec.html#BufferIsReady_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x63.html b/docs/module-doc/functions_func_0x63.html
index dafc2bb24..5c3e5327a 100644
--- a/docs/module-doc/functions_func_0x63.html
+++ b/docs/module-doc/functions_func_0x63.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindexHL" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -24,9 +24,12 @@
: <a class="el" href="classuserrec.html#ClearBuffer_28_29">userrec</a><li>ClearStack()
: <a class="el" href="classServerConfig.html#ClearStack_28_29">ServerConfig</a><li>Close()
: <a class="el" href="classInspSocket.html#Close_28_29">InspSocket</a><li>CloseSocket()
-: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>CommonChannels()
+: <a class="el" href="classuserrec.html#CloseSocket_28_29">userrec</a><li>cmd_mode()
+: <a class="el" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a><li>command_t()
+: <a class="el" href="classcommand__t.html#command_5Ft_28std_3A_3Astring_20cmd_2C_20char_20flags_2C_20int_20minpara_29">command_t</a><li>CommonChannels()
: <a class="el" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">Server</a><li>compare()
-: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>ConfigReader()
+: <a class="el" href="structirc_1_1irc__char__traits.html#compare_28const_20char_20_2Astr_31_2C_20const_20char_20_2Astr_32_2C_20size_5Ft_20n_29">irc::irc_char_traits</a><li>CompressModes()
+: <a class="el" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">ModeParser</a><li>ConfigReader()
: <a class="el" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">ConfigReader</a><li>ConfProcess()
: <a class="el" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ServerConfig</a><li>ConfValue()
: <a class="el" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ServerConfig</a><li>ConfValueEnum()
@@ -37,7 +40,7 @@
: <a class="el" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">ModuleFactory</a><li>CullItem()
: <a class="el" href="classCullItem.html#CullItem_28userrec_20_2Au_2C_20std_3A_3Astring_20r_29">CullItem</a><li>CullList()
: <a class="el" href="classCullList.html#CullList_28_29">CullList</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x64.html b/docs/module-doc/functions_func_0x64.html
index 354a939f7..4e43d8f04 100644
--- a/docs/module-doc/functions_func_0x64.html
+++ b/docs/module-doc/functions_func_0x64.html
@@ -5,17 +5,22 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindexHL" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DelELine()
+<li>Decrypt()
+: <a class="el" href="classAES.html#Decrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>DecryptBlock()
+: <a class="el" href="classAES.html#DecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefDecryptBlock()
+: <a class="el" href="classAES.html#DefDecryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DefEncryptBlock()
+: <a class="el" href="classAES.html#DefEncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>DelELine()
: <a class="el" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelFd()
: <a class="el" href="classSocketEngine.html#DelFd_28int_20fd_29">SocketEngine</a><li>DelGLine()
-: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelKLine()
+: <a class="el" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelIOHook()
+: <a class="el" href="classServerConfig.html#DelIOHook_28int_20port_29">ServerConfig</a><li>DelKLine()
: <a class="el" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">Server</a><li>DelQLine()
: <a class="el" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">Server</a><li>DelSocket()
: <a class="el" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">Server</a><li>DelUser()
@@ -37,7 +42,7 @@
: <a class="el" href="classDNS.html#dns_5Fntoa_34_5Fr_28const_20in_5Faddr_20_2Aconst_20ip_29">DNS</a><li>dns_ntoa4_s()
: <a class="el" href="classDNS.html#dns_5Fntoa_34_5Fs_28const_20in_5Faddr_20_2Aconst_20ip_2C_20char_20_2Aconst_20result_29">DNS</a><li>DumpErrors()
: <a class="el" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">ConfigReader</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x65.html b/docs/module-doc/functions_func_0x65.html
index 6d3510385..8dac8fe1f 100644
--- a/docs/module-doc/functions_func_0x65.html
+++ b/docs/module-doc/functions_func_0x65.html
@@ -5,14 +5,16 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindexHL" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>EnumConf()
+<li>Encrypt()
+: <a class="el" href="classAES.html#Encrypt_28char_20const_20_2Ain_2C_20char_20_2Aresult_2C_20size_5Ft_20n_2C_20int_20iMode_3DECB_29">AES</a><li>EncryptBlock()
+: <a class="el" href="classAES.html#EncryptBlock_28char_20const_20_2Ain_2C_20char_20_2Aresult_29">AES</a><li>EnumConf()
: <a class="el" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">ServerConfig</a><li>Enumerate()
: <a class="el" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">ConfigReader</a><li>EnumerateValues()
: <a class="el" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">ConfigReader</a><li>EnumValues()
@@ -24,7 +26,7 @@
: <a class="el" href="classFileReader.html#Exists_28_29">FileReader</a><li>Extend()
: <a class="el" href="classExtensible.html#Extend_28std_3A_3Astring_20key_2C_20char_20_2Ap_29">Extensible</a><li>ExtMode()
: <a class="el" href="classExtMode.html#ExtMode_28char_20mc_2C_20int_20ty_2C_20bool_20oper_2C_20int_20p_5Fon_2C_20int_20p_5Foff_29">ExtMode</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x66.html b/docs/module-doc/functions_func_0x66.html
index fc943467c..b8794425c 100644
--- a/docs/module-doc/functions_func_0x66.html
+++ b/docs/module-doc/functions_func_0x66.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindexHL" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -21,9 +21,10 @@
: <a class="el" href="classServer.html#FindDescriptor_28int_20socket_29">Server</a><li>FindModule()
: <a class="el" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">Server</a><li>FindNick()
: <a class="el" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">Server</a><li>FlushWriteBuf()
-: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>ForwardLookup()
+: <a class="el" href="classuserrec.html#FlushWriteBuf_28_29">userrec</a><li>FlushWriteBuffer()
+: <a class="el" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket</a><li>ForwardLookup()
: <a class="el" href="classDNS.html#ForwardLookup_28std_3A_3Astring_20host_29">DNS</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x67.html b/docs/module-doc/functions_func_0x67.html
index f9d8ee6a4..a72d3fa6d 100644
--- a/docs/module-doc/functions_func_0x67.html
+++ b/docs/module-doc/functions_func_0x67.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindexHL" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -14,7 +14,8 @@
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>Get()
: <a class="el" href="classBoolSet.html#Get_28int_20number_29">BoolSet</a><li>GetAdmin()
-: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBuffer()
+: <a class="el" href="classServer.html#GetAdmin_28_29">Server</a><li>GetBlockSize()
+: <a class="el" href="classAES.html#GetBlockSize_28_29">AES</a><li>GetBuffer()
: <a class="el" href="classuserrec.html#GetBuffer_28_29">userrec</a><li>GetConfig()
: <a class="el" href="classServer.html#GetConfig_28_29">Server</a><li>GetData()
: <a class="el" href="classEvent.html#GetData_28_29">Event</a>, <a class="el" href="classRequest.html#GetData_28_29">Request</a><li>GetDest()
@@ -27,8 +28,10 @@
: <a class="el" href="classDNS.html#GetFD_28_29">DNS</a><li>GetFullHost()
: <a class="el" href="classuserrec.html#GetFullHost_28_29">userrec</a><li>GetFullRealHost()
: <a class="el" href="classuserrec.html#GetFullRealHost_28_29">userrec</a><li>GetInviteList()
-: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIP()
-: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetLine()
+: <a class="el" href="classuserrec.html#GetInviteList_28_29">userrec</a><li>GetIOHook()
+: <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig</a><li>GetIP()
+: <a class="el" href="classInspSocket.html#GetIP_28_29">InspSocket</a><li>GetKeyLength()
+: <a class="el" href="classAES.html#GetKeyLength_28_29">AES</a><li>GetLine()
: <a class="el" href="classFileReader.html#GetLine_28int_20x_29">FileReader</a><li>GetModeParameter()
: <a class="el" href="classchanrec.html#GetModeParameter_28char_20mode_29">chanrec</a><li>GetName()
: <a class="el" href="classSocketEngine.html#GetName_28_29">SocketEngine</a><li>GetNetworkName()
@@ -36,7 +39,8 @@
: <a class="el" href="classCullItem.html#GetReason_28_29">CullItem</a><li>GetResult()
: <a class="el" href="classDNS.html#GetResult_28_29">DNS</a><li>GetResultIP()
: <a class="el" href="classDNS.html#GetResultIP_28_29">DNS</a><li>GetRevision()
-: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetServerDescription()
+: <a class="el" href="classInspIRCd.html#GetRevision_28_29">InspIRCd</a><li>GetRounds()
+: <a class="el" href="classAES.html#GetRounds_28_29">AES</a><li>GetServerDescription()
: <a class="el" href="classServer.html#GetServerDescription_28_29">Server</a><li>GetServerName()
: <a class="el" href="classServer.html#GetServerName_28_29">Server</a><li>GetSource()
: <a class="el" href="classEvent.html#GetSource_28_29">Event</a>, <a class="el" href="classRequest.html#GetSource_28_29">Request</a><li>GetState()
@@ -47,8 +51,11 @@
: <a class="el" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">Server</a>, <a class="el" href="classchanrec.html#GetUsers_28_29">chanrec</a><li>GetVersion()
: <a class="el" href="classServer.html#GetVersion_28_29">Server</a>, <a class="el" href="classModule.html#GetVersion_28_29">Module</a><li>GetVersionString()
: <a class="el" href="classInspIRCd.html#GetVersionString_28_29">InspIRCd</a><li>GetWriteError()
-: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+: <a class="el" href="classuserrec.html#GetWriteError_28_29">userrec</a><li>GiveHops()
+: <a class="el" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveOps()
+: <a class="el" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>GiveVoice()
+: <a class="el" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x68.html b/docs/module-doc/functions_func_0x68.html
index d1c262528..25a9c99e5 100644
--- a/docs/module-doc/functions_func_0x68.html
+++ b/docs/module-doc/functions_func_0x68.html
@@ -5,18 +5,19 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindexHL" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>HasPermission()
-: <a class="el" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec</a><li>HasResult()
+<li>Handle()
+: <a class="el" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">cmd_mode</a>, <a class="el" href="classcommand__t.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29_3D_30">command_t</a><li>HasPermission()
+: <a class="el" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec</a><li>HasResult()
: <a class="el" href="classDNS.html#HasResult_28int_20fd_29">DNS</a><li>HostItem()
: <a class="el" href="classHostItem.html#HostItem_28_29">HostItem</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x69.html b/docs/module-doc/functions_func_0x69.html
index 26bd00cd0..1428ced29 100644
--- a/docs/module-doc/functions_func_0x69.html
+++ b/docs/module-doc/functions_func_0x69.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindexHL" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -16,15 +16,15 @@
: <a class="el" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a><li>InspSocket()
: <a class="el" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">InspSocket</a><li>Invert()
: <a class="el" href="classBoolSet.html#Invert_28int_20number_29">BoolSet</a><li>InviteTo()
-: <a class="el" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec</a><li>IsCustomModeSet()
+: <a class="el" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsCustomModeSet()
: <a class="el" href="classchanrec.html#IsCustomModeSet_28char_20mode_29">chanrec</a><li>IsInvited()
-: <a class="el" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec</a><li>IsNick()
+: <a class="el" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec</a><li>IsNick()
: <a class="el" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">Server</a><li>IsOnChannel()
: <a class="el" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">Server</a><li>IsUlined()
: <a class="el" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">Server</a><li>IsValidMask()
: <a class="el" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">Server</a><li>IsValidModuleCommand()
: <a class="el" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x6a.html b/docs/module-doc/functions_func_0x6a.html
index a7819edbf..093c8e298 100644
--- a/docs/module-doc/functions_func_0x6a.html
+++ b/docs/module-doc/functions_func_0x6a.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindexHL" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -14,7 +14,7 @@
<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
<li>JoinUserToChannel()
: <a class="el" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x6c.html b/docs/module-doc/functions_func_0x6c.html
index 972a68d09..43e752c47 100644
--- a/docs/module-doc/functions_func_0x6c.html
+++ b/docs/module-doc/functions_func_0x6c.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindexHL" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -18,7 +18,7 @@
: <a class="el" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">InspIRCd</a><li>Log()
: <a class="el" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Server</a><li>lt()
: <a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x6d.html b/docs/module-doc/functions_func_0x6d.html
index 423e52154..43f8eb9f0 100644
--- a/docs/module-doc/functions_func_0x6d.html
+++ b/docs/module-doc/functions_func_0x6d.html
@@ -5,19 +5,23 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindexHL" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>MatchText()
+<li>MakeKey()
+: <a class="el" href="classAES.html#MakeKey_28char_20const_20_2Akey_2C_20char_20const_20_2Achain_2C_20int_20keylength_3DDEFAULT_5FBLOCK_5FSIZE_2C_20int_20blockSize_3DDEFAULT_5FBLOCK_5FSIZE_29">AES</a><li>MakeLowerMap()
+: <a class="el" href="classInspIRCd.html#MakeLowerMap_28_29">InspIRCd</a><li>MatchText()
: <a class="el" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">Server</a><li>Module()
: <a class="el" href="classModule.html#Module_28Server_20_2AMe_29">Module</a><li>ModuleError()
: <a class="el" href="classInspIRCd.html#ModuleError_28_29">InspIRCd</a><li>ModuleFactory()
-: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+: <a class="el" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a><li>Mul()
+: <a class="el" href="classAES.html#Mul_28int_20a_2C_20int_20b_29">AES</a><li>Mul4()
+: <a class="el" href="classAES.html#Mul_34_28int_20a_2C_20char_20b_5B_5D_29">AES</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x6e.html b/docs/module-doc/functions_func_0x6e.html
index 976019c1b..d99d92872 100644
--- a/docs/module-doc/functions_func_0x6e.html
+++ b/docs/module-doc/functions_func_0x6e.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindexHL" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -14,7 +14,7 @@
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>ne()
: <a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">irc::irc_char_traits</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x6f.html b/docs/module-doc/functions_func_0x6f.html
index 4881460f4..d18bcfc48 100644
--- a/docs/module-doc/functions_func_0x6f.html
+++ b/docs/module-doc/functions_func_0x6f.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindexHL" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -100,7 +100,7 @@
: <a class="el" href="classBoolSet.html#operator_3D_28BoolSet_20other_29">BoolSet</a><li>operator==()
: <a class="el" href="classBoolSet.html#operator_3D_3D_28BoolSet_20other_29">BoolSet</a><li>operator|()
: <a class="el" href="classBoolSet.html#operator_7C_28BoolSet_20other_29">BoolSet</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x70.html b/docs/module-doc/functions_func_0x70.html
index f641d4978..695993316 100644
--- a/docs/module-doc/functions_func_0x70.html
+++ b/docs/module-doc/functions_func_0x70.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindexHL" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -14,11 +14,13 @@
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>PartUserFromChannel()
: <a class="el" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">Server</a><li>Poll()
-: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>ProtoSendMetaData()
+: <a class="el" href="classInspSocket.html#Poll_28_29">InspSocket</a><li>ProcessModes()
+: <a class="el" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ModeParser</a><li>ProcessModuleUmode()
+: <a class="el" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ModeParser</a><li>ProtoSendMetaData()
: <a class="el" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module</a><li>ProtoSendMode()
: <a class="el" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module</a><li>PseudoToUser()
: <a class="el" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x71.html b/docs/module-doc/functions_func_0x71.html
index 611969743..11ea7aa89 100644
--- a/docs/module-doc/functions_func_0x71.html
+++ b/docs/module-doc/functions_func_0x71.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindexHL" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -14,7 +14,7 @@
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>QuitUser()
: <a class="el" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x72.html b/docs/module-doc/functions_func_0x72.html
index 2ba0aa884..bcb7d49bb 100644
--- a/docs/module-doc/functions_func_0x72.html
+++ b/docs/module-doc/functions_func_0x72.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindexHL" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -20,11 +20,12 @@
: <a class="el" href="classConfigReader.html#ReadInteger_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_2C_20bool_20needs_5Funsigned_29">ConfigReader</a><li>ReadValue()
: <a class="el" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">ConfigReader</a><li>RehashServer()
: <a class="el" href="classServer.html#RehashServer_28_29">Server</a><li>RemoveInvite()
-: <a class="el" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec</a><li>Request()
-: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>ReverseLookup()
+: <a class="el" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec</a><li>Request()
+: <a class="el" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">Request</a><li>ResetChain()
+: <a class="el" href="classAES.html#ResetChain_28_29">AES</a><li>ReverseLookup()
: <a class="el" href="classDNS.html#ReverseLookup_28std_3A_3Astring_20ip_29">DNS</a><li>Run()
: <a class="el" href="classInspIRCd.html#Run_28_29">InspIRCd</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x73.html b/docs/module-doc/functions_func_0x73.html
index 09cac519e..c3a329511 100644
--- a/docs/module-doc/functions_func_0x73.html
+++ b/docs/module-doc/functions_func_0x73.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindexHL" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -25,7 +25,8 @@
: <a class="el" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">Server</a><li>SendWallops()
: <a class="el" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">Server</a><li>Server()
: <a class="el" href="classServer.html#Server_28_29">Server</a><li>ServerConfig()
-: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>serverstats()
+: <a class="el" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a><li>ServerMode()
+: <a class="el" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ModeParser</a><li>serverstats()
: <a class="el" href="classserverstats.html#serverstats_28_29">serverstats</a><li>Set()
: <a class="el" href="classBoolSet.html#Set_28int_20number_29">BoolSet</a><li>SetCustomMode()
: <a class="el" href="classchanrec.html#SetCustomMode_28char_20mode_2C_20bool_20mode_5Fon_29">chanrec</a><li>SetCustomModeParam()
@@ -35,7 +36,7 @@
: <a class="el" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec</a><li>Shrink()
: <a class="el" href="classExtensible.html#Shrink_28std_3A_3Astring_20key_29">Extensible</a><li>SocketEngine()
: <a class="el" href="classSocketEngine.html#SocketEngine_28_29">SocketEngine</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x74.html b/docs/module-doc/functions_func_0x74.html
index 141a71d81..1efce4189 100644
--- a/docs/module-doc/functions_func_0x74.html
+++ b/docs/module-doc/functions_func_0x74.html
@@ -5,16 +5,20 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindexHL" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Timeout()
+<li>TakeBan()
+: <a class="el" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeHops()
+: <a class="el" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeOps()
+: <a class="el" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>TakeVoice()
+: <a class="el" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">ModeParser</a><li>Timeout()
: <a class="el" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x75.html b/docs/module-doc/functions_func_0x75.html
index 20c0bba3c..7725007ab 100644
--- a/docs/module-doc/functions_func_0x75.html
+++ b/docs/module-doc/functions_func_0x75.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindexHL" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -18,7 +18,7 @@
: <a class="el" href="classBoolSet.html#Unset_28int_20number_29">BoolSet</a><li>userrec()
: <a class="el" href="classuserrec.html#userrec_28_29">userrec</a><li>UserToPseudo()
: <a class="el" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Server</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x76.html b/docs/module-doc/functions_func_0x76.html
index 4095d1e0a..30db7c9a9 100644
--- a/docs/module-doc/functions_func_0x76.html
+++ b/docs/module-doc/functions_func_0x76.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindexHL" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -15,7 +15,7 @@
<li>Verify()
: <a class="el" href="classConfigReader.html#Verify_28_29">ConfigReader</a><li>Version()
: <a class="el" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">Version</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x77.html b/docs/module-doc/functions_func_0x77.html
index 8b01a4dd6..b0713720a 100644
--- a/docs/module-doc/functions_func_0x77.html
+++ b/docs/module-doc/functions_func_0x77.html
@@ -5,8 +5,8 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindexHL" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindex" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
@@ -15,7 +15,7 @@
<li>Wait()
: <a class="el" href="classSocketEngine.html#Wait_28std_3A_3Avector_3C_20int_20_3E_20_26fdlist_29">SocketEngine</a><li>Write()
: <a class="el" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_func_0x7e.html b/docs/module-doc/functions_func_0x7e.html
index 69bd5df59..ba0048e08 100644
--- a/docs/module-doc/functions_func_0x7e.html
+++ b/docs/module-doc/functions_func_0x7e.html
@@ -5,16 +5,18 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindexHL" href="functions_func_0x7e.html#index_~">~</a></div>
+<div class="qindex"> | <a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
+<div class="qindex"><a class="qindex" href="functions_func.html#index_a">a</a> | <a class="qindex" href="functions_func_0x62.html#index_b">b</a> | <a class="qindex" href="functions_func_0x63.html#index_c">c</a> | <a class="qindex" href="functions_func_0x64.html#index_d">d</a> | <a class="qindex" href="functions_func_0x65.html#index_e">e</a> | <a class="qindex" href="functions_func_0x66.html#index_f">f</a> | <a class="qindex" href="functions_func_0x67.html#index_g">g</a> | <a class="qindex" href="functions_func_0x68.html#index_h">h</a> | <a class="qindex" href="functions_func_0x69.html#index_i">i</a> | <a class="qindex" href="functions_func_0x6a.html#index_j">j</a> | <a class="qindex" href="functions_func_0x6c.html#index_l">l</a> | <a class="qindex" href="functions_func_0x6d.html#index_m">m</a> | <a class="qindex" href="functions_func_0x6e.html#index_n">n</a> | <a class="qindex" href="functions_func_0x6f.html#index_o">o</a> | <a class="qindex" href="functions_func_0x70.html#index_p">p</a> | <a class="qindex" href="functions_func_0x71.html#index_q">q</a> | <a class="qindex" href="functions_func_0x72.html#index_r">r</a> | <a class="qindex" href="functions_func_0x73.html#index_s">s</a> | <a class="qindex" href="functions_func_0x74.html#index_t">t</a> | <a class="qindex" href="functions_func_0x75.html#index_u">u</a> | <a class="qindex" href="functions_func_0x76.html#index_v">v</a> | <a class="qindex" href="functions_func_0x77.html#index_w">w</a> | <a class="qindex" href="functions_func_0x78.html#index_x">x</a> | <a class="qindexHL" href="functions_func_0x7e.html#index_~">~</a></div>
<p>
<p>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~chanrec()
+<li>~AES()
+: <a class="el" href="classAES.html#_7EAES_28_29">AES</a><li>~chanrec()
: <a class="el" href="classchanrec.html#_7Echanrec_28_29">chanrec</a><li>~classbase()
-: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~ConfigReader()
+: <a class="el" href="classclassbase.html#_7Eclassbase_28_29">classbase</a><li>~command_t()
+: <a class="el" href="classcommand__t.html#_7Ecommand_5Ft_28_29">command_t</a><li>~ConfigReader()
: <a class="el" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader</a><li>~DNS()
: <a class="el" href="classDNS.html#_7EDNS_28_29">DNS</a><li>~FileReader()
: <a class="el" href="classFileReader.html#_7EFileReader_28_29">FileReader</a><li>~HostItem()
@@ -27,7 +29,7 @@
: <a class="el" href="classSocketEngine.html#_7ESocketEngine_28_29">SocketEngine</a><li>~ucrec()
: <a class="el" href="classucrec.html#_7Eucrec_28_29">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#_7Euserrec_28_29">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/functions_vars.html b/docs/module-doc/functions_vars.html
index c4ef6f30a..c01ba521b 100644
--- a/docs/module-doc/functions_vars.html
+++ b/docs/module-doc/functions_vars.html
@@ -5,14 +5,15 @@
</head><body>
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_eval.html">Enumerator</a></div>
<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_w">w</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>addr
+<li>a
+: <a class="el" href="classAES.html#a_5BMAX_5FBC_5D">AES</a><li>addr
: <a class="el" href="classInspSocket.html#addr">InspSocket</a><li>addrs
: <a class="el" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">ServerConfig</a><li>addy
: <a class="el" href="classInspSocket.html#addy">InspSocket</a><li>AdminEmail
@@ -27,20 +28,22 @@
: <a class="el" href="classchanrec.html#bans">chanrec</a><li>binarymodes
: <a class="el" href="classchanrec.html#binarymodes">chanrec</a><li>binip
: <a class="el" href="classDNS.html#binip">DNS</a><li>bits
-: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>Build
+: <a class="el" href="classBoolSet.html#bits">BoolSet</a><li>BoundPortCount
+: <a class="el" href="classserverstats.html#BoundPortCount">serverstats</a><li>Buffer
+: <a class="el" href="classInspSocket.html#Buffer">InspSocket</a><li>Build
: <a class="el" href="classVersion.html#Build">Version</a><li>bytes_in
: <a class="el" href="classconnection.html#bytes_5Fin">connection</a><li>bytes_out
: <a class="el" href="classconnection.html#bytes_5Fout">connection</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>cache
: <a class="el" href="classConfigReader.html#cache">ConfigReader</a><li>channel
-: <a class="el" href="classInvited.html#channel_5BCHANMAX_5D">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chans
+: <a class="el" href="classInvited.html#channel">Invited</a>, <a class="el" href="classucrec.html#channel">ucrec</a>, <a class="el" href="classModeParameter.html#channel_5BCHANMAX_5D">ModeParameter</a><li>chans
: <a class="el" href="classuserrec.html#chans">userrec</a><li>Classes
: <a class="el" href="classServerConfig.html#Classes">ServerConfig</a><li>client
: <a class="el" href="classInspSocket.html#client">InspSocket</a><li>cmds_in
: <a class="el" href="classconnection.html#cmds_5Fin">connection</a><li>cmds_out
: <a class="el" href="classconnection.html#cmds_5Fout">connection</a><li>command
-: <a class="el" href="classcommand__t.html#command_5BMAXBUF_5D">command_t</a><li>config_f
+: <a class="el" href="classcommand__t.html#command">command_t</a><li>config_f
: <a class="el" href="classServerConfig.html#config_5Ff">ServerConfig</a><li>created
: <a class="el" href="classchanrec.html#created">chanrec</a><li>custom_modes
: <a class="el" href="classchanrec.html#custom_5Fmodes_5BMAXMODES_5D">chanrec</a></ul>
@@ -76,22 +79,22 @@
: <a class="el" href="classuserrec.html#flood">userrec</a>, <a class="el" href="classConnectClass.html#flood">ConnectClass</a><li>fullname
: <a class="el" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">userrec</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handler_function
-: <a class="el" href="classcommand__t.html#handler_5Ffunction">command_t</a><li>haspassed
+<li>haspassed
: <a class="el" href="classconnection.html#haspassed">connection</a><li>host
: <a class="el" href="classWhoWasUser.html#host_5B_31_36_30_5D">WhoWasUser</a>, <a class="el" href="classConnectClass.html#host_5BMAXBUF_5D">ConnectClass</a>, <a class="el" href="classInspSocket.html#host">InspSocket</a>, <a class="el" href="classconnection.html#host_5B_31_36_30_5D">connection</a><li>hostmask
: <a class="el" href="classELine.html#hostmask_5B_32_30_30_5D">ELine</a>, <a class="el" href="classGLine.html#hostmask_5B_32_30_30_5D">GLine</a>, <a class="el" href="classKLine.html#hostmask_5B_32_30_30_5D">KLine</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>ibuf
-: <a class="el" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">InspSocket</a><li>id
+: <a class="el" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">InspSocket</a><li>id
: <a class="el" href="classEvent.html#id">Event</a><li>ident
: <a class="el" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">userrec</a><li>idle_lastmsg
: <a class="el" href="classconnection.html#idle_5Flastmsg">connection</a><li>include_stack
: <a class="el" href="classServerConfig.html#include_5Fstack">ServerConfig</a><li>internal_userlist
: <a class="el" href="classchanrec.html#internal_5Fuserlist">chanrec</a><li>invites
-: <a class="el" href="classuserrec.html#invites">userrec</a><li>IP
-: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ip
-: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>ipaddr
+: <a class="el" href="classuserrec.html#invites">userrec</a><li>IOHookModule
+: <a class="el" href="classServerConfig.html#IOHookModule">ServerConfig</a><li>ip
+: <a class="el" href="structdns__ip4list.html#ip">dns_ip4list</a>, <a class="el" href="classconnection.html#ip_5B_31_36_5D">connection</a><li>IP
+: <a class="el" href="classInspSocket.html#IP">InspSocket</a><li>ipaddr
: <a class="el" href="classZLine.html#ipaddr_5B_34_30_5D">ZLine</a><li>is_global
: <a class="el" href="classQLine.html#is_5Fglobal">QLine</a>, <a class="el" href="classZLine.html#is_5Fglobal">ZLine</a></ul>
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
@@ -109,33 +112,42 @@
: <a class="el" href="classServerConfig.html#log_5Ffile">ServerConfig</a><li>LogLevel
: <a class="el" href="classServerConfig.html#LogLevel">ServerConfig</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Major
+<li>m_bKeyInit
+: <a class="el" href="classAES.html#m_5FbKeyInit">AES</a><li>m_blockSize
+: <a class="el" href="classAES.html#m_5FblockSize">AES</a><li>m_chain
+: <a class="el" href="classAES.html#m_5Fchain_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_chain0
+: <a class="el" href="classAES.html#m_5Fchain_30_5BMAX_5FBLOCK_5FSIZE_5D">AES</a><li>m_iROUNDS
+: <a class="el" href="classAES.html#m_5FiROUNDS">AES</a><li>m_Kd
+: <a class="el" href="classAES.html#m_5FKd_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_Ke
+: <a class="el" href="classAES.html#m_5FKe_5BMAX_5FROUNDS_2B_31_5D_5BMAX_5FBC_5D">AES</a><li>m_keylength
+: <a class="el" href="classAES.html#m_5Fkeylength">AES</a><li>Major
: <a class="el" href="classVersion.html#Major">Version</a><li>MaxConn
: <a class="el" href="classServerConfig.html#MaxConn">ServerConfig</a><li>MaxWhoResults
: <a class="el" href="classServerConfig.html#MaxWhoResults">ServerConfig</a><li>min_params
: <a class="el" href="classcommand__t.html#min_5Fparams">command_t</a><li>Minor
: <a class="el" href="classVersion.html#Minor">Version</a><li>mode
: <a class="el" href="classModeParameter.html#mode">ModeParameter</a><li>modechar
-: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>MODERR
+: <a class="el" href="classExtMode.html#modechar">ExtMode</a><li>ModeGrok
+: <a class="el" href="classInspIRCd.html#ModeGrok">InspIRCd</a><li>MODERR
: <a class="el" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">InspIRCd</a><li>modes
: <a class="el" href="classuserrec.html#modes_5B_35_34_5D">userrec</a><li>ModPath
: <a class="el" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ServerConfig</a><li>module_names
-: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>motd
-: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MOTD
-: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>MyExecutable
+: <a class="el" href="classServerConfig.html#module_5Fnames">ServerConfig</a><li>MOTD
+: <a class="el" href="classServerConfig.html#MOTD">ServerConfig</a><li>motd
+: <a class="el" href="classServerConfig.html#motd_5BMAXBUF_5D">ServerConfig</a><li>MyExecutable
: <a class="el" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">ServerConfig</a><li>myfd
: <a class="el" href="classDNS.html#myfd">DNS</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>n_matches
-: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>name
-: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>Name
-: <a class="el" href="classAdmin.html#Name">Admin</a><li>needsoper
+: <a class="el" href="classXLine.html#n_5Fmatches">XLine</a><li>Name
+: <a class="el" href="classAdmin.html#Name">Admin</a><li>name
+: <a class="el" href="classchanrec.html#name_5BCHANMAX_5D">chanrec</a><li>needsoper
: <a class="el" href="classExtMode.html#needsoper">ExtMode</a><li>NetBufferSize
: <a class="el" href="classServerConfig.html#NetBufferSize">ServerConfig</a><li>Network
: <a class="el" href="classServerConfig.html#Network_5BMAXBUF_5D">ServerConfig</a><li>next
-: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>nick
-: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>Nick
-: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nofork
+: <a class="el" href="structdns__ip4list.html#next">dns_ip4list</a><li>Nick
+: <a class="el" href="classAdmin.html#Nick">Admin</a><li>nick
+: <a class="el" href="classQLine.html#nick_5B_36_34_5D">QLine</a>, <a class="el" href="classWhoWasUser.html#nick_5BNICKMAX_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#nick_5BNICKMAX_5D">userrec</a><li>nofork
: <a class="el" href="classServerConfig.html#nofork">ServerConfig</a><li>nping
: <a class="el" href="classconnection.html#nping">connection</a></ul>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
@@ -145,7 +157,8 @@
<li>parameter
: <a class="el" href="classModeParameter.html#parameter_5BMAXBUF_5D">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#params_5Fwhen_5Foff">ExtMode</a><li>params_when_on
-: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>pass
+: <a class="el" href="classExtMode.html#params_5Fwhen_5Fon">ExtMode</a><li>Parser
+: <a class="el" href="classInspIRCd.html#Parser">InspIRCd</a><li>pass
: <a class="el" href="classConnectClass.html#pass_5BMAXBUF_5D">ConnectClass</a><li>password
: <a class="el" href="classuserrec.html#password_5BMAXBUF_5D">userrec</a><li>PID
: <a class="el" href="classServerConfig.html#PID_5B_31_30_32_34_5D">ServerConfig</a><li>pingmax
@@ -165,11 +178,12 @@
: <a class="el" href="classuserrec.html#reset_5Fdue">userrec</a><li>restartpass
: <a class="el" href="classServerConfig.html#restartpass_5BMAXBUF_5D">ServerConfig</a><li>result
: <a class="el" href="classDNS.html#result">DNS</a><li>Revision
-: <a class="el" href="classVersion.html#Revision">Version</a><li>rules
-: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a><li>RULES
-: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a></ul>
+: <a class="el" href="classVersion.html#Revision">Version</a><li>RULES
+: <a class="el" href="classServerConfig.html#RULES">ServerConfig</a><li>rules
+: <a class="el" href="classServerConfig.html#rules_5BMAXBUF_5D">ServerConfig</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>sendq
+<li>SE
+: <a class="el" href="classInspIRCd.html#SE">InspIRCd</a><li>sendq
: <a class="el" href="classuserrec.html#sendq">userrec</a><li>sendqmax
: <a class="el" href="classuserrec.html#sendqmax">userrec</a>, <a class="el" href="classConnectClass.html#sendqmax">ConnectClass</a><li>server
: <a class="el" href="classWhoWasUser.html#server_5B_32_35_36_5D">WhoWasUser</a>, <a class="el" href="classuserrec.html#server">userrec</a>, <a class="el" href="classInspSocket.html#server">InspSocket</a><li>ServerDesc
@@ -178,11 +192,31 @@
: <a class="el" href="classHostItem.html#set_5Fby_5BNICKMAX_5D">HostItem</a><li>set_time
: <a class="el" href="classXLine.html#set_5Ftime">XLine</a>, <a class="el" href="classHostItem.html#set_5Ftime">HostItem</a><li>setby
: <a class="el" href="classchanrec.html#setby_5BNICKMAX_5D">chanrec</a><li>signon
-: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>SoftLimit
+: <a class="el" href="classWhoWasUser.html#signon">WhoWasUser</a>, <a class="el" href="classconnection.html#signon">connection</a><li>sm_alog
+: <a class="el" href="classAES.html#sm_5Falog_5B_32_35_36_5D">AES</a><li>sm_chain0
+: <a class="el" href="classAES.html#sm_5Fchain_30">AES</a><li>sm_log
+: <a class="el" href="classAES.html#sm_5Flog_5B_32_35_36_5D">AES</a><li>sm_rcon
+: <a class="el" href="classAES.html#sm_5Frcon_5B_33_30_5D">AES</a><li>sm_S
+: <a class="el" href="classAES.html#sm_5FS_5B_32_35_36_5D">AES</a><li>sm_shifts
+: <a class="el" href="classAES.html#sm_5Fshifts_5B_33_5D_5B_34_5D_5B_32_5D">AES</a><li>sm_Si
+: <a class="el" href="classAES.html#sm_5FSi_5B_32_35_36_5D">AES</a><li>sm_T1
+: <a class="el" href="classAES.html#sm_5FT_31_5B_32_35_36_5D">AES</a><li>sm_T2
+: <a class="el" href="classAES.html#sm_5FT_32_5B_32_35_36_5D">AES</a><li>sm_T3
+: <a class="el" href="classAES.html#sm_5FT_33_5B_32_35_36_5D">AES</a><li>sm_T4
+: <a class="el" href="classAES.html#sm_5FT_34_5B_32_35_36_5D">AES</a><li>sm_T5
+: <a class="el" href="classAES.html#sm_5FT_35_5B_32_35_36_5D">AES</a><li>sm_T6
+: <a class="el" href="classAES.html#sm_5FT_36_5B_32_35_36_5D">AES</a><li>sm_T7
+: <a class="el" href="classAES.html#sm_5FT_37_5B_32_35_36_5D">AES</a><li>sm_T8
+: <a class="el" href="classAES.html#sm_5FT_38_5B_32_35_36_5D">AES</a><li>sm_U1
+: <a class="el" href="classAES.html#sm_5FU_31_5B_32_35_36_5D">AES</a><li>sm_U2
+: <a class="el" href="classAES.html#sm_5FU_32_5B_32_35_36_5D">AES</a><li>sm_U3
+: <a class="el" href="classAES.html#sm_5FU_33_5B_32_35_36_5D">AES</a><li>sm_U4
+: <a class="el" href="classAES.html#sm_5FU_34_5B_32_35_36_5D">AES</a><li>SoftLimit
: <a class="el" href="classServerConfig.html#SoftLimit">ServerConfig</a><li>source
-: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source_5BMAXBUF_5D">command_t</a><li>startup_time
+: <a class="el" href="classXLine.html#source_5B_32_35_36_5D">XLine</a>, <a class="el" href="classEvent.html#source">Event</a>, <a class="el" href="classRequest.html#source">Request</a>, <a class="el" href="classcommand__t.html#source">command_t</a><li>startup_time
: <a class="el" href="classInspIRCd.html#startup_5Ftime">InspIRCd</a><li>state
-: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>statsAccept
+: <a class="el" href="classInspSocket.html#state">InspSocket</a><li>stats
+: <a class="el" href="classInspIRCd.html#stats">InspIRCd</a><li>statsAccept
: <a class="el" href="classserverstats.html#statsAccept">serverstats</a><li>statsCollisions
: <a class="el" href="classserverstats.html#statsCollisions">serverstats</a><li>statsConnects
: <a class="el" href="classserverstats.html#statsConnects">serverstats</a><li>statsDns
@@ -195,10 +229,11 @@
: <a class="el" href="classserverstats.html#statsUnknown">serverstats</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>t
-: <a class="el" href="classDNS.html#t">DNS</a><li>threshold
+: <a class="el" href="classDNS.html#t">DNS</a>, <a class="el" href="classAES.html#t_5BMAX_5FBC_5D">AES</a><li>threshold
: <a class="el" href="classuserrec.html#threshold">userrec</a>, <a class="el" href="classConnectClass.html#threshold">ConnectClass</a><li>timeout
: <a class="el" href="classuserrec.html#timeout">userrec</a>, <a class="el" href="classInspSocket.html#timeout">InspSocket</a><li>timeout_end
-: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>topic
+: <a class="el" href="classInspSocket.html#timeout_5Fend">InspSocket</a><li>tk
+: <a class="el" href="classAES.html#tk_5BMAX_5FKC_5D">AES</a><li>topic
: <a class="el" href="classchanrec.html#topic_5BMAXBUF_5D">chanrec</a><li>topicset
: <a class="el" href="classchanrec.html#topicset">chanrec</a><li>total_bytes
: <a class="el" href="classcommand__t.html#total_5Fbytes">command_t</a><li>ts
@@ -213,7 +248,7 @@
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>WriteError
: <a class="el" href="classuserrec.html#WriteError">userrec</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals.html b/docs/module-doc/globals.html
index 9625909b5..33bf34fbf 100644
--- a/docs/module-doc/globals.html
+++ b/docs/module-doc/globals.html
@@ -24,26 +24,26 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="modules_8h.html#AC_5FVOICE">modules.h</a><li>ACR_ALLOW
: <a class="el" href="modules_8h.html#ACR_5FALLOW">modules.h</a><li>ACR_DEFAULT
: <a class="el" href="modules_8h.html#ACR_5FDEFAULT">modules.h</a><li>ACR_DENY
-: <a class="el" href="modules_8h.html#ACR_5FDENY">modules.h</a><li>add_ban()
-: <a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>add_channel()
+: <a class="el" href="modules_8h.html#ACR_5FDENY">modules.h</a><li>add_channel()
: <a class="el" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.h</a>, <a class="el" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.cpp</a><li>add_eline()
: <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_gline()
: <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_kline()
: <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_qline()
: <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">xline.h</a><li>add_zline()
-: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddOper()
-: <a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">inspircd.h</a><li>address_cache
+: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddClient()
+: <a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.h</a>, <a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.cpp</a><li>AddOper()
+: <a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">users.cpp</a><li>address_cache
: <a class="el" href="typedefs_8h.html#address_5Fcache">typedefs.h</a><li>AddServerName()
: <a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">inspircd.h</a><li>AddWhoWas()
-: <a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">inspircd.h</a><li>allowed_umode()
-: <a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">mode.h</a><li>APPLY_ALL
+: <a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">users.h</a>, <a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">users.cpp</a><li>all_opers
+: <a class="el" href="users_8cpp.html#all_5Fopers">users.cpp</a><li>APPLY_ALL
: <a class="el" href="xline_8h.html#APPLY_5FALL">xline.h</a><li>APPLY_GLINES
: <a class="el" href="xline_8h.html#APPLY_5FGLINES">xline.h</a><li>APPLY_KLINES
: <a class="el" href="xline_8h.html#APPLY_5FKLINES">xline.h</a><li>apply_lines()
: <a class="el" href="xline_8h.html#apply_5Flines_28const_20int_20What_29">xline.h</a><li>APPLY_QLINES
: <a class="el" href="xline_8h.html#APPLY_5FQLINES">xline.h</a><li>APPLY_ZLINES
: <a class="el" href="xline_8h.html#APPLY_5FZLINES">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x62.html b/docs/module-doc/globals_0x62.html
index 919c02294..7f8f96ae2 100644
--- a/docs/module-doc/globals_0x62.html
+++ b/docs/module-doc/globals_0x62.html
@@ -16,9 +16,8 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="channels_8h.html#BanList">channels.h</a><li>BindPorts()
: <a class="el" href="inspircd__io_8h.html#BindPorts_28_29">inspircd_io.h</a><li>BindSocket()
: <a class="el" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">inspircd_io.h</a><li>Blocking()
-: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a><li>boundPortCount
-: <a class="el" href="socket_8cpp.html#boundPortCount">socket.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x63.html b/docs/module-doc/globals_0x63.html
index 765d32c91..944287285 100644
--- a/docs/module-doc/globals_0x63.html
+++ b/docs/module-doc/globals_0x63.html
@@ -13,8 +13,7 @@ Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>c_count()
-: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>call_handler()
-: <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>CC_ALLOW
+: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>CC_ALLOW
: <a class="el" href="users_8h.html#CC_5FALLOW">users.h</a><li>CC_DENY
: <a class="el" href="users_8h.html#CC_5FDENY">users.h</a><li>chan_hash
: <a class="el" href="typedefs_8h.html#chan_5Fhash">typedefs.h</a><li>ChanExceptSender()
@@ -28,8 +27,9 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="message_8h.html#chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29">message.h</a><li>chop()
: <a class="el" href="message_8h.html#chop_28char_20_2Astr_29">message.h</a><li>ClassVector
: <a class="el" href="users_8h.html#ClassVector">users.h</a><li>CleanAndResolve()
-: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>clientlist
-: <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>CM_INVITEONLY
+: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>CleanFilename()
+: <a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">commands.h</a><li>clientlist
+: <a class="el" href="users_8cpp.html#clientlist">users.cpp</a>, <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>CM_INVITEONLY
: <a class="el" href="channels_8h.html#CM_5FINVITEONLY">channels.h</a><li>CM_MODERATED
: <a class="el" href="channels_8h.html#CM_5FMODERATED">channels.h</a><li>CM_NOEXTERNAL
: <a class="el" href="channels_8h.html#CM_5FNOEXTERNAL">channels.h</a><li>CM_PRIVATE
@@ -38,18 +38,18 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="channels_8h.html#CM_5FTOPICLOCK">channels.h</a><li>cmdlist
: <a class="el" href="modules_8cpp.html#cmdlist">modules.cpp</a><li>cmode()
: <a class="el" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a>, <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">globals.h</a><li>command_table
-: <a class="el" href="typedefs_8h.html#command_5Ftable">typedefs.h</a><li>common_channels()
+: <a class="el" href="ctables_8h.html#command_5Ftable">ctables.h</a><li>common_channels()
: <a class="el" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">message.h</a>, <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">globals.h</a><li>CONF_FILE_NOT_FOUND
: <a class="el" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">modules.h</a><li>CONF_NOT_A_NUMBER
: <a class="el" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">modules.h</a><li>CONF_NOT_UNSIGNED
: <a class="el" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">modules.h</a><li>CONF_VALUE_NOT_FOUND
: <a class="el" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">modules.h</a><li>Config
: <a class="el" href="users_8cpp.html#Config">users.cpp</a>, <a class="el" href="modules_8cpp.html#Config">modules.cpp</a>, <a class="el" href="channels_8cpp.html#Config">channels.cpp</a><li>ConnectUser()
-: <a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">inspircd.h</a><li>createcommand()
-: <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">modules.h</a><li>cstatus()
+: <a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">users.cpp</a><li>ConvToStr()
+: <a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">users.h</a>, <a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">users.cpp</a><li>cstatus()
: <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a><li>custom_mode_params
: <a class="el" href="channels_8cpp.html#custom_5Fmode_5Fparams">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x64.html b/docs/module-doc/globals_0x64.html
index c1cbda21e..e03404410 100644
--- a/docs/module-doc/globals_0x64.html
+++ b/docs/module-doc/globals_0x64.html
@@ -22,13 +22,13 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">xline.h</a><li>del_qline()
: <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">xline.h</a><li>del_zline()
: <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>DeleteOper()
-: <a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">inspircd.h</a><li>dns_task()
-: <a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">inspircd.h</a><li>do_whois()
+: <a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">users.cpp</a><li>dns_task()
+: <a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns.h</a><li>do_whois()
: <a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">commands.h</a><li>DoAddExtendedMode()
: <a class="el" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">modules.cpp</a><li>DoBackgroundUserStuff()
: <a class="el" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">userprocess.h</a><li>duration()
: <a class="el" href="commands_8h.html#duration_28const_20char_20_2Astr_29">commands.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x65.html b/docs/module-doc/globals_0x65.html
index d68d6edc3..4d7f52f1b 100644
--- a/docs/module-doc/globals_0x65.html
+++ b/docs/module-doc/globals_0x65.html
@@ -21,7 +21,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="xline_8h.html#expire_5Flines_28_29">xline.h</a><li>ExtModeList
: <a class="el" href="typedefs_8h.html#ExtModeList">typedefs.h</a><li>ExtModeListIter
: <a class="el" href="typedefs_8h.html#ExtModeListIter">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x66.html b/docs/module-doc/globals_0x66.html
index d6190c77c..8d00787b3 100644
--- a/docs/module-doc/globals_0x66.html
+++ b/docs/module-doc/globals_0x66.html
@@ -13,21 +13,22 @@ Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FALSE
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FALSE
: <a class="el" href="inspircd_8h.html#FALSE">inspircd.h</a><li>FD_MAGIC_NUMBER
: <a class="el" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">modules.h</a><li>fd_ref_table
-: <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a><li>file_cache
+: <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">users.cpp</a>, <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a><li>file_cache
: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>FileExists()
: <a class="el" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">inspircd_io.h</a><li>Find()
: <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">globals.h</a><li>FindChan()
: <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">globals.h</a><li>FindServerNamePtr()
: <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">inspircd.h</a><li>force_nickchange()
-: <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">inspircd.h</a><li>ForceChan()
+: <a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.h</a>, <a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.cpp</a><li>ForceChan()
: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>FOREACH_MOD
: <a class="el" href="modules_8h.html#FOREACH_5FMOD">modules.h</a><li>FOREACH_RESULT
-: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a><li>FullConnectUser()
-: <a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a><li>from64tobits()
+: <a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">aes.h</a><li>FullConnectUser()
+: <a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x67.html b/docs/module-doc/globals_0x67.html
index 248d9abe6..60f8884d7 100644
--- a/docs/module-doc/globals_0x67.html
+++ b/docs/module-doc/globals_0x67.html
@@ -17,12 +17,9 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="globals_8h.html#getadminname_28_29">globals.h</a><li>getadminnick()
: <a class="el" href="globals_8h.html#getadminnick_28_29">globals.h</a><li>getnetworkname()
: <a class="el" href="globals_8h.html#getnetworkname_28_29">globals.h</a><li>getservername()
-: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>give_hops()
-: <a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_ops()
-: <a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_voice()
-: <a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>gline_set_creation_time()
+: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>gline_set_creation_time()
: <a class="el" href="xline_8h.html#gline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x68.html b/docs/module-doc/globals_0x68.html
index 9cc8414fd..98e360dd8 100644
--- a/docs/module-doc/globals_0x68.html
+++ b/docs/module-doc/globals_0x68.html
@@ -12,64 +12,11 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle_admin()
-: <a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_away()
-: <a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_commands()
-: <a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_connect()
-: <a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_die()
-: <a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_eline()
-: <a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_gline()
-: <a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_info()
-: <a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_invite()
-: <a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ison()
-: <a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_join()
-: <a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kick()
-: <a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kill()
-: <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kline()
-: <a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_links()
-: <a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_list()
-: <a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_loadmodule()
-: <a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_lusers()
-: <a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_map()
-: <a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_mode()
-: <a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>handle_modules()
-: <a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_motd()
-: <a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_names()
-: <a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_nick()
-: <a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_notice()
-: <a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_oper()
-: <a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_part()
-: <a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pass()
-: <a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ping()
-: <a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pong()
-: <a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_privmsg()
-: <a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_qline()
-: <a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_quit()
-: <a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rehash()
-: <a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_restart()
-: <a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rules()
-: <a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_server()
-: <a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_squit()
-: <a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_stats()
-: <a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_summon()
-: <a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_time()
-: <a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_topic()
-: <a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_trace()
-: <a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_unloadmodule()
-: <a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_user()
-: <a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_userhost()
-: <a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_users()
-: <a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_version()
-: <a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>handle_wallops()
-: <a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_who()
-: <a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whois()
-: <a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whowas()
-: <a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_zline()
-: <a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handlerfunc
-: <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">inspircd.h</a><li>has_channel()
+<li>has_channel()
: <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">message.h</a><li>hasumode()
-: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a><li>host_matches_everyone()
+: <a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">commands.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x69.html b/docs/module-doc/globals_0x69.html
index 61d3cd1f7..4fd62e793 100644
--- a/docs/module-doc/globals_0x69.html
+++ b/docs/module-doc/globals_0x69.html
@@ -25,16 +25,16 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="socket_8h.html#InspSocketError">socket.h</a><li>InspSocketState
: <a class="el" href="socket_8h.html#InspSocketState">socket.h</a><li>InvitedList
: <a class="el" href="users_8h.html#InvitedList">users.h</a><li>InviteList
-: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ircd_module
+: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ip_matches_everyone()
+: <a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">commands.h</a><li>ircd_module
: <a class="el" href="modules_8h.html#ircd_5Fmodule">modules.h</a><li>IS_LOCAL
-: <a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">inspircd.h</a><li>IS_MODULE_CREATED
-: <a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">inspircd.h</a><li>IS_REMOTE
-: <a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">inspircd.h</a><li>is_uline()
-: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>is_valid_cmd()
-: <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>isident()
+: <a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">modules.h</a><li>IS_MODULE_CREATED
+: <a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">modules.h</a><li>IS_REMOTE
+: <a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">modules.h</a><li>is_uline()
+: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>isident()
: <a class="el" href="message_8h.html#isident_28const_20char_20_2An_29">message.h</a><li>isnick()
: <a class="el" href="message_8h.html#isnick_28const_20char_20_2An_29">message.h</a>, <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">globals.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x6b.html b/docs/module-doc/globals_0x6b.html
index cf552cda4..66783a85a 100644
--- a/docs/module-doc/globals_0x6b.html
+++ b/docs/module-doc/globals_0x6b.html
@@ -14,9 +14,9 @@ Here is a list of all file members with links to the files they belong to:
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
<li>kick_channel()
: <a class="el" href="channels_8h.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.h</a>, <a class="el" href="channels_8cpp.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.cpp</a><li>kill_link()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a><li>kill_link_silent()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a><li>kill_link_silent()
+: <a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x6c.html b/docs/module-doc/globals_0x6c.html
index 36dbdfa08..20b75d3e1 100644
--- a/docs/module-doc/globals_0x6c.html
+++ b/docs/module-doc/globals_0x6c.html
@@ -13,10 +13,10 @@ Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LoadAllModules()
-: <a class="el" href="userprocess_8h.html#LoadAllModules_28_29">userprocess.h</a><li>log()
-: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>loop_call()
-: <a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">userprocess.h</a><li>local_users
+: <a class="el" href="users_8cpp.html#local_5Fusers">users.cpp</a><li>log()
+: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x6d.html b/docs/module-doc/globals_0x6d.html
index 83b5c4e48..7389dffd0 100644
--- a/docs/module-doc/globals_0x6d.html
+++ b/docs/module-doc/globals_0x6d.html
@@ -19,10 +19,8 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">xline.h</a><li>matches_zline()
: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>MAXCOMMAND
: <a class="el" href="inspircd_8h.html#MAXCOMMAND">inspircd.h</a><li>MAXSOCKS
-: <a class="el" href="inspircd_8h.html#MAXSOCKS">inspircd.h</a><li>merge_mode()
-: <a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">mode.h</a><li>merge_mode2()
-: <a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>MODCOUNT
-: <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>ModeDefiend()
+: <a class="el" href="inspircd_8h.html#MAXSOCKS">inspircd.h</a><li>MODCOUNT
+: <a class="el" href="users_8cpp.html#MODCOUNT">users.cpp</a>, <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>ModeDefiend()
: <a class="el" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">globals.h</a><li>ModeDefined()
: <a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOff()
: <a class="el" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOn()
@@ -30,12 +28,12 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeIsListMode()
: <a class="el" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeMakeList()
: <a class="el" href="modules_8h.html#ModeMakeList_28char_20modechar_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">modules.cpp</a><li>module_sockets
-: <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a><li>MT_CHANNEL
+: <a class="el" href="users_8cpp.html#module_5Fsockets">users.cpp</a>, <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a><li>MT_CHANNEL
: <a class="el" href="modules_8h.html#MT_5FCHANNEL">modules.h</a><li>MT_CLIENT
: <a class="el" href="modules_8h.html#MT_5FCLIENT">modules.h</a><li>MT_SERVER
: <a class="el" href="modules_8h.html#MT_5FSERVER">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x6e.html b/docs/module-doc/globals_0x6e.html
index 62214b413..502d0b9ba 100644
--- a/docs/module-doc/globals_0x6e.html
+++ b/docs/module-doc/globals_0x6e.html
@@ -12,11 +12,12 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NonBlocking()
+<li>nick_matches_everyone()
+: <a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">commands.h</a><li>NonBlocking()
: <a class="el" href="message_8h.html#NonBlocking_28int_20s_29">message.h</a><li>NONE
: <a class="el" href="modules_8h.html#NONE">modules.h</a>, <a class="el" href="inspircd__io_8h.html#NONE">inspircd_io.h</a><li>nspace
: <a class="el" href="hashcomp_8h.html#nspace">hashcomp.h</a>, <a class="el" href="channels_8cpp.html#nspace">channels.cpp</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x6f.html b/docs/module-doc/globals_0x6f.html
index 3b76cd4e4..e38c83b44 100644
--- a/docs/module-doc/globals_0x6f.html
+++ b/docs/module-doc/globals_0x6f.html
@@ -13,10 +13,10 @@ Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
<li>OpenLog()
-: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>openSockfd
-: <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">socket.cpp</a><li>OpenTCPSocket()
-: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>OpenTCPSocket()
+: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a><li>operstrcmp()
+: <a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">commands.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x70.html b/docs/module-doc/globals_0x70.html
index 659e2ca40..df26acd58 100644
--- a/docs/module-doc/globals_0x70.html
+++ b/docs/module-doc/globals_0x70.html
@@ -12,12 +12,9 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>process_buffer()
-: <a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">inspircd.h</a><li>process_modes()
-: <a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">mode.h</a><li>process_module_umode()
-: <a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">mode.h</a><li>ProcessUser()
+<li>ProcessUser()
: <a class="el" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">userprocess.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x71.html b/docs/module-doc/globals_0x71.html
index 6722d9540..07226e2b3 100644
--- a/docs/module-doc/globals_0x71.html
+++ b/docs/module-doc/globals_0x71.html
@@ -15,7 +15,7 @@ Here is a list of all file members with links to the files they belong to:
<li>qline_make_global()
: <a class="el" href="xline_8h.html#qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29">xline.h</a><li>qline_set_creation_time()
: <a class="el" href="xline_8h.html#qline_5Fset_5Fcreation_5Ftime_28char_20_2Anick_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x72.html b/docs/module-doc/globals_0x72.html
index cf0b43fe5..8a95f8c5b 100644
--- a/docs/module-doc/globals_0x72.html
+++ b/docs/module-doc/globals_0x72.html
@@ -16,8 +16,8 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="xline_8h.html#read_5Fxline_5Fdefaults_28_29">xline.h</a><li>readfile()
: <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">globals.h</a><li>ref
: <a class="el" href="socketengine_8cpp.html#ref_5B_36_35_35_33_35_5D">socketengine.cpp</a><li>ReHashNick()
-: <a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.h</a>, <a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x73.html b/docs/module-doc/globals_0x73.html
index 95a4f0391..282ac9644 100644
--- a/docs/module-doc/globals_0x73.html
+++ b/docs/module-doc/globals_0x73.html
@@ -12,13 +12,11 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SE
-: <a class="el" href="socket_8cpp.html#SE">socket.cpp</a>, <a class="el" href="modules_8cpp.html#SE">modules.cpp</a><li>send_network_quit()
-: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>server_mode()
-: <a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">modules.h</a>, <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>ServerInstance
-: <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>servernamelist
+<li>send_network_quit()
+: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>ServerInstance
+: <a class="el" href="users_8cpp.html#ServerInstance">users.cpp</a>, <a class="el" href="socket_8cpp.html#ServerInstance">socket.cpp</a>, <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>servernamelist
: <a class="el" href="typedefs_8h.html#servernamelist">typedefs.h</a><li>socket_ref
-: <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a><li>SPARSE
+: <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">users.cpp</a>, <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a><li>SPARSE
: <a class="el" href="modules_8h.html#SPARSE">modules.h</a>, <a class="el" href="inspircd__io_8h.html#SPARSE">inspircd_io.h</a><li>Start()
: <a class="el" href="inspircd__io_8h.html#Start_28void_29">inspircd_io.h</a><li>stats_e()
: <a class="el" href="xline_8h.html#stats_5Fe_28userrec_20_2Auser_29">xline.h</a><li>stats_g()
@@ -32,7 +30,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="users_8h.html#STATUS_5FVOICE">users.h</a><li>string
: <a class="el" href="namespaceirc.html#string">hashcomp.h</a><li>string_list
: <a class="el" href="modules_8h.html#string_5Flist">modules.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x74.html b/docs/module-doc/globals_0x74.html
index fa72e66fd..5d754b3bd 100644
--- a/docs/module-doc/globals_0x74.html
+++ b/docs/module-doc/globals_0x74.html
@@ -12,19 +12,16 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>take_ban()
-: <a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_hops()
-: <a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_ops()
-: <a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_voice()
-: <a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>TidyBan()
+<li>TidyBan()
: <a class="el" href="message_8h.html#TidyBan_28char_20_2Aban_29">message.h</a><li>tidystring()
: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a><li>TIME
-: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a><li>TRUE
+: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a><li>to64frombits()
+: <a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">aes.h</a><li>TRUE
: <a class="el" href="inspircd_8h.html#TRUE">inspircd.h</a><li>TYPE_CHANNEL
-: <a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">inspircd.h</a><li>TYPE_SERVER
-: <a class="el" href="inspircd_8h.html#TYPE_5FSERVER">inspircd.h</a><li>TYPE_USER
-: <a class="el" href="inspircd_8h.html#TYPE_5FUSER">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="modules_8h.html#TYPE_5FCHANNEL">modules.h</a><li>TYPE_SERVER
+: <a class="el" href="modules_8h.html#TYPE_5FSERVER">modules.h</a><li>TYPE_USER
+: <a class="el" href="modules_8h.html#TYPE_5FUSER">modules.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x75.html b/docs/module-doc/globals_0x75.html
index ba86fe49f..df26a8590 100644
--- a/docs/module-doc/globals_0x75.html
+++ b/docs/module-doc/globals_0x75.html
@@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="channels_8h.html#UCMODE_5FPROTECT">channels.h</a><li>UCMODE_VOICE
: <a class="el" href="channels_8h.html#UCMODE_5FVOICE">channels.h</a><li>user_hash
: <a class="el" href="typedefs_8h.html#user_5Fhash">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x76.html b/docs/module-doc/globals_0x76.html
index d9a685da7..367298953 100644
--- a/docs/module-doc/globals_0x76.html
+++ b/docs/module-doc/globals_0x76.html
@@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="modules_8h.html#VF_5FSTATIC">modules.h</a><li>VF_VENDOR
: <a class="el" href="modules_8h.html#VF_5FVENDOR">modules.h</a><li>VoidPointer
: <a class="el" href="base_8h.html#VoidPointer">base.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x77.html b/docs/module-doc/globals_0x77.html
index 03c173705..74dc85811 100644
--- a/docs/module-doc/globals_0x77.html
+++ b/docs/module-doc/globals_0x77.html
@@ -12,12 +12,13 @@
Here is a list of all file members with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>whowas_hash
+<li>whowas
+: <a class="el" href="users_8cpp.html#whowas">users.cpp</a><li>whowas_hash
: <a class="el" href="typedefs_8h.html#whowas_5Fhash">typedefs.h</a><li>WHOWAS_MAX
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a><li>WM_AND
-: <a class="el" href="inspircd_8h.html#WM_5FAND">inspircd.h</a><li>WM_OR
-: <a class="el" href="inspircd_8h.html#WM_5FOR">inspircd.h</a><li>Write()
+: <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
+: <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a><li>WM_AND
+: <a class="el" href="modules_8h.html#WM_5FAND">modules.h</a><li>WM_OR
+: <a class="el" href="modules_8h.html#WM_5FOR">modules.h</a><li>Write()
: <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteChannel()
: <a class="el" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteCommon()
: <a class="el" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteCommonExcept()
@@ -28,7 +29,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteTo()
: <a class="el" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">globals.h</a><li>WriteWallOps()
: <a class="el" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x78.html b/docs/module-doc/globals_0x78.html
index 0da0ab53f..5ddaf3aed 100644
--- a/docs/module-doc/globals_0x78.html
+++ b/docs/module-doc/globals_0x78.html
@@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to:
: <a class="el" href="socketengine_8h.html#X_5FESTAB_5FMODULE">socketengine.h</a><li>X_LISTEN
: <a class="el" href="socketengine_8h.html#X_5FLISTEN">socketengine.h</a><li>X_READBIT
: <a class="el" href="socketengine_8h.html#X_5FREADBIT">socketengine.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_0x7a.html b/docs/module-doc/globals_0x7a.html
index 04da69501..8fc3891c5 100644
--- a/docs/module-doc/globals_0x7a.html
+++ b/docs/module-doc/globals_0x7a.html
@@ -15,7 +15,7 @@ Here is a list of all file members with links to the files they belong to:
<li>zline_make_global()
: <a class="el" href="xline_8h.html#zline_5Fmake_5Fglobal_28const_20char_20_2Aipaddr_29">xline.h</a><li>zline_set_creation_time()
: <a class="el" href="xline_8h.html#zline_5Fset_5Fcreation_5Ftime_28char_20_2Aip_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_8h-source.html b/docs/module-doc/globals_8h-source.html
index 6ebac3264..57481c27f 100644
--- a/docs/module-doc/globals_8h-source.html
+++ b/docs/module-doc/globals_8h-source.html
@@ -62,7 +62,7 @@
<a name="l00053"></a>00053 <span class="keywordtype">int</span> <a class="code" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">ModeDefiend</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">int</span> i);
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_8h.html b/docs/module-doc/globals_8h.html
index f84f545f2..afae7a1a4 100644
--- a/docs/module-doc/globals_8h.html
+++ b/docs/module-doc/globals_8h.html
@@ -17,9 +17,10 @@
<p>
Include dependency graph for globals.h:<p><center><img src="globals_8h__incl.gif" border="0" usemap="#globals.h_map" alt=""></center>
<map name="globals.h_map">
-<area href="users_8h-source.html" shape="rect" coords="138,235,202,261" alt="">
+<area href="users_8h-source.html" shape="rect" coords="138,260,202,287" alt="">
<area href="channels_8h-source.html" shape="rect" coords="262,159,347,185" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="255,361,354,388" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="255,311,354,337" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="258,361,351,388" alt="">
</map>
<p>
@@ -162,7 +163,7 @@ Definition at line <a class="el" href="globals_8h-source.html#l00029">29</a> of
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00460">Server::SendChannel()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00459">Server::SendChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29"></a><!-- doxytag: member="globals.h::cmode" ref="cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29" args="(userrec *user, chanrec *chan)" --><p>
@@ -201,7 +202,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00460">Server::SendC
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00524">Server::ChanMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00523">Server::ChanMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29"></a><!-- doxytag: member="globals.h::common_channels" ref="common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29" args="(userrec *u, userrec *u2)" --><p>
@@ -240,7 +241,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00524">Server::ChanM
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00472">Server::CommonChannels()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00471">Server::CommonChannels()</a>. </td>
</tr>
</table>
<a class="anchor" name="Find_28std_3A_3Astring_20nick_29"></a><!-- doxytag: member="globals.h::Find" ref="Find_28std_3A_3Astring_20nick_29" args="(std::string nick)" --><p>
@@ -270,7 +271,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00472">Server::Commo
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00509">Server::FindNick()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00508">Server::FindNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="FindChan_28const_20char_20_2Achan_29"></a><!-- doxytag: member="globals.h::FindChan" ref="FindChan_28const_20char_20_2Achan_29" args="(const char *chan)" --><p>
@@ -300,7 +301,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00509">Server::FindN
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00519">Server::FindChannel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00518">Server::FindChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="getadminemail_28_29"></a><!-- doxytag: member="globals.h::getadminemail" ref="getadminemail_28_29" args="()" --><p>
@@ -465,7 +466,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00504">Server::IsNick()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00503">Server::IsNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::log" ref="log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int level, char *text,...)" --><p>
@@ -510,7 +511,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00504">Server::IsNic
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00411">Server::Log()</a>, <a class="el" href="socket_8cpp-source.html#l00158">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00086">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00248">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00292">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00410">Server::Log()</a>, <a class="el" href="socket_8cpp-source.html#l00155">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00085">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00247">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00317">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
</tr>
</table>
<a class="anchor" name="ModeDefiend_28char_20c_2C_20int_20i_29"></a><!-- doxytag: member="globals.h::ModeDefiend" ref="ModeDefiend_28char_20c_2C_20int_20i_29" args="(char c, int i)" --><p>
@@ -586,7 +587,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00884">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00895">FileReader::LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00883">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00894">FileReader::LoadFile()</a>. </td>
</tr>
</table>
<a class="anchor" name="Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::Write" ref="Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, char *text,...)" --><p>
@@ -631,7 +632,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00884">FileReader::F
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00426">Server::Send()</a>, <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, <a class="el" href="modules_8cpp-source.html#l00425">Server::Send()</a>, <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteChannel" ref="WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(chanrec *Ptr, userrec *user, char *text,...)" --><p>
@@ -682,7 +683,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::Pseud
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00460">Server::SendChannel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00459">Server::SendChannel()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteCommon" ref="WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *u, char *text,...)" --><p>
@@ -727,7 +728,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel(
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendCommon()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00476">Server::SendCommon()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteCommonExcept" ref="WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *u, char *text,...)" --><p>
@@ -772,7 +773,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendC
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendCommon()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="modules_8cpp-source.html#l00476">Server::SendCommon()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteFrom" ref="WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, userrec *user, char *text,...)" --><p>
@@ -823,7 +824,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00477">Server::SendC
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00436">Server::SendFrom()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00435">Server::SendFrom()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteOpers" ref="WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29" args="(char *text,...)" --><p>
@@ -862,7 +863,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::Pseud
<p>
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00198">userrec::AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00254">userrec::AddWriteBuf()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="modules_8cpp-source.html#l00318">Server::RehashServer()</a>, and <a class="el" href="modules_8cpp-source.html#l00346">Server::SendOpers()</a>. </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00219">userrec::AddBuffer()</a>, <a class="el" href="users_8cpp-source.html#l00275">userrec::AddWriteBuf()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="modules_8cpp-source.html#l00317">Server::RehashServer()</a>, and <a class="el" href="modules_8cpp-source.html#l00345">Server::SendOpers()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteServ" ref="WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(int sock, char *text,...)" --><p>
@@ -907,7 +908,7 @@ Referenced by <a class="el" href="users_8cpp-source.html#l00198">userrec::AddBuf
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00835">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00431">Server::SendServ()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00834">ConfigReader::DumpErrors()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00430">Server::SendServ()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteTo" ref="WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29" args="(userrec *source, userrec *dest, char *data,...)" --><p>
@@ -958,7 +959,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00441">Server::SendTo()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00440">Server::SendTo()</a>. </td>
</tr>
</table>
<a class="anchor" name="WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29"></a><!-- doxytag: member="globals.h::WriteWallOps" ref="WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29" args="(userrec *source, bool local_only, char *text,...)" --><p>
@@ -1009,10 +1010,10 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00441">Server::SendT
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00489">Server::SendWallops()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00488">Server::SendWallops()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_8h__dep__incl.md5 b/docs/module-doc/globals_8h__dep__incl.md5
index c1e5ca4dd..5b28fd8e6 100644
--- a/docs/module-doc/globals_8h__dep__incl.md5
+++ b/docs/module-doc/globals_8h__dep__incl.md5
@@ -1 +1 @@
-9d6f4bf521bab022edbf6a21bf5aa7ea \ No newline at end of file
+1ef247aba7c18e92a4fa5c62345d5980 \ No newline at end of file
diff --git a/docs/module-doc/globals_8h__incl.map b/docs/module-doc/globals_8h__incl.map
index 70f97a908..8a8679da5 100644
--- a/docs/module-doc/globals_8h__incl.map
+++ b/docs/module-doc/globals_8h__incl.map
@@ -1,4 +1,5 @@
base referer
-rect $users_8h-source.html 138,235 202,261
+rect $users_8h-source.html 138,260 202,287
rect $channels_8h-source.html 262,159 347,185
-rect $connection_8h-source.html 255,361 354,388
+rect $connection_8h-source.html 255,311 354,337
+rect $hashcomp_8h-source.html 258,361 351,388
diff --git a/docs/module-doc/globals_8h__incl.md5 b/docs/module-doc/globals_8h__incl.md5
index b01db37e7..29705f0ba 100644
--- a/docs/module-doc/globals_8h__incl.md5
+++ b/docs/module-doc/globals_8h__incl.md5
@@ -1 +1 @@
-a3b3469472caf7df1d6ac1729fa3eb57 \ No newline at end of file
+578c3aa06350d981bcd02180a126f6e8 \ No newline at end of file
diff --git a/docs/module-doc/globals_defs.html b/docs/module-doc/globals_defs.html
index 64b135653..b25cddde6 100644
--- a/docs/module-doc/globals_defs.html
+++ b/docs/module-doc/globals_defs.html
@@ -54,9 +54,9 @@
: <a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">modules.h</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>IS_LOCAL
-: <a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">inspircd.h</a><li>IS_MODULE_CREATED
-: <a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">inspircd.h</a><li>IS_REMOTE
-: <a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">inspircd.h</a></ul>
+: <a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">modules.h</a><li>IS_MODULE_CREATED
+: <a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">modules.h</a><li>IS_REMOTE
+: <a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">modules.h</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>MAXCOMMAND
: <a class="el" href="inspircd_8h.html#MAXCOMMAND">inspircd.h</a><li>MAXSOCKS
@@ -78,9 +78,9 @@
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>TRUE
: <a class="el" href="inspircd_8h.html#TRUE">inspircd.h</a><li>TYPE_CHANNEL
-: <a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">inspircd.h</a><li>TYPE_SERVER
-: <a class="el" href="inspircd_8h.html#TYPE_5FSERVER">inspircd.h</a><li>TYPE_USER
-: <a class="el" href="inspircd_8h.html#TYPE_5FUSER">inspircd.h</a></ul>
+: <a class="el" href="modules_8h.html#TYPE_5FCHANNEL">modules.h</a><li>TYPE_SERVER
+: <a class="el" href="modules_8h.html#TYPE_5FSERVER">modules.h</a><li>TYPE_USER
+: <a class="el" href="modules_8h.html#TYPE_5FUSER">modules.h</a></ul>
<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
<li>UCMODE_FOUNDER
: <a class="el" href="channels_8h.html#UCMODE_5FFOUNDER">channels.h</a><li>UCMODE_HOP
@@ -97,9 +97,9 @@
: <a class="el" href="modules_8h.html#VF_5FVENDOR">modules.h</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>WM_AND
-: <a class="el" href="inspircd_8h.html#WM_5FAND">inspircd.h</a><li>WM_OR
-: <a class="el" href="inspircd_8h.html#WM_5FOR">inspircd.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+: <a class="el" href="modules_8h.html#WM_5FAND">modules.h</a><li>WM_OR
+: <a class="el" href="modules_8h.html#WM_5FOR">modules.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_enum.html b/docs/module-doc/globals_enum.html
index ee4b21e4d..8a2a5e2c0 100644
--- a/docs/module-doc/globals_enum.html
+++ b/docs/module-doc/globals_enum.html
@@ -12,7 +12,7 @@
<li>InspSocketError
: <a class="el" href="socket_8h.html#InspSocketError">socket.h</a><li>InspSocketState
: <a class="el" href="socket_8h.html#InspSocketState">socket.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_eval.html b/docs/module-doc/globals_eval.html
index 10f36b756..987b7fe79 100644
--- a/docs/module-doc/globals_eval.html
+++ b/docs/module-doc/globals_eval.html
@@ -19,7 +19,7 @@
: <a class="el" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">socket.h</a><li>I_ERROR
: <a class="el" href="socket_8h.html#InspSocketStateI_5FERROR">socket.h</a><li>I_LISTENING
: <a class="el" href="socket_8h.html#InspSocketStateI_5FLISTENING">socket.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_func.html b/docs/module-doc/globals_func.html
index 309c0dc67..f12e587a5 100644
--- a/docs/module-doc/globals_func.html
+++ b/docs/module-doc/globals_func.html
@@ -12,18 +12,17 @@
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>add_ban()
-: <a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>add_channel()
+<li>add_channel()
: <a class="el" href="channels_8h.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.h</a>, <a class="el" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">channels.cpp</a><li>add_eline()
: <a class="el" href="xline_8h.html#add_5Feline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_gline()
: <a class="el" href="xline_8h.html#add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_kline()
: <a class="el" href="xline_8h.html#add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29">xline.h</a><li>add_qline()
: <a class="el" href="xline_8h.html#add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29">xline.h</a><li>add_zline()
-: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddOper()
-: <a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">inspircd.h</a><li>AddServerName()
+: <a class="el" href="xline_8h.html#add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29">xline.h</a><li>AddClient()
+: <a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.h</a>, <a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">users.cpp</a><li>AddOper()
+: <a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">users.cpp</a><li>AddServerName()
: <a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">inspircd.h</a><li>AddWhoWas()
-: <a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">inspircd.h</a><li>allowed_umode()
-: <a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">mode.h</a><li>apply_lines()
+: <a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">users.h</a>, <a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">users.cpp</a><li>apply_lines()
: <a class="el" href="xline_8h.html#apply_5Flines_28const_20int_20What_29">xline.h</a></ul>
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
<li>BindPorts()
@@ -32,8 +31,7 @@
: <a class="el" href="message_8h.html#Blocking_28int_20s_29">message.h</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>c_count()
-: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>call_handler()
-: <a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>ChanExceptSender()
+: <a class="el" href="message_8h.html#c_5Fcount_28userrec_20_2Au_29">message.h</a><li>ChanExceptSender()
: <a class="el" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>ChangeDisplayedHost()
: <a class="el" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">message.h</a><li>ChangeName()
: <a class="el" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">message.h</a><li>CheckDie()
@@ -41,11 +39,12 @@
: <a class="el" href="userprocess_8h.html#CheckRoot_28_29">userprocess.h</a><li>chlist()
: <a class="el" href="message_8h.html#chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29">message.h</a><li>chop()
: <a class="el" href="message_8h.html#chop_28char_20_2Astr_29">message.h</a><li>CleanAndResolve()
-: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>cmode()
+: <a class="el" href="message_8h.html#CleanAndResolve_28char_20_2AresolvedHost_2C_20const_20char_20_2AunresolvedHost_29">message.h</a><li>CleanFilename()
+: <a class="el" href="commands_8h.html#CleanFilename_28char_20_2Aname_29">commands.h</a><li>cmode()
: <a class="el" href="message_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a>, <a class="el" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">globals.h</a><li>common_channels()
: <a class="el" href="message_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">message.h</a>, <a class="el" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">globals.h</a><li>ConnectUser()
-: <a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">inspircd.h</a><li>createcommand()
-: <a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">modules.h</a><li>cstatus()
+: <a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">users.cpp</a><li>ConvToStr()
+: <a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">users.h</a>, <a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">users.cpp</a><li>cstatus()
: <a class="el" href="message_8h.html#cstatus_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">message.h</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>DaemonSeed()
@@ -56,8 +55,8 @@
: <a class="el" href="xline_8h.html#del_5Fkline_28const_20char_20_2Ahostmask_29">xline.h</a><li>del_qline()
: <a class="el" href="xline_8h.html#del_5Fqline_28const_20char_20_2Anickname_29">xline.h</a><li>del_zline()
: <a class="el" href="xline_8h.html#del_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>DeleteOper()
-: <a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">inspircd.h</a><li>dns_task()
-: <a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">inspircd.h</a><li>do_whois()
+: <a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">users.cpp</a><li>dns_task()
+: <a class="el" href="dns_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns.h</a><li>do_whois()
: <a class="el" href="commands_8h.html#do_5Fwhois_28userrec_20_2Auser_2C_20userrec_20_2Adest_2C_20unsigned_20long_20signon_2C_20unsigned_20long_20idle_2C_20char_20_2Anick_29">commands.h</a><li>DoAddExtendedMode()
: <a class="el" href="modules_8cpp.html#DoAddExtendedMode_28char_20modechar_2C_20int_20type_2C_20bool_20requires_5Foper_2C_20int_20params_5Fon_2C_20int_20params_5Foff_29">modules.cpp</a><li>DoBackgroundUserStuff()
: <a class="el" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">userprocess.h</a><li>duration()
@@ -69,107 +68,50 @@
: <a class="el" href="xline_8h.html#expire_5Flines_28_29">xline.h</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory()
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FileExists()
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>FileExists()
: <a class="el" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">inspircd_io.h</a><li>Find()
: <a class="el" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">globals.h</a><li>FindChan()
: <a class="el" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">globals.h</a><li>FindServerNamePtr()
: <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">inspircd.h</a><li>force_nickchange()
-: <a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">inspircd.h</a><li>ForceChan()
-: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>FullConnectUser()
-: <a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.h</a>, <a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">users.cpp</a><li>ForceChan()
+: <a class="el" href="channels_8cpp.html#ForceChan_28chanrec_20_2APtr_2C_20ucrec_20_26a_2C_20userrec_20_2Auser_2C_20int_20created_29">channels.cpp</a><li>from64tobits()
+: <a class="el" href="aes_8h.html#from_36_34tobits_28char_20_2Aout_2C_20const_20char_20_2Ain_2C_20int_20maxlen_29">aes.h</a><li>FullConnectUser()
+: <a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">users.h</a>, <a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getadminemail()
: <a class="el" href="globals_8h.html#getadminemail_28_29">globals.h</a><li>getadminname()
: <a class="el" href="globals_8h.html#getadminname_28_29">globals.h</a><li>getadminnick()
: <a class="el" href="globals_8h.html#getadminnick_28_29">globals.h</a><li>getnetworkname()
: <a class="el" href="globals_8h.html#getnetworkname_28_29">globals.h</a><li>getservername()
-: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>give_hops()
-: <a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_ops()
-: <a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>give_voice()
-: <a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>gline_set_creation_time()
+: <a class="el" href="globals_8h.html#getservername_28_29">globals.h</a><li>gline_set_creation_time()
: <a class="el" href="xline_8h.html#gline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle_admin()
-: <a class="el" href="commands_8h.html#handle_5Fadmin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_away()
-: <a class="el" href="commands_8h.html#handle_5Faway_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_commands()
-: <a class="el" href="commands_8h.html#handle_5Fcommands_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_connect()
-: <a class="el" href="commands_8h.html#handle_5Fconnect_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_die()
-: <a class="el" href="commands_8h.html#handle_5Fdie_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_eline()
-: <a class="el" href="commands_8h.html#handle_5Feline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_gline()
-: <a class="el" href="commands_8h.html#handle_5Fgline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_info()
-: <a class="el" href="commands_8h.html#handle_5Finfo_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_invite()
-: <a class="el" href="commands_8h.html#handle_5Finvite_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ison()
-: <a class="el" href="commands_8h.html#handle_5Fison_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_join()
-: <a class="el" href="commands_8h.html#handle_5Fjoin_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kick()
-: <a class="el" href="commands_8h.html#handle_5Fkick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kill()
-: <a class="el" href="commands_8h.html#handle_5Fkill_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_kline()
-: <a class="el" href="commands_8h.html#handle_5Fkline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_links()
-: <a class="el" href="commands_8h.html#handle_5Flinks_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_list()
-: <a class="el" href="commands_8h.html#handle_5Flist_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_loadmodule()
-: <a class="el" href="commands_8h.html#handle_5Floadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_lusers()
-: <a class="el" href="commands_8h.html#handle_5Flusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_map()
-: <a class="el" href="commands_8h.html#handle_5Fmap_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_mode()
-: <a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>handle_modules()
-: <a class="el" href="commands_8h.html#handle_5Fmodules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_motd()
-: <a class="el" href="commands_8h.html#handle_5Fmotd_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_names()
-: <a class="el" href="commands_8h.html#handle_5Fnames_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_nick()
-: <a class="el" href="commands_8h.html#handle_5Fnick_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_notice()
-: <a class="el" href="commands_8h.html#handle_5Fnotice_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_oper()
-: <a class="el" href="commands_8h.html#handle_5Foper_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_part()
-: <a class="el" href="commands_8h.html#handle_5Fpart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pass()
-: <a class="el" href="commands_8h.html#handle_5Fpass_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_ping()
-: <a class="el" href="commands_8h.html#handle_5Fping_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_pong()
-: <a class="el" href="commands_8h.html#handle_5Fpong_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_privmsg()
-: <a class="el" href="commands_8h.html#handle_5Fprivmsg_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_qline()
-: <a class="el" href="commands_8h.html#handle_5Fqline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_quit()
-: <a class="el" href="commands_8h.html#handle_5Fquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rehash()
-: <a class="el" href="commands_8h.html#handle_5Frehash_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_restart()
-: <a class="el" href="commands_8h.html#handle_5Frestart_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_rules()
-: <a class="el" href="commands_8h.html#handle_5Frules_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_server()
-: <a class="el" href="commands_8h.html#handle_5Fserver_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_squit()
-: <a class="el" href="commands_8h.html#handle_5Fsquit_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_stats()
-: <a class="el" href="commands_8h.html#handle_5Fstats_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_summon()
-: <a class="el" href="commands_8h.html#handle_5Fsummon_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_time()
-: <a class="el" href="commands_8h.html#handle_5Ftime_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_topic()
-: <a class="el" href="commands_8h.html#handle_5Ftopic_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_trace()
-: <a class="el" href="commands_8h.html#handle_5Ftrace_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_unloadmodule()
-: <a class="el" href="commands_8h.html#handle_5Funloadmodule_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_user()
-: <a class="el" href="commands_8h.html#handle_5Fuser_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_userhost()
-: <a class="el" href="commands_8h.html#handle_5Fuserhost_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_users()
-: <a class="el" href="commands_8h.html#handle_5Fusers_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_version()
-: <a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>handle_wallops()
-: <a class="el" href="commands_8h.html#handle_5Fwallops_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_who()
-: <a class="el" href="commands_8h.html#handle_5Fwho_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whois()
-: <a class="el" href="commands_8h.html#handle_5Fwhois_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_whowas()
-: <a class="el" href="commands_8h.html#handle_5Fwhowas_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>handle_zline()
-: <a class="el" href="commands_8h.html#handle_5Fzline_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">commands.h</a><li>has_channel()
+<li>has_channel()
: <a class="el" href="message_8h.html#has_5Fchannel_28userrec_20_2Au_2C_20chanrec_20_2Ac_29">message.h</a><li>hasumode()
-: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a></ul>
+: <a class="el" href="message_8h.html#hasumode_28userrec_20_2Auser_2C_20char_20mode_29">message.h</a><li>host_matches_everyone()
+: <a class="el" href="commands_8h.html#host_5Fmatches_5Feveryone_28std_3A_3Astring_20mask_2C_20userrec_20_2Auser_29">commands.h</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>is_uline()
-: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>is_valid_cmd()
-: <a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">inspircd.h</a><li>isident()
+<li>ip_matches_everyone()
+: <a class="el" href="commands_8h.html#ip_5Fmatches_5Feveryone_28std_3A_3Astring_20ip_2C_20userrec_20_2Auser_29">commands.h</a><li>is_uline()
+: <a class="el" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">commands.h</a><li>isident()
: <a class="el" href="message_8h.html#isident_28const_20char_20_2An_29">message.h</a><li>isnick()
: <a class="el" href="message_8h.html#isnick_28const_20char_20_2An_29">message.h</a>, <a class="el" href="globals_8h.html#isnick_28const_20char_20_2An_29">globals.h</a></ul>
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
<li>kick_channel()
: <a class="el" href="channels_8h.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.h</a>, <a class="el" href="channels_8cpp.html#kick_5Fchannel_28userrec_20_2Asrc_2C_20userrec_20_2Auser_2C_20chanrec_20_2APtr_2C_20char_20_2Areason_29">channels.cpp</a><li>kill_link()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a><li>kill_link_silent()
-: <a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a><li>kill_link_silent()
+: <a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.h</a>, <a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LoadAllModules()
-: <a class="el" href="userprocess_8h.html#LoadAllModules_28_29">userprocess.h</a><li>log()
-: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>loop_call()
-: <a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">inspircd.h</a></ul>
+: <a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">userprocess.h</a><li>log()
+: <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>matches_exception()
: <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">xline.h</a><li>matches_gline()
: <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">xline.h</a><li>matches_kline()
: <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">xline.h</a><li>matches_qline()
: <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">xline.h</a><li>matches_zline()
-: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>merge_mode()
-: <a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">mode.h</a><li>merge_mode2()
-: <a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>ModeDefiend()
+: <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">xline.h</a><li>ModeDefiend()
: <a class="el" href="globals_8h.html#ModeDefiend_28char_20c_2C_20int_20i_29">globals.h</a><li>ModeDefined()
: <a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOff()
: <a class="el" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOff_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeDefinedOn()
@@ -177,19 +119,18 @@
: <a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeDefinedOper_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeIsListMode()
: <a class="el" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">modules.cpp</a><li>ModeMakeList()
: <a class="el" href="modules_8h.html#ModeMakeList_28char_20modechar_29">modules.h</a>, <a class="el" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">modules.cpp</a><li>modules()
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NonBlocking()
+<li>nick_matches_everyone()
+: <a class="el" href="commands_8h.html#nick_5Fmatches_5Feveryone_28std_3A_3Astring_20nick_2C_20userrec_20_2Auser_29">commands.h</a><li>NonBlocking()
: <a class="el" href="message_8h.html#NonBlocking_28int_20s_29">message.h</a></ul>
<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
<li>OpenLog()
: <a class="el" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">userprocess.h</a><li>OpenTCPSocket()
-: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a></ul>
+: <a class="el" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">inspircd_io.h</a><li>operstrcmp()
+: <a class="el" href="commands_8h.html#operstrcmp_28char_20_2Adata_2C_20char_20_2Ainput_29">commands.h</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>process_buffer()
-: <a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">inspircd.h</a><li>process_modes()
-: <a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">mode.h</a><li>process_module_umode()
-: <a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">mode.h</a><li>ProcessUser()
+<li>ProcessUser()
: <a class="el" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">userprocess.h</a></ul>
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
<li>qline_make_global()
@@ -199,11 +140,10 @@
<li>read_xline_defaults()
: <a class="el" href="xline_8h.html#read_5Fxline_5Fdefaults_28_29">xline.h</a><li>readfile()
: <a class="el" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">globals.h</a><li>ReHashNick()
-: <a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">inspircd.h</a></ul>
+: <a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.h</a>, <a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">users.cpp</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>send_network_quit()
-: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>server_mode()
-: <a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">modules.h</a>, <a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">mode.h</a><li>Start()
+: <a class="el" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">message.h</a><li>Start()
: <a class="el" href="inspircd__io_8h.html#Start_28void_29">inspircd_io.h</a><li>stats_e()
: <a class="el" href="xline_8h.html#stats_5Fe_28userrec_20_2Auser_29">xline.h</a><li>stats_g()
: <a class="el" href="xline_8h.html#stats_5Fg_28userrec_20_2Auser_29">xline.h</a><li>stats_k()
@@ -211,13 +151,10 @@
: <a class="el" href="xline_8h.html#stats_5Fq_28userrec_20_2Auser_29">xline.h</a><li>stats_z()
: <a class="el" href="xline_8h.html#stats_5Fz_28userrec_20_2Auser_29">xline.h</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>take_ban()
-: <a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_hops()
-: <a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_ops()
-: <a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>take_voice()
-: <a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">mode.h</a><li>TidyBan()
+<li>TidyBan()
: <a class="el" href="message_8h.html#TidyBan_28char_20_2Aban_29">message.h</a><li>tidystring()
-: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a></ul>
+: <a class="el" href="message_8h.html#tidystring_28char_20_2Astr_29">message.h</a><li>to64frombits()
+: <a class="el" href="aes_8h.html#to_36_34frombits_28unsigned_20char_20_2Aout_2C_20const_20unsigned_20char_20_2Ain_2C_20int_20inlen_29">aes.h</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>Write()
: <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">globals.h</a><li>WriteChannel()
@@ -234,7 +171,7 @@
<li>zline_make_global()
: <a class="el" href="xline_8h.html#zline_5Fmake_5Fglobal_28const_20char_20_2Aipaddr_29">xline.h</a><li>zline_set_creation_time()
: <a class="el" href="xline_8h.html#zline_5Fset_5Fcreation_5Ftime_28char_20_2Aip_2C_20time_5Ft_20create_5Ftime_29">xline.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_type.html b/docs/module-doc/globals_type.html
index 6f465a8e4..629ba26a8 100644
--- a/docs/module-doc/globals_type.html
+++ b/docs/module-doc/globals_type.html
@@ -15,12 +15,11 @@
: <a class="el" href="typedefs_8h.html#chan_5Fhash">typedefs.h</a><li>chanuserlist
: <a class="el" href="modules_8h.html#chanuserlist">modules.h</a><li>ClassVector
: <a class="el" href="users_8h.html#ClassVector">users.h</a><li>command_table
-: <a class="el" href="typedefs_8h.html#command_5Ftable">typedefs.h</a><li>ExemptList
+: <a class="el" href="ctables_8h.html#command_5Ftable">ctables.h</a><li>ExemptList
: <a class="el" href="channels_8h.html#ExemptList">channels.h</a><li>ExtModeList
: <a class="el" href="typedefs_8h.html#ExtModeList">typedefs.h</a><li>ExtModeListIter
: <a class="el" href="typedefs_8h.html#ExtModeListIter">typedefs.h</a><li>file_cache
-: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>handlerfunc
-: <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">inspircd.h</a><li>InvitedList
+: <a class="el" href="typedefs_8h.html#file_5Fcache">typedefs.h</a>, <a class="el" href="modules_8h.html#file_5Fcache">modules.h</a>, <a class="el" href="globals_8h.html#file_5Fcache">globals.h</a><li>InvitedList
: <a class="el" href="users_8h.html#InvitedList">users.h</a><li>InviteList
: <a class="el" href="channels_8h.html#InviteList">channels.h</a><li>ircd_module
: <a class="el" href="modules_8h.html#ircd_5Fmodule">modules.h</a><li>servernamelist
@@ -30,7 +29,7 @@
: <a class="el" href="typedefs_8h.html#user_5Fhash">typedefs.h</a><li>VoidPointer
: <a class="el" href="base_8h.html#VoidPointer">base.h</a><li>whowas_hash
: <a class="el" href="typedefs_8h.html#whowas_5Fhash">typedefs.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/globals_vars.html b/docs/module-doc/globals_vars.html
index 5d938142c..bfe69f2dc 100644
--- a/docs/module-doc/globals_vars.html
+++ b/docs/module-doc/globals_vars.html
@@ -6,25 +6,23 @@
<!-- Generated by Doxygen 1.4.4-20050815 -->
<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="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
+<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
<p>
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>APPLY_ALL
+<li>all_opers
+: <a class="el" href="users_8cpp.html#all_5Fopers">users.cpp</a><li>APPLY_ALL
: <a class="el" href="xline_8h.html#APPLY_5FALL">xline.h</a><li>APPLY_GLINES
: <a class="el" href="xline_8h.html#APPLY_5FGLINES">xline.h</a><li>APPLY_KLINES
: <a class="el" href="xline_8h.html#APPLY_5FKLINES">xline.h</a><li>APPLY_QLINES
: <a class="el" href="xline_8h.html#APPLY_5FQLINES">xline.h</a><li>APPLY_ZLINES
: <a class="el" href="xline_8h.html#APPLY_5FZLINES">xline.h</a></ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>boundPortCount
-: <a class="el" href="socket_8cpp.html#boundPortCount">socket.cpp</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>chanlist
: <a class="el" href="modules_8cpp.html#chanlist">modules.cpp</a>, <a class="el" href="channels_8cpp.html#chanlist">channels.cpp</a><li>clientlist
-: <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>cmdlist
+: <a class="el" href="users_8cpp.html#clientlist">users.cpp</a>, <a class="el" href="modules_8cpp.html#clientlist">modules.cpp</a><li>cmdlist
: <a class="el" href="modules_8cpp.html#cmdlist">modules.cpp</a><li>Config
: <a class="el" href="users_8cpp.html#Config">users.cpp</a>, <a class="el" href="modules_8cpp.html#Config">modules.cpp</a>, <a class="el" href="channels_8cpp.html#Config">channels.cpp</a><li>custom_mode_params
: <a class="el" href="channels_8cpp.html#custom_5Fmode_5Fparams">channels.cpp</a></ul>
@@ -33,31 +31,31 @@
: <a class="el" href="modules_8cpp.html#EMode">modules.cpp</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>factory
-: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>fd_ref_table
-: <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a></ul>
+: <a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#factory">users.cpp</a>, <a class="el" href="modules_8cpp.html#factory">modules.cpp</a>, <a class="el" href="channels_8cpp.html#factory">channels.cpp</a><li>fd_ref_table
+: <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">users.cpp</a>, <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">modules.cpp</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>local_users
+: <a class="el" href="users_8cpp.html#local_5Fusers">users.cpp</a></ul>
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
<li>MODCOUNT
-: <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>module_sockets
-: <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
-: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>openSockfd
-: <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">socket.cpp</a></ul>
+: <a class="el" href="users_8cpp.html#MODCOUNT">users.cpp</a>, <a class="el" href="modules_8cpp.html#MODCOUNT">modules.cpp</a>, <a class="el" href="channels_8cpp.html#MODCOUNT">channels.cpp</a><li>module_sockets
+: <a class="el" href="users_8cpp.html#module_5Fsockets">users.cpp</a>, <a class="el" href="modules_8cpp.html#module_5Fsockets">modules.cpp</a><li>modules
+: <a class="el" href="modules_8cpp.html#modules_28_32_35_35_29">modules.cpp</a>, <a class="el" href="users_8cpp.html#modules">users.cpp</a>, <a class="el" href="modules_8cpp.html#modules">modules.cpp</a>, <a class="el" href="channels_8cpp.html#modules">channels.cpp</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>ref
: <a class="el" href="socketengine_8cpp.html#ref_5B_36_35_35_33_35_5D">socketengine.cpp</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SE
-: <a class="el" href="socket_8cpp.html#SE">socket.cpp</a>, <a class="el" href="modules_8cpp.html#SE">modules.cpp</a><li>ServerInstance
-: <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>socket_ref
-: <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a></ul>
+<li>ServerInstance
+: <a class="el" href="users_8cpp.html#ServerInstance">users.cpp</a>, <a class="el" href="socket_8cpp.html#ServerInstance">socket.cpp</a>, <a class="el" href="modules_8cpp.html#ServerInstance">modules.cpp</a><li>socket_ref
+: <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">users.cpp</a>, <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket.cpp</a></ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>TIME
: <a class="el" href="users_8cpp.html#TIME">users.cpp</a>, <a class="el" href="socket_8cpp.html#TIME">socket.cpp</a>, <a class="el" href="modules_8cpp.html#TIME">modules.cpp</a>, <a class="el" href="channels_8cpp.html#TIME">channels.cpp</a></ul>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>WHOWAS_MAX
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
-: <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a></ul>
+<li>whowas
+: <a class="el" href="users_8cpp.html#whowas">users.cpp</a><li>WHOWAS_MAX
+: <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">channels.cpp</a><li>WHOWAS_STALE
+: <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">users.cpp</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">channels.cpp</a></ul>
<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
<li>X_EMPTY_SLOT
: <a class="el" href="socketengine_8h.html#X_5FEMPTY_5FSLOT">socketengine.h</a><li>X_ESTAB_CLIENT
@@ -66,7 +64,7 @@
: <a class="el" href="socketengine_8h.html#X_5FESTAB_5FMODULE">socketengine.h</a><li>X_LISTEN
: <a class="el" href="socketengine_8h.html#X_5FLISTEN">socketengine.h</a><li>X_READBIT
: <a class="el" href="socketengine_8h.html#X_5FREADBIT">socketengine.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/graph_legend.gif b/docs/module-doc/graph_legend.gif
index f3adc6e30..865472e8c 100644
--- a/docs/module-doc/graph_legend.gif
+++ b/docs/module-doc/graph_legend.gif
Binary files differ
diff --git a/docs/module-doc/graph_legend.html b/docs/module-doc/graph_legend.html
index 706afb308..bbe0ebefd 100644
--- a/docs/module-doc/graph_legend.html
+++ b/docs/module-doc/graph_legend.html
@@ -67,7 +67,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/hashcomp_8h-source.html b/docs/module-doc/hashcomp_8h-source.html
index 08d0abcc0..4fbdf8d15 100644
--- a/docs/module-doc/hashcomp_8h-source.html
+++ b/docs/module-doc/hashcomp_8h-source.html
@@ -109,7 +109,7 @@
<a name="l00130"></a>00130 }
<a name="l00131"></a>00131
<a name="l00132"></a>00132 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/hashcomp_8h.html b/docs/module-doc/hashcomp_8h.html
index d9399a264..44ba296ac 100644
--- a/docs/module-doc/hashcomp_8h.html
+++ b/docs/module-doc/hashcomp_8h.html
@@ -16,9 +16,10 @@ Include dependency graph for hashcomp.h:<p><center><img src="hashcomp_8h__incl.g
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="hashcomp_8h__dep__incl.gif" border="0" usemap="#hashcomp.hdep_map" alt=""></center>
<map name="hashcomp.hdep_map">
-<area href="modules_8cpp-source.html" shape="rect" coords="285,7,384,34" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="151,58,236,84" alt="">
-<area href="channels_8cpp-source.html" shape="rect" coords="285,58,384,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="399,58,497,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="408,159,488,186" alt="">
+<area href="users_8h-source.html" shape="rect" coords="152,108,216,135" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="265,58,351,84" alt="">
</map>
<p>
@@ -79,7 +80,7 @@ This graph shows which files directly or indirectly include this file:<p><center
Definition at line <a class="el" href="hashcomp_8h-source.html#l00044">44</a> of file <a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/hashcomp_8h__dep__incl.map b/docs/module-doc/hashcomp_8h__dep__incl.map
index 52c40f1fc..8e8539c82 100644
--- a/docs/module-doc/hashcomp_8h__dep__incl.map
+++ b/docs/module-doc/hashcomp_8h__dep__incl.map
@@ -1,4 +1,5 @@
base referer
-rect $modules_8cpp-source.html 285,7 384,34
-rect $typedefs_8h-source.html 151,58 236,84
-rect $channels_8cpp-source.html 285,58 384,84
+rect $modules_8cpp-source.html 399,58 497,84
+rect $users_8cpp-source.html 408,159 488,186
+rect $users_8h-source.html 152,108 216,135
+rect $typedefs_8h-source.html 265,58 351,84
diff --git a/docs/module-doc/hashcomp_8h__dep__incl.md5 b/docs/module-doc/hashcomp_8h__dep__incl.md5
index 6be4611c3..cad960de2 100644
--- a/docs/module-doc/hashcomp_8h__dep__incl.md5
+++ b/docs/module-doc/hashcomp_8h__dep__incl.md5
@@ -1 +1 @@
-6a6c46b821cf3dc5d3cadf06a3a1391b \ No newline at end of file
+5670628fe56960fde1c1a397ce860733 \ No newline at end of file
diff --git a/docs/module-doc/hierarchy.html b/docs/module-doc/hierarchy.html
index c65994f69..b58db2482 100644
--- a/docs/module-doc/hierarchy.html
+++ b/docs/module-doc/hierarchy.html
@@ -8,6 +8,7 @@
<h1>InspIRCd Class Hierarchy</h1><a href="inherits.html">Go to the graphical class hierarchy</a>
<p>
This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="classAES.html">AES</a>
<li><a class="el" href="classBoolSet.html">BoolSet</a>
<li><a class="el" href="classstd_1_1char__traits.html">char_traits</a>
<ul>
@@ -21,7 +22,6 @@ This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
<li><a class="el" href="classExtensible.html">Extensible</a>
<ul>
<li><a class="el" href="classchanrec.html">chanrec</a>
-<li><a class="el" href="classcommand__t.html">command_t</a>
<li><a class="el" href="classconnection.html">connection</a>
<ul>
<li><a class="el" href="classuserrec.html">userrec</a>
@@ -57,6 +57,10 @@ This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
<li><a class="el" href="classZLine.html">ZLine</a>
</ul>
</ul>
+<li><a class="el" href="classcommand__t.html">command_t</a>
+<ul>
+<li><a class="el" href="classcmd__mode.html">cmd_mode</a>
+</ul>
<li><a class="el" href="classCullItem.html">CullItem</a>
<li><a class="el" href="classCullList.html">CullList</a>
<li><a class="el" href="classDNS.html">DNS</a>
@@ -66,12 +70,13 @@ This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
<li><a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>
<li><a class="el" href="classInspIRCd.html">InspIRCd</a>
<li><a class="el" href="classInspSocket.html">InspSocket</a>
+<li><a class="el" href="classModeParser.html">ModeParser</a>
<li><a class="el" href="classserverstats.html">serverstats</a>
<li><a class="el" href="classSocketEngine.html">SocketEngine</a>
<li><a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>
<li><a class="el" href="classWhoWasUser.html">WhoWasUser</a>
</ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inherit__graph__0.map b/docs/module-doc/inherit__graph__0.map
index 09d914fed..360388e46 100644
--- a/docs/module-doc/inherit__graph__0.map
+++ b/docs/module-doc/inherit__graph__0.map
@@ -1,2 +1,2 @@
base referer
-rect $classBoolSet.html 7,7 76,33
+rect $classAES.html 7,7 57,33
diff --git a/docs/module-doc/inherit__graph__0.md5 b/docs/module-doc/inherit__graph__0.md5
index 0d55dc8ff..0da62c0cd 100644
--- a/docs/module-doc/inherit__graph__0.md5
+++ b/docs/module-doc/inherit__graph__0.md5
@@ -1 +1 @@
-93d9e4fbc2d3cddda9a76d7441754f2b \ No newline at end of file
+4c1910dbd53656eee7c5c84fc773f193 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__1.map b/docs/module-doc/inherit__graph__1.map
index 2fef6e5ed..09d914fed 100644
--- a/docs/module-doc/inherit__graph__1.map
+++ b/docs/module-doc/inherit__graph__1.map
@@ -1,3 +1,2 @@
base referer
-rect $classstd_1_1char__traits.html 8,7 91,33
-rect $structirc_1_1irc__char__traits.html 140,7 268,33
+rect $classBoolSet.html 7,7 76,33
diff --git a/docs/module-doc/inherit__graph__1.md5 b/docs/module-doc/inherit__graph__1.md5
index 9dc9f695d..0d55dc8ff 100644
--- a/docs/module-doc/inherit__graph__1.md5
+++ b/docs/module-doc/inherit__graph__1.md5
@@ -1 +1 @@
-9b6f095874e1ac542b37f925a223adb0 \ No newline at end of file
+93d9e4fbc2d3cddda9a76d7441754f2b \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__10.map b/docs/module-doc/inherit__graph__10.map
index 8c67f4a72..9f8c7b021 100644
--- a/docs/module-doc/inherit__graph__10.map
+++ b/docs/module-doc/inherit__graph__10.map
@@ -1,2 +1,2 @@
base referer
-rect $structirc_1_1StrHashComp.html 7,7 135,33
+rect $classInspSocket.html 7,7 95,33
diff --git a/docs/module-doc/inherit__graph__10.md5 b/docs/module-doc/inherit__graph__10.md5
index b62920d1d..d2ac3e742 100644
--- a/docs/module-doc/inherit__graph__10.md5
+++ b/docs/module-doc/inherit__graph__10.md5
@@ -1 +1 @@
-d94ccc9245ee31c76282e2c8ed0c0bb2 \ No newline at end of file
+866431d87448beeff03effa477cb0785 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__11.map b/docs/module-doc/inherit__graph__11.map
index e91564620..dad9d9fcd 100644
--- a/docs/module-doc/inherit__graph__11.map
+++ b/docs/module-doc/inherit__graph__11.map
@@ -1,2 +1,2 @@
base referer
-rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33
+rect $structirc_1_1InAddr__HashComp.html 7,7 164,33
diff --git a/docs/module-doc/inherit__graph__11.md5 b/docs/module-doc/inherit__graph__11.md5
index 9c5f939fc..9496775c7 100644
--- a/docs/module-doc/inherit__graph__11.md5
+++ b/docs/module-doc/inherit__graph__11.md5
@@ -1 +1 @@
-40e92872c26375b92021bb12d46d2211 \ No newline at end of file
+3c2c67e0c9a15d3aaf7860ffcd39768e \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__12.map b/docs/module-doc/inherit__graph__12.map
index cf6c39bc6..8c67f4a72 100644
--- a/docs/module-doc/inherit__graph__12.map
+++ b/docs/module-doc/inherit__graph__12.map
@@ -1,2 +1,2 @@
base referer
-rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33
+rect $structirc_1_1StrHashComp.html 7,7 135,33
diff --git a/docs/module-doc/inherit__graph__12.md5 b/docs/module-doc/inherit__graph__12.md5
index 354478843..b62920d1d 100644
--- a/docs/module-doc/inherit__graph__12.md5
+++ b/docs/module-doc/inherit__graph__12.md5
@@ -1 +1 @@
-317e8030ba500855ca30d38cc6449d34 \ No newline at end of file
+d94ccc9245ee31c76282e2c8ed0c0bb2 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__13.map b/docs/module-doc/inherit__graph__13.map
index 8390fc618..d4722becd 100644
--- a/docs/module-doc/inherit__graph__13.map
+++ b/docs/module-doc/inherit__graph__13.map
@@ -1,2 +1,2 @@
base referer
-rect $classserverstats.html 7,7 95,33
+rect $classModeParser.html 8,7 101,33
diff --git a/docs/module-doc/inherit__graph__13.md5 b/docs/module-doc/inherit__graph__13.md5
index 2d37de06b..5703aac8a 100644
--- a/docs/module-doc/inherit__graph__13.md5
+++ b/docs/module-doc/inherit__graph__13.md5
@@ -1 +1 @@
-cf48882e944fddb7efa2fe6a320e8c63 \ No newline at end of file
+f8e776a077ef5ca7f74ae7545b260b83 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__14.map b/docs/module-doc/inherit__graph__14.map
index cb5e68503..e91564620 100644
--- a/docs/module-doc/inherit__graph__14.map
+++ b/docs/module-doc/inherit__graph__14.map
@@ -1,2 +1,2 @@
base referer
-rect $classSocketEngine.html 8,7 112,33
+rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33
diff --git a/docs/module-doc/inherit__graph__14.md5 b/docs/module-doc/inherit__graph__14.md5
index 6349253e0..9c5f939fc 100644
--- a/docs/module-doc/inherit__graph__14.md5
+++ b/docs/module-doc/inherit__graph__14.md5
@@ -1 +1 @@
-949dcc70479b42522977703d4bb0a709 \ No newline at end of file
+40e92872c26375b92021bb12d46d2211 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__15.map b/docs/module-doc/inherit__graph__15.map
index f4dc152fc..cf6c39bc6 100644
--- a/docs/module-doc/inherit__graph__15.map
+++ b/docs/module-doc/inherit__graph__15.map
@@ -1,2 +1,2 @@
base referer
-rect $classWhoWasUser.html 8,7 112,33
+rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33
diff --git a/docs/module-doc/inherit__graph__15.md5 b/docs/module-doc/inherit__graph__15.md5
index 49ded545f..354478843 100644
--- a/docs/module-doc/inherit__graph__15.md5
+++ b/docs/module-doc/inherit__graph__15.md5
@@ -1 +1 @@
-5bff511d62c6faa81cdb63b1f78f6cd8 \ No newline at end of file
+317e8030ba500855ca30d38cc6449d34 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__2.map b/docs/module-doc/inherit__graph__2.map
index 089be13aa..2fef6e5ed 100644
--- a/docs/module-doc/inherit__graph__2.map
+++ b/docs/module-doc/inherit__graph__2.map
@@ -1,33 +1,3 @@
base referer
-rect $classclassbase.html 8,412 88,439
-rect $classAdmin.html 167,7 228,33
-rect $classConfigReader.html 146,57 250,84
-rect $classConnectClass.html 146,108 250,135
-rect $classExtensible.html 156,159 239,185
-rect $classExtMode.html 160,209 235,236
-rect $classFileReader.html 154,260 242,287
-rect $classHostItem.html 160,311 235,337
-rect $classInvited.html 167,361 228,388
-rect $classModeParameter.html 139,412 256,439
-rect $classModule.html 164,463 231,489
-rect $classModuleFactory.html 143,513 252,540
-rect $classModuleMessage.html 138,564 258,591
-rect $classServer.html 167,615 228,641
-rect $classServerConfig.html 147,665 248,692
-rect $classucrec.html 171,716 224,743
-rect $classVersion.html 164,767 231,793
-rect $classXLine.html 170,817 226,844
-rect $classchanrec.html 319,108 388,135
-rect $classcommand__t.html 308,159 399,185
-rect $classconnection.html 311,209 396,236
-rect $classuserrec.html 450,209 516,236
-rect $classBanItem.html 318,260 390,287
-rect $classExemptItem.html 307,311 400,337
-rect $classInviteItem.html 314,361 394,388
-rect $classEvent.html 326,539 382,565
-rect $classRequest.html 318,589 390,616
-rect $classELine.html 326,716 382,743
-rect $classGLine.html 324,767 383,793
-rect $classKLine.html 326,817 382,844
-rect $classQLine.html 324,868 383,895
-rect $classZLine.html 326,919 382,945
+rect $classstd_1_1char__traits.html 8,7 91,33
+rect $structirc_1_1irc__char__traits.html 140,7 268,33
diff --git a/docs/module-doc/inherit__graph__2.md5 b/docs/module-doc/inherit__graph__2.md5
index c52b8028e..9dc9f695d 100644
--- a/docs/module-doc/inherit__graph__2.md5
+++ b/docs/module-doc/inherit__graph__2.md5
@@ -1 +1 @@
-6d4274482c5e5284d113f8910d688065 \ No newline at end of file
+9b6f095874e1ac542b37f925a223adb0 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__3.map b/docs/module-doc/inherit__graph__3.map
index 286852f67..750f8121b 100644
--- a/docs/module-doc/inherit__graph__3.map
+++ b/docs/module-doc/inherit__graph__3.map
@@ -1,2 +1,32 @@
base referer
-rect $classCullItem.html 7,7 79,33
+rect $classclassbase.html 8,412 88,439
+rect $classAdmin.html 167,7 228,33
+rect $classConfigReader.html 146,57 250,84
+rect $classConnectClass.html 146,108 250,135
+rect $classExtensible.html 156,159 239,185
+rect $classExtMode.html 160,209 235,236
+rect $classFileReader.html 154,260 242,287
+rect $classHostItem.html 160,311 235,337
+rect $classInvited.html 167,361 228,388
+rect $classModeParameter.html 139,412 256,439
+rect $classModule.html 164,463 231,489
+rect $classModuleFactory.html 143,513 252,540
+rect $classModuleMessage.html 138,564 258,591
+rect $classServer.html 167,615 228,641
+rect $classServerConfig.html 147,665 248,692
+rect $classucrec.html 171,716 224,743
+rect $classVersion.html 164,767 231,793
+rect $classXLine.html 170,817 226,844
+rect $classchanrec.html 319,133 388,160
+rect $classconnection.html 311,184 396,211
+rect $classuserrec.html 450,184 516,211
+rect $classBanItem.html 318,260 390,287
+rect $classExemptItem.html 307,311 400,337
+rect $classInviteItem.html 314,361 394,388
+rect $classEvent.html 326,539 382,565
+rect $classRequest.html 318,589 390,616
+rect $classELine.html 326,716 382,743
+rect $classGLine.html 324,767 383,793
+rect $classKLine.html 326,817 382,844
+rect $classQLine.html 324,868 383,895
+rect $classZLine.html 326,919 382,945
diff --git a/docs/module-doc/inherit__graph__3.md5 b/docs/module-doc/inherit__graph__3.md5
index c6ff1cc7d..2b3aa861f 100644
--- a/docs/module-doc/inherit__graph__3.md5
+++ b/docs/module-doc/inherit__graph__3.md5
@@ -1 +1 @@
-04d1a5175492509e76bb27f8c708e6ac \ No newline at end of file
+8b70355902672fcff82486b7fba0d379 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__4.map b/docs/module-doc/inherit__graph__4.map
index 1b2802457..0d7b60b2b 100644
--- a/docs/module-doc/inherit__graph__4.map
+++ b/docs/module-doc/inherit__graph__4.map
@@ -1,2 +1,3 @@
base referer
-rect $classCullList.html 7,7 73,33
+rect $classcommand__t.html 8,7 99,33
+rect $classcmd__mode.html 149,7 237,33
diff --git a/docs/module-doc/inherit__graph__4.md5 b/docs/module-doc/inherit__graph__4.md5
index df7340bb1..97c80f0e2 100644
--- a/docs/module-doc/inherit__graph__4.md5
+++ b/docs/module-doc/inherit__graph__4.md5
@@ -1 +1 @@
-fc7a10efd1ef64cd67f77b97165cd78b \ No newline at end of file
+3dde6dbafbcda9e1b64a7ed5d68e5a93 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__5.map b/docs/module-doc/inherit__graph__5.map
index 56a3b7703..286852f67 100644
--- a/docs/module-doc/inherit__graph__5.map
+++ b/docs/module-doc/inherit__graph__5.map
@@ -1,2 +1,2 @@
base referer
-rect $classDNS.html 7,7 57,33
+rect $classCullItem.html 7,7 79,33
diff --git a/docs/module-doc/inherit__graph__5.md5 b/docs/module-doc/inherit__graph__5.md5
index 3644e817a..c6ff1cc7d 100644
--- a/docs/module-doc/inherit__graph__5.md5
+++ b/docs/module-doc/inherit__graph__5.md5
@@ -1 +1 @@
-d39d1604b95cefdfc240566a784bc1e0 \ No newline at end of file
+04d1a5175492509e76bb27f8c708e6ac \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__6.map b/docs/module-doc/inherit__graph__6.map
index 37bcc6048..1b2802457 100644
--- a/docs/module-doc/inherit__graph__6.map
+++ b/docs/module-doc/inherit__graph__6.map
@@ -1,2 +1,2 @@
base referer
-rect $structdns__ip4list.html 7,7 92,33
+rect $classCullList.html 7,7 73,33
diff --git a/docs/module-doc/inherit__graph__6.md5 b/docs/module-doc/inherit__graph__6.md5
index a570a57e1..df7340bb1 100644
--- a/docs/module-doc/inherit__graph__6.md5
+++ b/docs/module-doc/inherit__graph__6.md5
@@ -1 +1 @@
-f91f9b746cbe9764b077e0f96e3d53c0 \ No newline at end of file
+fc7a10efd1ef64cd67f77b97165cd78b \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__7.map b/docs/module-doc/inherit__graph__7.map
index ac2c9ebe9..56a3b7703 100644
--- a/docs/module-doc/inherit__graph__7.map
+++ b/docs/module-doc/inherit__graph__7.map
@@ -1,2 +1,2 @@
base referer
-rect $classInspIRCd.html 7,7 84,33
+rect $classDNS.html 7,7 57,33
diff --git a/docs/module-doc/inherit__graph__7.md5 b/docs/module-doc/inherit__graph__7.md5
index d6b0d6c87..3644e817a 100644
--- a/docs/module-doc/inherit__graph__7.md5
+++ b/docs/module-doc/inherit__graph__7.md5
@@ -1 +1 @@
-027440a4e7d81cbfbc813d6bda090a43 \ No newline at end of file
+d39d1604b95cefdfc240566a784bc1e0 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__8.map b/docs/module-doc/inherit__graph__8.map
index 9f8c7b021..37bcc6048 100644
--- a/docs/module-doc/inherit__graph__8.map
+++ b/docs/module-doc/inherit__graph__8.map
@@ -1,2 +1,2 @@
base referer
-rect $classInspSocket.html 7,7 95,33
+rect $structdns__ip4list.html 7,7 92,33
diff --git a/docs/module-doc/inherit__graph__8.md5 b/docs/module-doc/inherit__graph__8.md5
index d2ac3e742..a570a57e1 100644
--- a/docs/module-doc/inherit__graph__8.md5
+++ b/docs/module-doc/inherit__graph__8.md5
@@ -1 +1 @@
-866431d87448beeff03effa477cb0785 \ No newline at end of file
+f91f9b746cbe9764b077e0f96e3d53c0 \ No newline at end of file
diff --git a/docs/module-doc/inherit__graph__9.map b/docs/module-doc/inherit__graph__9.map
index dad9d9fcd..ac2c9ebe9 100644
--- a/docs/module-doc/inherit__graph__9.map
+++ b/docs/module-doc/inherit__graph__9.map
@@ -1,2 +1,2 @@
base referer
-rect $structirc_1_1InAddr__HashComp.html 7,7 164,33
+rect $classInspIRCd.html 7,7 84,33
diff --git a/docs/module-doc/inherit__graph__9.md5 b/docs/module-doc/inherit__graph__9.md5
index 9496775c7..d6b0d6c87 100644
--- a/docs/module-doc/inherit__graph__9.md5
+++ b/docs/module-doc/inherit__graph__9.md5
@@ -1 +1 @@
-3c2c67e0c9a15d3aaf7860ffcd39768e \ No newline at end of file
+027440a4e7d81cbfbc813d6bda090a43 \ No newline at end of file
diff --git a/docs/module-doc/inherits.html b/docs/module-doc/inherits.html
index 6a21e9c14..7a931df22 100644
--- a/docs/module-doc/inherits.html
+++ b/docs/module-doc/inherits.html
@@ -8,16 +8,20 @@
<h1>InspIRCd Graphical Class Hierarchy</h1><a href="hierarchy.html">Go to the textual class hierarchy</a>
<p>
<table border="0" cellspacing="10" cellpadding="0">
-<tr><td><img src="inherit__graph__0.gif" border="0" alt="" usemap="#BoolSet_map">
+<tr><td><img src="inherit__graph__0.gif" border="0" alt="" usemap="#AES_map">
+<map name="AES_map">
+<area href="classAES.html" shape="rect" coords="7,7,57,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__1.gif" border="0" alt="" usemap="#BoolSet_map">
<map name="BoolSet_map">
<area href="classBoolSet.html" shape="rect" coords="7,7,76,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__1.gif" border="0" alt="" usemap="#char__traits_map">
+<tr><td><img src="inherit__graph__2.gif" border="0" alt="" usemap="#char__traits_map">
<map name="char__traits_map">
<area href="classstd_1_1char__traits.html" shape="rect" coords="8,7,91,33" alt="">
<area href="structirc_1_1irc__char__traits.html" shape="rect" coords="140,7,268,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__2.gif" border="0" alt="" usemap="#classbase_map">
+<tr><td><img src="inherit__graph__3.gif" border="0" alt="" usemap="#classbase_map">
<map name="classbase_map">
<area href="classclassbase.html" shape="rect" coords="8,412,88,439" alt="">
<area href="classAdmin.html" shape="rect" coords="167,7,228,33" alt="">
@@ -37,10 +41,9 @@
<area href="classucrec.html" shape="rect" coords="171,716,224,743" alt="">
<area href="classVersion.html" shape="rect" coords="164,767,231,793" alt="">
<area href="classXLine.html" shape="rect" coords="170,817,226,844" alt="">
-<area href="classchanrec.html" shape="rect" coords="319,108,388,135" alt="">
-<area href="classcommand__t.html" shape="rect" coords="308,159,399,185" alt="">
-<area href="classconnection.html" shape="rect" coords="311,209,396,236" alt="">
-<area href="classuserrec.html" shape="rect" coords="450,209,516,236" alt="">
+<area href="classchanrec.html" shape="rect" coords="319,133,388,160" alt="">
+<area href="classconnection.html" shape="rect" coords="311,184,396,211" alt="">
+<area href="classuserrec.html" shape="rect" coords="450,184,516,211" alt="">
<area href="classBanItem.html" shape="rect" coords="318,260,390,287" alt="">
<area href="classExemptItem.html" shape="rect" coords="307,311,400,337" alt="">
<area href="classInviteItem.html" shape="rect" coords="314,361,394,388" alt="">
@@ -52,60 +55,69 @@
<area href="classQLine.html" shape="rect" coords="324,868,383,895" alt="">
<area href="classZLine.html" shape="rect" coords="326,919,382,945" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__3.gif" border="0" alt="" usemap="#CullItem_map">
+<tr><td><img src="inherit__graph__4.gif" border="0" alt="" usemap="#command__t_map">
+<map name="command__t_map">
+<area href="classcommand__t.html" shape="rect" coords="8,7,99,33" alt="">
+<area href="classcmd__mode.html" shape="rect" coords="149,7,237,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__5.gif" border="0" alt="" usemap="#CullItem_map">
<map name="CullItem_map">
<area href="classCullItem.html" shape="rect" coords="7,7,79,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__4.gif" border="0" alt="" usemap="#CullList_map">
+<tr><td><img src="inherit__graph__6.gif" border="0" alt="" usemap="#CullList_map">
<map name="CullList_map">
<area href="classCullList.html" shape="rect" coords="7,7,73,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__5.gif" border="0" alt="" usemap="#DNS_map">
+<tr><td><img src="inherit__graph__7.gif" border="0" alt="" usemap="#DNS_map">
<map name="DNS_map">
<area href="classDNS.html" shape="rect" coords="7,7,57,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__6.gif" border="0" alt="" usemap="#dns__ip4list_map">
+<tr><td><img src="inherit__graph__8.gif" border="0" alt="" usemap="#dns__ip4list_map">
<map name="dns__ip4list_map">
<area href="structdns__ip4list.html" shape="rect" coords="7,7,92,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__7.gif" border="0" alt="" usemap="#InspIRCd_map">
+<tr><td><img src="inherit__graph__9.gif" border="0" alt="" usemap="#InspIRCd_map">
<map name="InspIRCd_map">
<area href="classInspIRCd.html" shape="rect" coords="7,7,84,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__8.gif" border="0" alt="" usemap="#InspSocket_map">
+<tr><td><img src="inherit__graph__10.gif" border="0" alt="" usemap="#InspSocket_map">
<map name="InspSocket_map">
<area href="classInspSocket.html" shape="rect" coords="7,7,95,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__9.gif" border="0" alt="" usemap="#irc_1_1InAddr__HashComp_map">
+<tr><td><img src="inherit__graph__11.gif" border="0" alt="" usemap="#irc_1_1InAddr__HashComp_map">
<map name="irc_1_1InAddr__HashComp_map">
<area href="structirc_1_1InAddr__HashComp.html" shape="rect" coords="7,7,164,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__10.gif" border="0" alt="" usemap="#irc_1_1StrHashComp_map">
+<tr><td><img src="inherit__graph__12.gif" border="0" alt="" usemap="#irc_1_1StrHashComp_map">
<map name="irc_1_1StrHashComp_map">
<area href="structirc_1_1StrHashComp.html" shape="rect" coords="7,7,135,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__11.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01in__addr_01_4_map">
+<tr><td><img src="inherit__graph__13.gif" border="0" alt="" usemap="#ModeParser_map">
+<map name="ModeParser_map">
+<area href="classModeParser.html" shape="rect" coords="8,7,101,33" alt="">
+</map></td></tr>
+<tr><td><img src="inherit__graph__14.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01in__addr_01_4_map">
<map name="nspace_1_1hash_3_01in__addr_01_4_map">
<area href="structnspace_1_1hash_3_01in__addr_01_4.html" shape="rect" coords="8,7,176,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__12.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01string_01_4_map">
+<tr><td><img src="inherit__graph__15.gif" border="0" alt="" usemap="#nspace_1_1hash_3_01string_01_4_map">
<map name="nspace_1_1hash_3_01string_01_4_map">
<area href="structnspace_1_1hash_3_01string_01_4.html" shape="rect" coords="7,7,164,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__13.gif" border="0" alt="" usemap="#serverstats_map">
+<tr><td><img src="inherit__graph__16.gif" border="0" alt="" usemap="#serverstats_map">
<map name="serverstats_map">
<area href="classserverstats.html" shape="rect" coords="7,7,95,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__14.gif" border="0" alt="" usemap="#SocketEngine_map">
+<tr><td><img src="inherit__graph__17.gif" border="0" alt="" usemap="#SocketEngine_map">
<map name="SocketEngine_map">
<area href="classSocketEngine.html" shape="rect" coords="8,7,112,33" alt="">
</map></td></tr>
-<tr><td><img src="inherit__graph__15.gif" border="0" alt="" usemap="#WhoWasUser_map">
+<tr><td><img src="inherit__graph__18.gif" border="0" alt="" usemap="#WhoWasUser_map">
<map name="WhoWasUser_map">
<area href="classWhoWasUser.html" shape="rect" coords="8,7,112,33" alt="">
</map></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:21 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inspircd_8h-source.html b/docs/module-doc/inspircd_8h-source.html
index b2c1f49a8..7dab7e04a 100644
--- a/docs/module-doc/inspircd_8h-source.html
+++ b/docs/module-doc/inspircd_8h-source.html
@@ -48,103 +48,95 @@
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;deque&gt;</span>
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="comment">// some misc defines</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "command_parse.h"</span>
<a name="l00048"></a>00048
-<a name="l00049"></a><a class="code" href="inspircd_8h.html#ERROR">00049</a> <span class="preprocessor">#define ERROR -1</span>
-<a name="l00050"></a><a class="code" href="inspircd_8h.html#TRUE">00050</a> <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
-<a name="l00051"></a><a class="code" href="inspircd_8h.html#FALSE">00051</a> <span class="preprocessor"></span><span class="preprocessor">#define FALSE 0</span>
-<a name="l00052"></a><a class="code" href="inspircd_8h.html#MAXSOCKS">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXSOCKS 64</span>
-<a name="l00053"></a><a class="code" href="inspircd_8h.html#MAXCOMMAND">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXCOMMAND 32</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00055"></a>00055 <span class="comment">// flags for use with WriteMode</span>
-<a name="l00056"></a>00056
-<a name="l00057"></a><a class="code" href="inspircd_8h.html#WM_5FAND">00057</a> <span class="preprocessor">#define WM_AND 1</span>
-<a name="l00058"></a><a class="code" href="inspircd_8h.html#WM_5FOR">00058</a> <span class="preprocessor"></span><span class="preprocessor">#define WM_OR 2</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
-<a name="l00060"></a>00060 <span class="comment">// flags for use with OnUserPreMessage and OnUserPreNotice</span>
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="inspircd_8h.html#TYPE_5FUSER">00062</a> <span class="preprocessor">#define TYPE_USER 1</span>
-<a name="l00063"></a><a class="code" href="inspircd_8h.html#TYPE_5FCHANNEL">00063</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_CHANNEL 2</span>
-<a name="l00064"></a><a class="code" href="inspircd_8h.html#TYPE_5FSERVER">00064</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_SERVER 3</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span>
-<a name="l00066"></a><a class="code" href="inspircd_8h.html#IS_5FLOCAL_28x_29">00066</a> <span class="preprocessor">#define IS_LOCAL(x) (x-&gt;fd &gt; -1)</span>
-<a name="l00067"></a><a class="code" href="inspircd_8h.html#IS_5FREMOTE_28x_29">00067</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_REMOTE(x) (x-&gt;fd &lt; 0)</span>
-<a name="l00068"></a><a class="code" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">00068</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_MODULE_CREATED(x) (x-&gt;fd == FD_MAGIC_NUMBER)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>
-<a name="l00070"></a><a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">00070</a> <span class="keyword">typedef</span> void (<a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>) (<span class="keywordtype">char</span>**, int, <a class="code" href="classuserrec.html">userrec</a>*);
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="classserverstats.html">00072</a> <span class="keyword">class </span><a class="code" href="classserverstats.html">serverstats</a>
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">public</span>:
-<a name="l00075"></a><a class="code" href="classserverstats.html#statsAccept">00075</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsAccept">statsAccept</a>;
-<a name="l00076"></a><a class="code" href="classserverstats.html#statsRefused">00076</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRefused">statsRefused</a>;
-<a name="l00077"></a><a class="code" href="classserverstats.html#statsUnknown">00077</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a>;
-<a name="l00078"></a><a class="code" href="classserverstats.html#statsCollisions">00078</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>;
-<a name="l00079"></a><a class="code" href="classserverstats.html#statsDns">00079</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDns">statsDns</a>;
-<a name="l00080"></a><a class="code" href="classserverstats.html#statsDnsGood">00080</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a>;
-<a name="l00081"></a><a class="code" href="classserverstats.html#statsDnsBad">00081</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a>;
-<a name="l00082"></a><a class="code" href="classserverstats.html#statsConnects">00082</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsConnects">statsConnects</a>;
-<a name="l00083"></a><a class="code" href="classserverstats.html#statsSent">00083</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsSent">statsSent</a>;
-<a name="l00084"></a><a class="code" href="classserverstats.html#statsRecv">00084</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRecv">statsRecv</a>;
-<a name="l00085"></a>00085
-<a name="l00086"></a><a class="code" href="classserverstats.html#serverstats_28_29">00086</a> <a class="code" href="classserverstats.html#serverstats_28_29">serverstats</a>()
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
-<a name="l00090"></a>00090 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 };
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="classInspIRCd.html">00095</a> <span class="keyword">class </span><a class="code" href="classInspIRCd.html">InspIRCd</a>
-<a name="l00096"></a>00096 {
+<a name="l00049"></a>00049 <span class="comment">// some misc defines</span>
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="inspircd_8h.html#ERROR">00051</a> <span class="preprocessor">#define ERROR -1</span>
+<a name="l00052"></a><a class="code" href="inspircd_8h.html#TRUE">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
+<a name="l00053"></a><a class="code" href="inspircd_8h.html#FALSE">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define FALSE 0</span>
+<a name="l00054"></a><a class="code" href="inspircd_8h.html#MAXSOCKS">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXSOCKS 64</span>
+<a name="l00055"></a><a class="code" href="inspircd_8h.html#MAXCOMMAND">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define MAXCOMMAND 32</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 <span class="comment">/*</span>
+<a name="l00058"></a>00058 <span class="comment">flags for use with WriteMode</span>
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00060"></a>00060 <span class="comment">#define WM_AND 1</span>
+<a name="l00061"></a>00061 <span class="comment">#define WM_OR 2</span>
+<a name="l00062"></a>00062 <span class="comment"></span>
+<a name="l00063"></a>00063 <span class="comment">flags for use with OnUserPreMessage and OnUserPreNotice</span>
+<a name="l00064"></a>00064 <span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">#define TYPE_USER 1</span>
+<a name="l00066"></a>00066 <span class="comment">#define TYPE_CHANNEL 2</span>
+<a name="l00067"></a>00067 <span class="comment">#define TYPE_SERVER 3</span>
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">#define IS_LOCAL(x) (x-&gt;fd &gt; -1)</span>
+<a name="l00070"></a>00070 <span class="comment">#define IS_REMOTE(x) (x-&gt;fd &lt; 0)</span>
+<a name="l00071"></a>00071 <span class="comment">#define IS_MODULE_CREATED(x) (x-&gt;fd == FD_MAGIC_NUMBER)</span>
+<a name="l00072"></a>00072 <span class="comment">*/</span>
+<a name="l00073"></a>00073
+<a name="l00074"></a><a class="code" href="classserverstats.html">00074</a> <span class="keyword">class </span><a class="code" href="classserverstats.html">serverstats</a>
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keyword">public</span>:
+<a name="l00077"></a><a class="code" href="classserverstats.html#statsAccept">00077</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsAccept">statsAccept</a>;
+<a name="l00078"></a><a class="code" href="classserverstats.html#statsRefused">00078</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRefused">statsRefused</a>;
+<a name="l00079"></a><a class="code" href="classserverstats.html#statsUnknown">00079</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a>;
+<a name="l00080"></a><a class="code" href="classserverstats.html#statsCollisions">00080</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>;
+<a name="l00081"></a><a class="code" href="classserverstats.html#statsDns">00081</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDns">statsDns</a>;
+<a name="l00082"></a><a class="code" href="classserverstats.html#statsDnsGood">00082</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a>;
+<a name="l00083"></a><a class="code" href="classserverstats.html#statsDnsBad">00083</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a>;
+<a name="l00084"></a><a class="code" href="classserverstats.html#statsConnects">00084</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsConnects">statsConnects</a>;
+<a name="l00085"></a><a class="code" href="classserverstats.html#statsSent">00085</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsSent">statsSent</a>;
+<a name="l00086"></a><a class="code" href="classserverstats.html#statsRecv">00086</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#statsRecv">statsRecv</a>;
+<a name="l00087"></a><a class="code" href="classserverstats.html#BoundPortCount">00087</a> <span class="keywordtype">int</span> <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a>;
+<a name="l00088"></a>00088
+<a name="l00089"></a><a class="code" href="classserverstats.html#serverstats_28_29">00089</a> <a class="code" href="classserverstats.html#serverstats_28_29">serverstats</a>()
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <a class="code" href="classserverstats.html#statsAccept">statsAccept</a> = <a class="code" href="classserverstats.html#statsRefused">statsRefused</a> = <a class="code" href="classserverstats.html#statsUnknown">statsUnknown</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a> = <a class="code" href="classserverstats.html#statsDns">statsDns</a> = <a class="code" href="classserverstats.html#statsDnsGood">statsDnsGood</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classserverstats.html#statsDnsBad">statsDnsBad</a> = <a class="code" href="classserverstats.html#statsConnects">statsConnects</a> = <a class="code" href="classserverstats.html#statsSent">statsSent</a> = <a class="code" href="classserverstats.html#statsRecv">statsRecv</a> = 0;
+<a name="l00094"></a>00094 <a class="code" href="classserverstats.html#BoundPortCount">BoundPortCount</a> = 0;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 };
<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="keyword">private</span>:
-<a name="l00099"></a><a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">00099</a> <span class="keywordtype">char</span> <a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a>[MAXBUF];
-<a name="l00100"></a>00100 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a>(<span class="keywordtype">int</span> j);
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Fmodule_28int_20j_29">erase_module</a>(<span class="keywordtype">int</span> j);
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="keyword">public</span>:
-<a name="l00104"></a><a class="code" href="classInspIRCd.html#startup_5Ftime">00104</a> time_t <a class="code" href="classInspIRCd.html#startup_5Ftime">startup_time</a>;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a>();
-<a name="l00107"></a>00107 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00108"></a>00108 <span class="keywordtype">char</span>* <a class="code" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>();
-<a name="l00109"></a>00109 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
-<a name="l00110"></a>00110 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
-<a name="l00111"></a>00111 <a class="code" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
-<a name="l00112"></a>00112 <span class="keywordtype">int</span> <a class="code" href="classInspIRCd.html#Run_28_29">Run</a>();
+<a name="l00098"></a>00098
+<a name="l00099"></a><a class="code" href="classInspIRCd.html">00099</a> <span class="keyword">class </span><a class="code" href="classInspIRCd.html">InspIRCd</a>
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keyword">private</span>:
+<a name="l00103"></a><a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">00103</a> <span class="keywordtype">char</span> <a class="code" href="classInspIRCd.html#MODERR_5BMAXBUF_5D">MODERR</a>[MAXBUF];
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Ffactory_28int_20j_29">erase_factory</a>(<span class="keywordtype">int</span> j);
+<a name="l00105"></a>00105 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#erase_5Fmodule_28int_20j_29">erase_module</a>(<span class="keywordtype">int</span> j);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">public</span>:
+<a name="l00108"></a><a class="code" href="classInspIRCd.html#startup_5Ftime">00108</a> time_t <a class="code" href="classInspIRCd.html#startup_5Ftime">startup_time</a>;
+<a name="l00109"></a><a class="code" href="classInspIRCd.html#ModeGrok">00109</a> <a class="code" href="classModeParser.html">ModeParser</a>* <a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>;
+<a name="l00110"></a><a class="code" href="classInspIRCd.html#Parser">00110</a> CommandParser* <a class="code" href="classInspIRCd.html#Parser">Parser</a>;
+<a name="l00111"></a><a class="code" href="classInspIRCd.html#SE">00111</a> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="classInspIRCd.html#SE">SE</a>;
+<a name="l00112"></a><a class="code" href="classInspIRCd.html#stats">00112</a> <a class="code" href="classserverstats.html">serverstats</a>* <a class="code" href="classInspIRCd.html#stats">stats</a>;
<a name="l00113"></a>00113
-<a name="l00114"></a>00114 };
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="comment">/* prototypes */</span>
-<a name="l00117"></a>00117 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick);
-<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
-<a name="l00119"></a>00119 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
-<a name="l00120"></a>00120 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* commandname,<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00121"></a>00121 <span class="keywordtype">bool</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> * user);
-<a name="l00122"></a>00122 <span class="keywordtype">int</span> <a class="code" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">loop_call</a>(<a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> fn, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *u, <span class="keywordtype">int</span> start, <span class="keywordtype">int</span> end, <span class="keywordtype">int</span> joins);
-<a name="l00123"></a>00123 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u);
-<a name="l00124"></a>00124 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00125"></a>00125 <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New);
-<a name="l00126"></a>00126 <span class="comment">/* optimization tricks to save us walking the user hash */</span>
-<a name="l00127"></a>00127 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00128"></a>00128 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00129"></a>00129 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_version</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00130"></a>00130 <span class="comment">/* userrec optimization stuff */</span>
-<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
-<a name="l00132"></a>00132 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
-<a name="l00133"></a>00133 <span class="keywordtype">void</span>* <a class="code" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a>(<span class="keywordtype">void</span>* arg);
-<a name="l00134"></a>00134 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">process_buffer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* cmdbuf,<a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00135"></a>00135 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> <a class="code" href="classInspIRCd.html#MakeLowerMap_28_29">MakeLowerMap</a>();
+<a name="l00115"></a>00115 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetRevision_28_29">GetRevision</a>();
+<a name="l00116"></a>00116 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00117"></a>00117 <span class="keywordtype">char</span>* <a class="code" href="classInspIRCd.html#ModuleError_28_29">ModuleError</a>();
+<a name="l00118"></a>00118 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#LoadModule_28const_20char_20_2Afilename_29">LoadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
+<a name="l00119"></a>00119 <span class="keywordtype">bool</span> <a class="code" href="classInspIRCd.html#UnloadModule_28const_20char_20_2Afilename_29">UnloadModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename);
+<a name="l00120"></a>00120 <a class="code" href="classInspIRCd.html#InspIRCd_28int_20argc_2C_20char_20_2A_2Aargv_29">InspIRCd</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
+<a name="l00121"></a>00121 <span class="keywordtype">int</span> <a class="code" href="classInspIRCd.html#Run_28_29">Run</a>();
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 };
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="comment">/* userrec optimization stuff */</span>
+<a name="l00126"></a>00126 <span class="keywordtype">void</span> <a class="code" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername);
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inspircd_8h.html b/docs/module-doc/inspircd_8h.html
index 73e37bc94..196378c4b 100644
--- a/docs/module-doc/inspircd_8h.html
+++ b/docs/module-doc/inspircd_8h.html
@@ -23,32 +23,36 @@
<code>#include &lt;arpa/inet.h&gt;</code><br>
<code>#include &lt;deque&gt;</code><br>
<code>#include &quot;<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>&quot;</code><br>
-<code>#include &quot;inspircd_util.h&quot;</code><br>
<code>#include &quot;<a class="el" href="users_8h-source.html">users.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="channels_8h-source.html">channels.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="socket_8h-source.html">socket.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="mode_8h-source.html">mode.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="socketengine_8h-source.html">socketengine.h</a>&quot;</code><br>
+<code>#include &quot;command_parse.h&quot;</code><br>
<p>
Include dependency graph for inspircd.h:<p><center><img src="inspircd_8h__incl.gif" border="0" usemap="#inspircd.h_map" alt=""></center>
<map name="inspircd.h_map">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="139,615,235,642" alt="">
-<area href="users_8h-source.html" shape="rect" coords="155,868,219,895" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="292,868,377,895" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="151,463,223,490" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="153,442,249,468" alt="">
+<area href="users_8h-source.html" shape="rect" coords="332,290,396,316" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="461,188,547,215" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="165,644,237,671" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="168,290,235,316" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="145,492,257,519" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="inspircd_8h__dep__incl.gif" border="0" usemap="#inspircd.hdep_map" alt=""></center>
<map name="inspircd.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="469,83,568,110" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="469,260,568,287" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="315,362,400,388" alt="">
-<area href="socketengine_8cpp-source.html" shape="rect" coords="295,463,420,490" alt="">
-<area href="users_8cpp-source.html" shape="rect" coords="151,514,231,540" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="153,159,228,186" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="315,108,400,135" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="143,260,239,287" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="135,412,247,439" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="308,57,407,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="308,133,407,160" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="315,209,400,236" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="295,336,420,363" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="318,260,398,287" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="143,57,239,84" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="135,260,247,287" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="148,108,234,135" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="139,412,243,439" alt="">
</map>
<p>
@@ -70,60 +74,11 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#MAXCOMMAND">MAXCOMMAND</a>&nbsp;&nbsp;&nbsp;32</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#WM_5FAND">WM_AND</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#WM_5FOR">WM_OR</a>&nbsp;&nbsp;&nbsp;2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FUSER">TYPE_USER</a>&nbsp;&nbsp;&nbsp;1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FCHANNEL">TYPE_CHANNEL</a>&nbsp;&nbsp;&nbsp;2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#TYPE_5FSERVER">TYPE_SERVER</a>&nbsp;&nbsp;&nbsp;3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FLOCAL_28x_29">IS_LOCAL</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd &gt; -1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FREMOTE_28x_29">IS_REMOTE</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd &lt; 0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#IS_5FMODULE_5FCREATED_28x_29">IS_MODULE_CREATED</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd == FD_MAGIC_NUMBER)</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> )(char **, int, <a class="el" href="classuserrec.html">userrec</a> *)</td></tr>
-
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a> (const char *commandname, char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a> (const char *commandname, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29">loop_call</a> (<a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> fn, char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *u, int start, int end, int joins)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_version</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#AddServerName_28std_3A_3Astring_20servername_29">AddServerName</a> (<a class="el" href="namespaceirc.html#string">std::string</a> servername)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a> (<a class="el" href="namespaceirc.html#string">std::string</a> servername)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#dns_5Ftask_28void_20_2Aarg_29">dns_task</a> (void *arg)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29">process_buffer</a> (const char *cmdbuf, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="inspircd_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="ERROR"></a><!-- doxytag: member="inspircd.h::ERROR" ref="ERROR" args="" --><p>
@@ -148,9 +103,9 @@ This graph shows which files directly or indirectly include this file:<p><center
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00049">49</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
+Definition at line <a class="el" href="inspircd_8h-source.html#l00051">51</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="FALSE"></a><!-- doxytag: member="inspircd.h::FALSE" ref="FALSE" args="" --><p>
@@ -175,97 +130,7 @@ Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::In
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00051">51</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FLOCAL_28x_29"></a><!-- doxytag: member="inspircd.h::IS_LOCAL" ref="IS_5FLOCAL_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_LOCAL </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">x&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd &gt; -1)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00066">66</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FMODULE_5FCREATED_28x_29"></a><!-- doxytag: member="inspircd.h::IS_MODULE_CREATED" ref="IS_5FMODULE_5FCREATED_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_MODULE_CREATED </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">x&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd == FD_MAGIC_NUMBER)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00068">68</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="IS_5FREMOTE_28x_29"></a><!-- doxytag: member="inspircd.h::IS_REMOTE" ref="IS_5FREMOTE_28x_29" args="(x)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define IS_REMOTE </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">x&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd &lt; 0)</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00067">67</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00053">53</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MAXCOMMAND"></a><!-- doxytag: member="inspircd.h::MAXCOMMAND" ref="MAXCOMMAND" args="" --><p>
@@ -290,7 +155,7 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00067">67</a> of
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00053">53</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00055">55</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MAXSOCKS"></a><!-- doxytag: member="inspircd.h::MAXSOCKS" ref="MAXSOCKS" args="" --><p>
@@ -315,7 +180,7 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00053">53</a> of
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00052">52</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00054">54</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<a class="anchor" name="TRUE"></a><!-- doxytag: member="inspircd.h::TRUE" ref="TRUE" args="" --><p>
@@ -340,189 +205,10 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00052">52</a> of
<p>
<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00050">50</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FCHANNEL"></a><!-- doxytag: member="inspircd.h::TYPE_CHANNEL" ref="TYPE_5FCHANNEL" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_CHANNEL&nbsp;&nbsp;&nbsp;2 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00063">63</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FSERVER"></a><!-- doxytag: member="inspircd.h::TYPE_SERVER" ref="TYPE_5FSERVER" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_SERVER&nbsp;&nbsp;&nbsp;3 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00064">64</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="TYPE_5FUSER"></a><!-- doxytag: member="inspircd.h::TYPE_USER" ref="TYPE_5FUSER" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define TYPE_USER&nbsp;&nbsp;&nbsp;1 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00062">62</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="WM_5FAND"></a><!-- doxytag: member="inspircd.h::WM_AND" ref="WM_5FAND" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define WM_AND&nbsp;&nbsp;&nbsp;1 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00057">57</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="WM_5FOR"></a><!-- doxytag: member="inspircd.h::WM_OR" ref="WM_5FOR" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">#define WM_OR&nbsp;&nbsp;&nbsp;2 </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00058">58</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29"></a><!-- doxytag: member="inspircd.h::handlerfunc" ref="handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29" args=")(char **, int, userrec *)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef void( <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>)(char **, int, <a class="el" href="classuserrec.html">userrec</a> *) </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="inspircd_8h-source.html#l00070">70</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
+Definition at line <a class="el" href="inspircd_8h-source.html#l00052">52</a> of file <a class="el" href="inspircd_8h-source.html">inspircd.h</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
-<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void AddOper </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
<a class="anchor" name="AddServerName_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::AddServerName" ref="AddServerName_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -551,169 +237,6 @@ Definition at line <a class="el" href="inspircd_8h-source.html#l00070">70</a> of
</td>
</tr>
</table>
-<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="inspircd.h::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void AddWhoWas </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::call_handler" ref="call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(const char *commandname, char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void call_handler </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>commandname</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00401">Server::CallCommandHandler()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void ConnectUser </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void DeleteOper </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="dns_5Ftask_28void_20_2Aarg_29"></a><!-- doxytag: member="inspircd.h::dns_task" ref="dns_5Ftask_28void_20_2Aarg_29" args="(void *arg)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void* dns_task </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>arg</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
<a class="anchor" name="FindServerNamePtr_28std_3A_3Astring_20servername_29"></a><!-- doxytag: member="inspircd.h::FindServerNamePtr" ref="FindServerNamePtr_28std_3A_3Astring_20servername_29" args="(std::string servername)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -741,382 +264,10 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00401">Server::CallC
<p>
<p>
-Referenced by <a class="el" href="users_8cpp-source.html#l00036">userrec::userrec()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="inspircd.h::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void force_nickchange </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>newnick</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00386">Server::ChangeUserNick()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void FullConnectUser </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::handle_version" ref="handle_5Fversion_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_version </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::is_valid_cmd" ref="is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(const char *commandname, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool is_valid_cmd </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>commandname</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00406">Server::IsValidModuleCommand()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="inspircd.h::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void kill_link </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>r</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00391">Server::QuitUser()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="inspircd.h::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void kill_link_silent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>r</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29"></a><!-- doxytag: member="inspircd.h::loop_call" ref="loop_5Fcall_28handlerfunc_20fn_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Au_2C_20int_20start_2C_20int_20end_2C_20int_20joins_29" args="(handlerfunc fn, char **parameters, int pcnt, userrec *u, int start, int end, int joins)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int loop_call </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>fn</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>u</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>end</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>joins</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="inspircd.h::process_buffer" ref="process_5Fbuffer_28const_20char_20_2Acmdbuf_2C_20userrec_20_2Auser_29" args="(const char *cmdbuf, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void process_buffer </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>cmdbuf</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="inspircd.h::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
- <td class="mdname" nowrap> <em>Old</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>New</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="users_8cpp-source.html#l00063">userrec::userrec()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inspircd_8h__dep__incl.map b/docs/module-doc/inspircd_8h__dep__incl.map
index 280811f38..178f5356d 100644
--- a/docs/module-doc/inspircd_8h__dep__incl.map
+++ b/docs/module-doc/inspircd_8h__dep__incl.map
@@ -1,10 +1,10 @@
base referer
-rect $channels_8cpp-source.html 469,83 568,110
-rect $modules_8cpp-source.html 469,260 568,287
-rect $socket_8cpp-source.html 315,362 400,388
-rect $socketengine_8cpp-source.html 295,463 420,490
-rect $users_8cpp-source.html 151,514 231,540
-rect $ctables_8h-source.html 153,159 228,186
-rect $typedefs_8h-source.html 315,108 400,135
-rect $inspircd__io_8h-source.html 143,260 239,287
-rect $socketengine_8h-source.html 135,412 247,439
+rect $channels_8cpp-source.html 308,57 407,84
+rect $modules_8cpp-source.html 308,133 407,160
+rect $socket_8cpp-source.html 315,209 400,236
+rect $socketengine_8cpp-source.html 295,336 420,363
+rect $users_8cpp-source.html 318,260 398,287
+rect $inspircd__io_8h-source.html 143,57 239,84
+rect $socketengine_8h-source.html 135,260 247,287
+rect $typedefs_8h-source.html 148,108 234,135
+rect $userprocess_8h-source.html 139,412 243,439
diff --git a/docs/module-doc/inspircd_8h__dep__incl.md5 b/docs/module-doc/inspircd_8h__dep__incl.md5
index 5361c877a..adcc670cb 100644
--- a/docs/module-doc/inspircd_8h__dep__incl.md5
+++ b/docs/module-doc/inspircd_8h__dep__incl.md5
@@ -1 +1 @@
-782bd90da01c2446bdc3773deda660d0 \ No newline at end of file
+ad3d11c83e25465927be164f7731df76 \ No newline at end of file
diff --git a/docs/module-doc/inspircd_8h__incl.map b/docs/module-doc/inspircd_8h__incl.map
index c32bf91d7..94b220b67 100644
--- a/docs/module-doc/inspircd_8h__incl.map
+++ b/docs/module-doc/inspircd_8h__incl.map
@@ -1,5 +1,7 @@
base referer
-rect $inspircd__io_8h-source.html 139,615 235,642
-rect $users_8h-source.html 155,868 219,895
-rect $channels_8h-source.html 292,868 377,895
-rect $socket_8h-source.html 151,463 223,490
+rect $inspircd__io_8h-source.html 153,442 249,468
+rect $users_8h-source.html 332,290 396,316
+rect $channels_8h-source.html 461,188 547,215
+rect $socket_8h-source.html 165,644 237,671
+rect $mode_8h-source.html 168,290 235,316
+rect $socketengine_8h-source.html 145,492 257,519
diff --git a/docs/module-doc/inspircd_8h__incl.md5 b/docs/module-doc/inspircd_8h__incl.md5
index 00acfb0a8..7aeb9ace0 100644
--- a/docs/module-doc/inspircd_8h__incl.md5
+++ b/docs/module-doc/inspircd_8h__incl.md5
@@ -1 +1 @@
-8358cd32839305504555325b345eb8ff \ No newline at end of file
+c78ac143e7cad9df2d2ae01b74f98cc9 \ No newline at end of file
diff --git a/docs/module-doc/inspircd__io_8h-source.html b/docs/module-doc/inspircd__io_8h-source.html
index 0ffcac95f..15217e72c 100644
--- a/docs/module-doc/inspircd__io_8h-source.html
+++ b/docs/module-doc/inspircd__io_8h-source.html
@@ -31,126 +31,132 @@
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00028"></a><a class="code" href="inspircd__io_8h.html#DEBUG">00028</a> <span class="preprocessor">#define DEBUG 10</span>
-<a name="l00029"></a><a class="code" href="inspircd__io_8h.html#VERBOSE">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define VERBOSE 20</span>
-<a name="l00030"></a><a class="code" href="inspircd__io_8h.html#DEFAULT">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT 30</span>
-<a name="l00031"></a><a class="code" href="inspircd__io_8h.html#SPARSE">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define SPARSE 40</span>
-<a name="l00032"></a><a class="code" href="inspircd__io_8h.html#NONE">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define NONE 50</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00039"></a><a class="code" href="classServerConfig.html">00039</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">private</span>:
-<a name="l00047"></a><a class="code" href="classServerConfig.html#include_5Fstack">00047</a> std::vector&lt;std::string&gt; <a class="code" href="classServerConfig.html#include_5Fstack">include_stack</a>;
-<a name="l00048"></a>00048
-<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(<span class="keywordtype">char</span>* buffer, size_t maxsize, FILE* &amp;file);
-<a name="l00056"></a>00056
-<a name="l00061"></a>00061 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ConfProcess</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">long</span> linenumber, std::stringstream* errorstream, <span class="keywordtype">bool</span> &amp;error, <a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">public</span>:
-<a name="l00064"></a>00064
-<a name="l00068"></a><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">00068</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>[MAXBUF];
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="comment">/* Holds the network name the local server</span>
-<a name="l00071"></a>00071 <span class="comment"> * belongs to. This is an arbitary field defined</span>
-<a name="l00072"></a>00072 <span class="comment"> * by the administrator.</span>
-<a name="l00073"></a>00073 <span class="comment"> */</span>
-<a name="l00074"></a><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">00074</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>[MAXBUF];
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">00079</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>[MAXBUF];
-<a name="l00080"></a>00080
-<a name="l00084"></a><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">00084</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>[MAXBUF];
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">00089</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>[MAXBUF];
-<a name="l00090"></a>00090
-<a name="l00094"></a><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">00094</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>[MAXBUF];
-<a name="l00095"></a>00095
-<a name="l00098"></a><a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">00098</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a>[MAXBUF];
-<a name="l00099"></a>00099
-<a name="l00102"></a><a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">00102</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a>[MAXBUF];
-<a name="l00103"></a>00103
-<a name="l00107"></a><a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">00107</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">motd</a>[MAXBUF];
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">00112</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a>[MAXBUF];
-<a name="l00113"></a>00113
-<a name="l00116"></a><a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">00116</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">PrefixQuit</a>[MAXBUF];
-<a name="l00117"></a>00117
-<a name="l00121"></a><a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">00121</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a>[MAXBUF];
-<a name="l00122"></a>00122
-<a name="l00125"></a><a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">00125</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">DNSServer</a>[MAXBUF];
-<a name="l00126"></a>00126
-<a name="l00131"></a><a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">00131</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">DisabledCommands</a>[MAXBUF];
-<a name="l00132"></a>00132
-<a name="l00138"></a><a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ModPath</a>[1024];
-<a name="l00139"></a>00139
-<a name="l00143"></a><a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">00143</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">MyExecutable</a>[1024];
-<a name="l00144"></a>00144
-<a name="l00151"></a><a class="code" href="classServerConfig.html#log_5Ffile">00151</a> FILE *<a class="code" href="classServerConfig.html#log_5Ffile">log_file</a>;
-<a name="l00152"></a>00152
-<a name="l00158"></a><a class="code" href="classServerConfig.html#nofork">00158</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#nofork">nofork</a>;
-<a name="l00159"></a>00159
-<a name="l00166"></a><a class="code" href="classServerConfig.html#unlimitcore">00166</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#unlimitcore">unlimitcore</a>;
-<a name="l00167"></a>00167
-<a name="l00171"></a><a class="code" href="classServerConfig.html#AllowHalfop">00171</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AllowHalfop">AllowHalfop</a>;
-<a name="l00172"></a>00172
-<a name="l00176"></a><a class="code" href="classServerConfig.html#dns_5Ftimeout">00176</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
-<a name="l00177"></a>00177
-<a name="l00182"></a><a class="code" href="classServerConfig.html#NetBufferSize">00182</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#NetBufferSize">NetBufferSize</a>;
-<a name="l00183"></a>00183
-<a name="l00187"></a><a class="code" href="classServerConfig.html#MaxConn">00187</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxConn">MaxConn</a>;
-<a name="l00188"></a>00188
-<a name="l00193"></a><a class="code" href="classServerConfig.html#SoftLimit">00193</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>;
-<a name="l00194"></a>00194
-<a name="l00198"></a><a class="code" href="classServerConfig.html#MaxWhoResults">00198</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxWhoResults">MaxWhoResults</a>;
-<a name="l00199"></a>00199
-<a name="l00202"></a><a class="code" href="classServerConfig.html#debugging">00202</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#debugging">debugging</a>;
-<a name="l00203"></a>00203
-<a name="l00206"></a><a class="code" href="classServerConfig.html#LogLevel">00206</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#LogLevel">LogLevel</a>;
-<a name="l00207"></a>00207
-<a name="l00211"></a><a class="code" href="classServerConfig.html#DieDelay">00211</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#DieDelay">DieDelay</a>;
-<a name="l00212"></a>00212
-<a name="l00216"></a><a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">00216</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a>[MAXBUF][255];
-<a name="l00217"></a>00217
-<a name="l00220"></a><a class="code" href="classServerConfig.html#MOTD">00220</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#MOTD">MOTD</a>;
-<a name="l00221"></a>00221
-<a name="l00224"></a><a class="code" href="classServerConfig.html#RULES">00224</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#RULES">RULES</a>;
-<a name="l00225"></a>00225
-<a name="l00229"></a><a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">00229</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">PID</a>[1024];
-<a name="l00230"></a>00230
-<a name="l00238"></a><a class="code" href="classServerConfig.html#config_5Ff">00238</a> std::stringstream <a class="code" href="classServerConfig.html#config_5Ff">config_f</a>;
-<a name="l00239"></a>00239
-<a name="l00242"></a><a class="code" href="classServerConfig.html#Classes">00242</a> <a class="code" href="users_8h.html#ClassVector">ClassVector</a> <a class="code" href="classServerConfig.html#Classes">Classes</a>;
-<a name="l00243"></a>00243
-<a name="l00247"></a><a class="code" href="classServerConfig.html#module_5Fnames">00247</a> std::vector&lt;std::string&gt; <a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>;
-<a name="l00248"></a>00248
-<a name="l00251"></a><a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">00251</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a>[255];
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <a class="code" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>();
-<a name="l00254"></a>00254
-<a name="l00258"></a>00258 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00026"></a>00026
+<a name="l00029"></a><a class="code" href="inspircd__io_8h.html#DEBUG">00029</a> <span class="preprocessor">#define DEBUG 10</span>
+<a name="l00030"></a><a class="code" href="inspircd__io_8h.html#VERBOSE">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define VERBOSE 20</span>
+<a name="l00031"></a><a class="code" href="inspircd__io_8h.html#DEFAULT">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT 30</span>
+<a name="l00032"></a><a class="code" href="inspircd__io_8h.html#SPARSE">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define SPARSE 40</span>
+<a name="l00033"></a><a class="code" href="inspircd__io_8h.html#NONE">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define NONE 50</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00040"></a><a class="code" href="classServerConfig.html">00040</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keyword">private</span>:
+<a name="l00048"></a><a class="code" href="classServerConfig.html#include_5Fstack">00048</a> std::vector&lt;std::string&gt; <a class="code" href="classServerConfig.html#include_5Fstack">include_stack</a>;
+<a name="l00049"></a>00049
+<a name="l00056"></a>00056 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#fgets_5Fsafe_28char_20_2Abuffer_2C_20size_5Ft_20maxsize_2C_20FILE_20_2A_26file_29">fgets_safe</a>(<span class="keywordtype">char</span>* buffer, size_t maxsize, FILE* &amp;file);
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServerConfig.html#ConfProcess_28char_20_2Abuffer_2C_20long_20linenumber_2C_20std_3A_3Astringstream_20_2Aerrorstream_2C_20bool_20_26error_2C_20std_3A_3Astring_20filename_29">ConfProcess</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">long</span> linenumber, std::stringstream* errorstream, <span class="keywordtype">bool</span> &amp;error, <a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">public</span>:
+<a name="l00065"></a>00065
+<a name="l00069"></a><a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">00069</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>[MAXBUF];
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="comment">/* Holds the network name the local server</span>
+<a name="l00072"></a>00072 <span class="comment"> * belongs to. This is an arbitary field defined</span>
+<a name="l00073"></a>00073 <span class="comment"> * by the administrator.</span>
+<a name="l00074"></a>00074 <span class="comment"> */</span>
+<a name="l00075"></a><a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">00075</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>[MAXBUF];
+<a name="l00076"></a>00076
+<a name="l00080"></a><a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">00080</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>[MAXBUF];
+<a name="l00081"></a>00081
+<a name="l00085"></a><a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">00085</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>[MAXBUF];
+<a name="l00086"></a>00086
+<a name="l00090"></a><a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">00090</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>[MAXBUF];
+<a name="l00091"></a>00091
+<a name="l00095"></a><a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">00095</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>[MAXBUF];
+<a name="l00096"></a>00096
+<a name="l00099"></a><a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">00099</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#diepass_5BMAXBUF_5D">diepass</a>[MAXBUF];
+<a name="l00100"></a>00100
+<a name="l00103"></a><a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">00103</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#restartpass_5BMAXBUF_5D">restartpass</a>[MAXBUF];
+<a name="l00104"></a>00104
+<a name="l00108"></a><a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">00108</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#motd_5BMAXBUF_5D">motd</a>[MAXBUF];
+<a name="l00109"></a>00109
+<a name="l00113"></a><a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">00113</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#rules_5BMAXBUF_5D">rules</a>[MAXBUF];
+<a name="l00114"></a>00114
+<a name="l00117"></a><a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">00117</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PrefixQuit_5BMAXBUF_5D">PrefixQuit</a>[MAXBUF];
+<a name="l00118"></a>00118
+<a name="l00122"></a><a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">00122</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DieValue_5BMAXBUF_5D">DieValue</a>[MAXBUF];
+<a name="l00123"></a>00123
+<a name="l00126"></a><a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">00126</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DNSServer_5BMAXBUF_5D">DNSServer</a>[MAXBUF];
+<a name="l00127"></a>00127
+<a name="l00132"></a><a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">00132</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#DisabledCommands_5BMAXBUF_5D">DisabledCommands</a>[MAXBUF];
+<a name="l00133"></a>00133
+<a name="l00139"></a><a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">00139</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#ModPath_5B_31_30_32_34_5D">ModPath</a>[1024];
+<a name="l00140"></a>00140
+<a name="l00144"></a><a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">00144</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#MyExecutable_5B_31_30_32_34_5D">MyExecutable</a>[1024];
+<a name="l00145"></a>00145
+<a name="l00152"></a><a class="code" href="classServerConfig.html#log_5Ffile">00152</a> FILE *<a class="code" href="classServerConfig.html#log_5Ffile">log_file</a>;
+<a name="l00153"></a>00153
+<a name="l00159"></a><a class="code" href="classServerConfig.html#nofork">00159</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#nofork">nofork</a>;
+<a name="l00160"></a>00160
+<a name="l00167"></a><a class="code" href="classServerConfig.html#unlimitcore">00167</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#unlimitcore">unlimitcore</a>;
+<a name="l00168"></a>00168
+<a name="l00172"></a><a class="code" href="classServerConfig.html#AllowHalfop">00172</a> <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AllowHalfop">AllowHalfop</a>;
+<a name="l00173"></a>00173
+<a name="l00177"></a><a class="code" href="classServerConfig.html#dns_5Ftimeout">00177</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00178"></a>00178
+<a name="l00183"></a><a class="code" href="classServerConfig.html#NetBufferSize">00183</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#NetBufferSize">NetBufferSize</a>;
+<a name="l00184"></a>00184
+<a name="l00188"></a><a class="code" href="classServerConfig.html#MaxConn">00188</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxConn">MaxConn</a>;
+<a name="l00189"></a>00189
+<a name="l00194"></a><a class="code" href="classServerConfig.html#SoftLimit">00194</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>;
+<a name="l00195"></a>00195
+<a name="l00199"></a><a class="code" href="classServerConfig.html#MaxWhoResults">00199</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#MaxWhoResults">MaxWhoResults</a>;
+<a name="l00200"></a>00200
+<a name="l00203"></a><a class="code" href="classServerConfig.html#debugging">00203</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#debugging">debugging</a>;
+<a name="l00204"></a>00204
+<a name="l00207"></a><a class="code" href="classServerConfig.html#LogLevel">00207</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#LogLevel">LogLevel</a>;
+<a name="l00208"></a>00208
+<a name="l00212"></a><a class="code" href="classServerConfig.html#DieDelay">00212</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#DieDelay">DieDelay</a>;
+<a name="l00213"></a>00213
+<a name="l00217"></a><a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">00217</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#addrs_5BMAXBUF_5D_5B_32_35_35_5D">addrs</a>[MAXBUF][255];
+<a name="l00218"></a>00218
+<a name="l00221"></a><a class="code" href="classServerConfig.html#MOTD">00221</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#MOTD">MOTD</a>;
+<a name="l00222"></a>00222
+<a name="l00225"></a><a class="code" href="classServerConfig.html#RULES">00225</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classServerConfig.html#RULES">RULES</a>;
+<a name="l00226"></a>00226
+<a name="l00230"></a><a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">00230</a> <span class="keywordtype">char</span> <a class="code" href="classServerConfig.html#PID_5B_31_30_32_34_5D">PID</a>[1024];
+<a name="l00231"></a>00231
+<a name="l00239"></a><a class="code" href="classServerConfig.html#config_5Ff">00239</a> std::stringstream <a class="code" href="classServerConfig.html#config_5Ff">config_f</a>;
+<a name="l00240"></a>00240
+<a name="l00243"></a><a class="code" href="classServerConfig.html#Classes">00243</a> <a class="code" href="users_8h.html#ClassVector">ClassVector</a> <a class="code" href="classServerConfig.html#Classes">Classes</a>;
+<a name="l00244"></a>00244
+<a name="l00248"></a><a class="code" href="classServerConfig.html#module_5Fnames">00248</a> std::vector&lt;std::string&gt; <a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>;
+<a name="l00249"></a>00249
+<a name="l00252"></a><a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">00252</a> <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ports_5B_32_35_35_5D">ports</a>[255];
+<a name="l00253"></a>00253
+<a name="l00256"></a><a class="code" href="classServerConfig.html#IOHookModule">00256</a> std::map&lt;int,Module*&gt; <a class="code" href="classServerConfig.html#IOHookModule">IOHookModule</a>;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <a class="code" href="classServerConfig.html#ServerConfig_28_29">ServerConfig</a>();
<a name="l00259"></a>00259
-<a name="l00264"></a>00264 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, std::stringstream *target, std::stringstream* errorstream);
-<a name="l00267"></a>00267 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="keywordtype">char</span>* tag, <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result, std::stringstream *config);
-<a name="l00268"></a>00268 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keyword">const</span> <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result);
-<a name="l00269"></a>00269 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(<span class="keywordtype">char</span>* tag,std::stringstream *config);
-<a name="l00270"></a>00270 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag);
-<a name="l00271"></a>00271 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, <span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keywordtype">int</span> index);
-<a name="l00272"></a>00272 };
-<a name="l00273"></a>00273
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Exit_28int_29">Exit</a> (<span class="keywordtype">int</span>);
-<a name="l00276"></a>00276 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Start_28void_29">Start</a> (<span class="keywordtype">void</span>);
-<a name="l00277"></a>00277 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#DaemonSeed_28void_29">DaemonSeed</a> (<span class="keywordtype">void</span>);
-<a name="l00278"></a>00278 <span class="keywordtype">bool</span> <a class="code" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">FileExists</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* file);
-<a name="l00279"></a>00279 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a> (<span class="keywordtype">void</span>);
-<a name="l00280"></a>00280 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a> (<span class="keywordtype">int</span> sockfd, <span class="keyword">struct</span> sockaddr_in client, <span class="keyword">struct</span> sockaddr_in server, <span class="keywordtype">int</span> port, <span class="keywordtype">char</span>* addr);
-<a name="l00281"></a>00281 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#WritePID_28std_3A_3Astring_20filename_29">WritePID</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l00282"></a>00282 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindPorts_28_29">BindPorts</a>();
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00263"></a>00263 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00264"></a>00264
+<a name="l00269"></a>00269 <span class="keywordtype">void</span> <a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename, std::stringstream *target, std::stringstream* errorstream);
+<a name="l00272"></a>00272 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="keywordtype">char</span>* tag, <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result, std::stringstream *config);
+<a name="l00273"></a>00273 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keyword">const</span> <span class="keywordtype">char</span>* var, <span class="keywordtype">int</span> index, <span class="keywordtype">char</span> *result);
+<a name="l00274"></a>00274 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#ConfValueEnum_28char_20_2Atag_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValueEnum</a>(<span class="keywordtype">char</span>* tag,std::stringstream *config);
+<a name="l00275"></a>00275 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(std::stringstream *<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>,<span class="keyword">const</span> <span class="keywordtype">char</span>* tag);
+<a name="l00276"></a>00276 <span class="keywordtype">int</span> <a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(std::stringstream *config, <span class="keyword">const</span> <span class="keywordtype">char</span>* tag, <span class="keywordtype">int</span> index);
+<a name="l00277"></a>00277 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(<span class="keywordtype">int</span> port);
+<a name="l00278"></a>00278 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#AddIOHook_28int_20port_2C_20Module_20_2Aiomod_29">AddIOHook</a>(<span class="keywordtype">int</span> port, <a class="code" href="classModule.html">Module</a>* iomod);
+<a name="l00279"></a>00279 <span class="keywordtype">bool</span> <a class="code" href="classServerConfig.html#DelIOHook_28int_20port_29">DelIOHook</a>(<span class="keywordtype">int</span> port);
+<a name="l00280"></a>00280 };
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Exit_28int_29">Exit</a> (<span class="keywordtype">int</span>);
+<a name="l00284"></a>00284 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#Start_28void_29">Start</a> (<span class="keywordtype">void</span>);
+<a name="l00285"></a>00285 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#DaemonSeed_28void_29">DaemonSeed</a> (<span class="keywordtype">void</span>);
+<a name="l00286"></a>00286 <span class="keywordtype">bool</span> <a class="code" href="inspircd__io_8h.html#FileExists_28const_20char_20_2Afile_29">FileExists</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* file);
+<a name="l00287"></a>00287 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a> (<span class="keywordtype">void</span>);
+<a name="l00288"></a>00288 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a> (<span class="keywordtype">int</span> sockfd, <span class="keyword">struct</span> sockaddr_in client, <span class="keyword">struct</span> sockaddr_in server, <span class="keywordtype">int</span> port, <span class="keywordtype">char</span>* addr);
+<a name="l00289"></a>00289 <span class="keywordtype">void</span> <a class="code" href="inspircd__io_8h.html#WritePID_28std_3A_3Astring_20filename_29">WritePID</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l00290"></a>00290 <span class="keywordtype">int</span> <a class="code" href="inspircd__io_8h.html#BindPorts_28_29">BindPorts</a>();
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inspircd__io_8h.html b/docs/module-doc/inspircd__io_8h.html
index 0a4cb293e..25d103c38 100644
--- a/docs/module-doc/inspircd__io_8h.html
+++ b/docs/module-doc/inspircd__io_8h.html
@@ -12,21 +12,28 @@
<code>#include &lt;vector&gt;</code><br>
<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="globals_8h-source.html">globals.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="modules_8h-source.html">modules.h</a>&quot;</code><br>
<p>
Include dependency graph for inspircd_io.h:<p><center><img src="inspircd__io_8h__incl.gif" border="0" usemap="#inspircd_io.h_map" alt=""></center>
<map name="inspircd_io.h_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="153,159,233,186" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="156,210,231,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="156,209,236,236" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="159,159,234,185" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="155,57,238,84" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="inspircd__io_8h__dep__incl.gif" border="0" usemap="#inspircd_io.hdep_map" alt=""></center>
<map name="inspircd_io.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="283,20,381,47" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="283,96,381,123" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="289,147,375,173" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="153,57,233,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="455,58,553,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="455,235,553,262" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="461,463,547,490" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="153,286,233,312" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="441,387,567,414" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="464,311,544,338" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="281,362,393,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="295,260,380,287" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="285,159,389,186" alt="">
</map>
<p>
@@ -91,9 +98,9 @@ Flags for use with <a class="el" href="globals_8h.html#log_28int_20level_2C_20ch
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00028">28</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00029">29</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="channels_8cpp-source.html#l00167">chanrec::AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00173">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="socket_8cpp-source.html#l00158">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00122">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00086">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00111">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00248">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00292">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>, <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, <a class="el" href="channels_8cpp-source.html#l00166">chanrec::AddUser()</a>, <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="channels_8cpp-source.html#l00172">chanrec::DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="socket_8cpp-source.html#l00155">InspSocket::Read()</a>, <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>, <a class="el" href="users_8cpp-source.html#l00148">userrec::RemoveInvite()</a>, <a class="el" href="channels_8cpp-source.html#l00085">chanrec::SetCustomMode()</a>, <a class="el" href="channels_8cpp-source.html#l00110">chanrec::SetCustomModeParam()</a>, <a class="el" href="socket_8cpp-source.html#l00247">InspSocket::SetState()</a>, <a class="el" href="users_8cpp-source.html#l00317">userrec::SetWriteError()</a>, <a class="el" href="socketengine_8cpp-source.html#l00035">SocketEngine::SocketEngine()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00046">SocketEngine::~SocketEngine()</a>. </td>
</tr>
</table>
<a class="anchor" name="DEFAULT"></a><!-- doxytag: member="inspircd_io.h::DEFAULT" ref="DEFAULT" args="" --><p>
@@ -118,9 +125,9 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00030">30</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00031">31</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="NONE"></a><!-- doxytag: member="inspircd_io.h::NONE" ref="NONE" args="" --><p>
@@ -145,7 +152,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00032">32</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00033">33</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="SPARSE"></a><!-- doxytag: member="inspircd_io.h::SPARSE" ref="SPARSE" args="" --><p>
@@ -170,7 +177,7 @@ Definition at line <a class="el" href="inspircd__io_8h-source.html#l00032">32</a
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00031">31</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00032">32</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<a class="anchor" name="VERBOSE"></a><!-- doxytag: member="inspircd_io.h::VERBOSE" ref="VERBOSE" args="" --><p>
@@ -195,7 +202,7 @@ Definition at line <a class="el" href="inspircd__io_8h-source.html#l00031">31</a
<p>
<p>
-Definition at line <a class="el" href="inspircd__io_8h-source.html#l00029">29</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
+Definition at line <a class="el" href="inspircd__io_8h-source.html#l00030">30</a> of file <a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
@@ -280,7 +287,7 @@ Definition at line <a class="el" href="inspircd__io_8h-source.html#l00029">29</a
<p>
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="DaemonSeed_28void_29"></a><!-- doxytag: member="inspircd_io.h::DaemonSeed" ref="DaemonSeed_28void_29" args="(void)" --><p>
@@ -394,7 +401,7 @@ Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::In
<p>
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::InspSocket()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00059">InspSocket::InspSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="Start_28void_29"></a><!-- doxytag: member="inspircd_io.h::Start" ref="Start_28void_29" args="(void)" --><p>
@@ -453,7 +460,7 @@ Referenced by <a class="el" href="socket_8cpp-source.html#l00062">InspSocket::In
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/inspircd__io_8h__dep__incl.map b/docs/module-doc/inspircd__io_8h__dep__incl.map
index 1b2fd55bc..5f7a6c3f7 100644
--- a/docs/module-doc/inspircd__io_8h__dep__incl.map
+++ b/docs/module-doc/inspircd__io_8h__dep__incl.map
@@ -1,5 +1,10 @@
base referer
-rect $channels_8cpp-source.html 283,20 381,47
-rect $modules_8cpp-source.html 283,96 381,123
-rect $socket_8cpp-source.html 289,147 375,173
-rect $inspircd_8h-source.html 153,57 233,84
+rect $channels_8cpp-source.html 455,58 553,84
+rect $modules_8cpp-source.html 455,235 553,262
+rect $socket_8cpp-source.html 461,463 547,490
+rect $inspircd_8h-source.html 153,286 233,312
+rect $socketengine_8cpp-source.html 441,387 567,414
+rect $users_8cpp-source.html 464,311 544,338
+rect $socketengine_8h-source.html 281,362 393,388
+rect $typedefs_8h-source.html 295,260 380,287
+rect $userprocess_8h-source.html 285,159 389,186
diff --git a/docs/module-doc/inspircd__io_8h__dep__incl.md5 b/docs/module-doc/inspircd__io_8h__dep__incl.md5
index dcdb730b7..d32608fc2 100644
--- a/docs/module-doc/inspircd__io_8h__dep__incl.md5
+++ b/docs/module-doc/inspircd__io_8h__dep__incl.md5
@@ -1 +1 @@
-722bc875f4773acca578188c1eaafc53 \ No newline at end of file
+f69ba85152f09a6ee03d3d86a8d8993d \ No newline at end of file
diff --git a/docs/module-doc/inspircd__io_8h__incl.map b/docs/module-doc/inspircd__io_8h__incl.map
index 51ab7577f..37dd7fbc2 100644
--- a/docs/module-doc/inspircd__io_8h__incl.map
+++ b/docs/module-doc/inspircd__io_8h__incl.map
@@ -1,3 +1,4 @@
base referer
-rect $inspircd_8h-source.html 153,159 233,186
-rect $globals_8h-source.html 156,210 231,236
+rect $inspircd_8h-source.html 156,209 236,236
+rect $globals_8h-source.html 159,159 234,185
+rect $modules_8h-source.html 155,57 238,84
diff --git a/docs/module-doc/inspircd__io_8h__incl.md5 b/docs/module-doc/inspircd__io_8h__incl.md5
index 8a137bb78..ba3286ffc 100644
--- a/docs/module-doc/inspircd__io_8h__incl.md5
+++ b/docs/module-doc/inspircd__io_8h__incl.md5
@@ -1 +1 @@
-a89903b24a07224b6560b828285cf5bb \ No newline at end of file
+c18e01279feebe46cef6ba0a08a63a37 \ No newline at end of file
diff --git a/docs/module-doc/main.html b/docs/module-doc/main.html
index daa5e6b36..6ebc47e66 100644
--- a/docs/module-doc/main.html
+++ b/docs/module-doc/main.html
@@ -7,7 +7,7 @@
<div class="qindex"><a class="qindexHL" 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>
<h1>InspIRCd Documentation</h1>
<p>
-<h3 align="center">1.0Betareleases </h3><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<h3 align="center">1.0Betareleases </h3><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/message_8h-source.html b/docs/module-doc/message_8h-source.html
index b4747be45..bfcb5e8ac 100644
--- a/docs/module-doc/message_8h-source.html
+++ b/docs/module-doc/message_8h-source.html
@@ -57,7 +57,7 @@
<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="message_8h.html#send_5Fnetwork_5Fquit_28const_20char_20_2Anick_2C_20const_20char_20_2Areason_29">send_network_quit</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* nick, <span class="keyword">const</span> <span class="keywordtype">char</span>* reason);
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/message_8h.html b/docs/module-doc/message_8h.html
index 0faeacf22..e28cd9bcc 100644
--- a/docs/module-doc/message_8h.html
+++ b/docs/module-doc/message_8h.html
@@ -20,15 +20,17 @@
Include dependency graph for message.h:<p><center><img src="message_8h__incl.gif" border="0" usemap="#message.h_map" alt=""></center>
<map name="message.h_map">
<area href="users_8h-source.html" shape="rect" coords="148,260,212,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="272,210,357,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="265,362,364,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="272,209,357,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="265,412,364,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="268,311,361,337" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="message_8h__dep__incl.gif" border="0" usemap="#message.hdep_map" alt=""></center>
<map name="message.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="144,7,243,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="144,58,243,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="144,7,243,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="144,57,243,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="154,108,234,135" alt="">
</map>
<p>
@@ -165,7 +167,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00494">Server::ChangeHost()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00493">Server::ChangeHost()</a>. </td>
</tr>
</table>
<a class="anchor" name="ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29"></a><!-- doxytag: member="message.h::ChangeName" ref="ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29" args="(userrec *user, const char *gecos)" --><p>
@@ -204,7 +206,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00494">Server::Chang
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00499">Server::ChangeGECOS()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00498">Server::ChangeGECOS()</a>. </td>
</tr>
</table>
<a class="anchor" name="chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29"></a><!-- doxytag: member="message.h::chlist" ref="chlist_28userrec_20_2Auser_2C_20userrec_20_2Asource_29" args="(userrec *user, userrec *source)" --><p>
@@ -458,7 +460,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel
<p>
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00529">Server::IsOnChannel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="modules_8cpp-source.html#l00528">Server::IsOnChannel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
</table>
<a class="anchor" name="hasumode_28userrec_20_2Auser_2C_20char_20mode_29"></a><!-- doxytag: member="message.h::hasumode" ref="hasumode_28userrec_20_2Auser_2C_20char_20mode_29" args="(userrec *user, char mode)" --><p>
@@ -675,7 +677,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel(
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/message_8h__dep__incl.map b/docs/module-doc/message_8h__dep__incl.map
index e26cc9746..cdf27ce97 100644
--- a/docs/module-doc/message_8h__dep__incl.map
+++ b/docs/module-doc/message_8h__dep__incl.map
@@ -1,3 +1,4 @@
base referer
-rect $channels_8cpp-source.html 144,7 243,34
-rect $modules_8cpp-source.html 144,58 243,84
+rect $channels_8cpp-source.html 144,7 243,33
+rect $modules_8cpp-source.html 144,57 243,84
+rect $users_8cpp-source.html 154,108 234,135
diff --git a/docs/module-doc/message_8h__dep__incl.md5 b/docs/module-doc/message_8h__dep__incl.md5
index ea427afd1..9677d7a7c 100644
--- a/docs/module-doc/message_8h__dep__incl.md5
+++ b/docs/module-doc/message_8h__dep__incl.md5
@@ -1 +1 @@
-5798528055639d3c9fa4c0dd420993b1 \ No newline at end of file
+2920c49d06760a3a8744ed87304dc5db \ No newline at end of file
diff --git a/docs/module-doc/message_8h__incl.map b/docs/module-doc/message_8h__incl.map
index 384780910..5e825e450 100644
--- a/docs/module-doc/message_8h__incl.map
+++ b/docs/module-doc/message_8h__incl.map
@@ -1,4 +1,5 @@
base referer
rect $users_8h-source.html 148,260 212,287
-rect $channels_8h-source.html 272,210 357,236
-rect $connection_8h-source.html 265,362 364,388
+rect $channels_8h-source.html 272,209 357,236
+rect $connection_8h-source.html 265,412 364,439
+rect $hashcomp_8h-source.html 268,311 361,337
diff --git a/docs/module-doc/message_8h__incl.md5 b/docs/module-doc/message_8h__incl.md5
index 724dbb712..2d2990c8f 100644
--- a/docs/module-doc/message_8h__incl.md5
+++ b/docs/module-doc/message_8h__incl.md5
@@ -1 +1 @@
-3a2c4208881b372cdcae2d492b4dfb49 \ No newline at end of file
+ea36c3bc5c3e318c0edcaea3bd1ee778 \ No newline at end of file
diff --git a/docs/module-doc/mode_8h-source.html b/docs/module-doc/mode_8h-source.html
index d82d7b6b3..ac7034b69 100644
--- a/docs/module-doc/mode_8h-source.html
+++ b/docs/module-doc/mode_8h-source.html
@@ -36,26 +36,36 @@
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="channels_8h.html">channels.h</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_ops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00032"></a>00032 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_hops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00033"></a>00033 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_voice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00034"></a>00034 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00035"></a>00035 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_hops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00036"></a>00036 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_voice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00037"></a>00037 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">add_ban</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00038"></a>00038 <span class="keywordtype">char</span>* <a class="code" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ban</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
-<a name="l00039"></a>00039 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">process_modes</a>(<span class="keywordtype">char</span> **parameters,<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status, <span class="keywordtype">int</span> pcnt, <span class="keywordtype">bool</span> servermode, <span class="keywordtype">bool</span> silent, <span class="keywordtype">bool</span> local);
-<a name="l00040"></a>00040 <span class="keywordtype">bool</span> <a class="code" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">allowed_umode</a>(<span class="keywordtype">char</span> umode, <span class="keywordtype">char</span>* sourcemodes,<span class="keywordtype">bool</span> adding);
-<a name="l00041"></a>00041 <span class="keywordtype">bool</span> <a class="code" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">process_module_umode</a>(<span class="keywordtype">char</span> umode, <a class="code" href="classuserrec.html">userrec</a>* source, <span class="keywordtype">void</span>* dest, <span class="keywordtype">bool</span> adding);
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00043"></a>00043 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">merge_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt);
-<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">merge_mode2</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00031"></a>00031
+<a name="l00032"></a><a class="code" href="classModeParser.html">00032</a> <span class="keyword">class </span><a class="code" href="classModeParser.html">ModeParser</a>
+<a name="l00033"></a>00033 {
+<a name="l00034"></a>00034 <span class="keyword">private</span>:
+<a name="l00035"></a>00035 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveOps</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00036"></a>00036 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveHops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00037"></a>00037 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#GiveVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">GiveVoice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00038"></a>00038 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeOps_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeOps</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00039"></a>00039 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeHops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeHops</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00040"></a>00040 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeVoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeVoice</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00041"></a>00041 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#AddBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">AddBan</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00042"></a>00042 <span class="keywordtype">char</span>* <a class="code" href="classModeParser.html#TakeBan_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">TakeBan</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keywordtype">char</span> *dest,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status);
+<a name="l00043"></a>00043 <span class="keyword">public</span>:
+<a name="l00044"></a>00044 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classModeParser.html#CompressModes_28std_3A_3Astring_20modes_2C_20bool_20channelmodes_29">CompressModes</a>(<a class="code" href="namespaceirc.html#string">std::string</a> modes,<span class="keywordtype">bool</span> channelmodes);
+<a name="l00045"></a>00045 <span class="keywordtype">void</span> <a class="code" href="classModeParser.html#ProcessModes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">ProcessModes</a>(<span class="keywordtype">char</span> **parameters,<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="classchanrec.html">chanrec</a> *chan,<span class="keywordtype">int</span> status, <span class="keywordtype">int</span> pcnt, <span class="keywordtype">bool</span> servermode, <span class="keywordtype">bool</span> silent, <span class="keywordtype">bool</span> local);
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> <a class="code" href="classModeParser.html#AllowedUmode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_2C_20bool_20serveroverride_29">AllowedUmode</a>(<span class="keywordtype">char</span> umode, <span class="keywordtype">char</span>* sourcemodes,<span class="keywordtype">bool</span> adding,<span class="keywordtype">bool</span> serveroverride);
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> <a class="code" href="classModeParser.html#ProcessModuleUmode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">ProcessModuleUmode</a>(<span class="keywordtype">char</span> umode, <a class="code" href="classuserrec.html">userrec</a>* source, <span class="keywordtype">void</span>* dest, <span class="keywordtype">bool</span> adding);
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="classcmd__mode.html">00051</a> <span class="keyword">class </span><a class="code" href="classcmd__mode.html">cmd_mode</a> : <span class="keyword">public</span> <a class="code" href="classcommand__t.html">command_t</a>
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <span class="keyword">public</span>:
+<a name="l00054"></a><a class="code" href="classcmd__mode.html#cmd_5Fmode_28_29">00054</a> <a class="code" href="classcmd__mode.html#cmd_5Fmode_28_29">cmd_mode</a> () : <a class="code" href="classcommand__t.html">command_t</a>(<span class="stringliteral">"MODE"</span>,0,1) { }
+<a name="l00055"></a>00055 <span class="keywordtype">void</span> <a class="code" href="classcmd__mode.html#Handle_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Handle</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/mode_8h.html b/docs/module-doc/mode_8h.html
index abfd7bab8..cb57105a5 100644
--- a/docs/module-doc/mode_8h.html
+++ b/docs/module-doc/mode_8h.html
@@ -15,784 +15,41 @@
<code>#include &lt;vector&gt;</code><br>
<code>#include &quot;<a class="el" href="users_8h-source.html">users.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="channels_8h-source.html">channels.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="ctables_8h-source.html">ctables.h</a>&quot;</code><br>
<p>
Include dependency graph for mode.h:<p><center><img src="mode_8h__incl.gif" border="0" usemap="#mode.h_map" alt=""></center>
<map name="mode.h_map">
-<area href="users_8h-source.html" shape="rect" coords="127,260,191,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="251,210,336,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="244,362,343,388" alt="">
+<area href="users_8h-source.html" shape="rect" coords="128,311,192,337" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="248,361,333,388" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="123,108,197,135" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="mode_8h__dep__incl.gif" border="0" usemap="#mode.hdep_map" alt=""></center>
<map name="mode.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="123,7,221,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="123,58,221,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="423,108,521,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="423,210,521,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="121,286,201,312" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="429,311,515,338" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="409,438,535,464" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="432,362,512,388" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="257,159,353,186" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="249,362,361,388" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="263,210,348,236" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="253,514,357,540" alt="">
</map>
<p>
<a href="mode_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_ops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classModeParser.html">ModeParser</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_hops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcmd__mode.html">cmd_mode</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">give_voice</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_hops</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_voice</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">add_ban</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29">take_ban</a> (<a class="el" href="classuserrec.html">userrec</a> *user, char *dest, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29">process_modes</a> (char **parameters, <a class="el" href="classuserrec.html">userrec</a> *user, <a class="el" href="classchanrec.html">chanrec</a> *chan, int status, int pcnt, bool servermode, bool silent, bool local)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29">allowed_umode</a> (char umode, char *sourcemodes, bool adding)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29">process_module_umode</a> (char umode, <a class="el" href="classuserrec.html">userrec</a> *source, void *dest, bool adding)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">handle_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29">merge_mode</a> (char **parameters, int pcnt)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mode_8h.html#merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">merge_mode2</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::add_ban" ref="add_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* add_ban </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29"></a><!-- doxytag: member="mode.h::allowed_umode" ref="allowed_5Fumode_28char_20umode_2C_20char_20_2Asourcemodes_2C_20bool_20adding_29" args="(char umode, char *sourcemodes, bool adding)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool allowed_umode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char&nbsp;</td>
- <td class="mdname" nowrap> <em>umode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>sourcemodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap> <em>adding</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_hops" ref="give_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_hops </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_ops" ref="give_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_ops </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::give_voice" ref="give_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* give_voice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::handle_mode" ref="handle_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void handle_mode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29"></a><!-- doxytag: member="mode.h::merge_mode" ref="merge_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_29" args="(char **parameters, int pcnt)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void merge_mode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::merge_mode2" ref="merge_5Fmode_32_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void merge_mode2 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29"></a><!-- doxytag: member="mode.h::process_modes" ref="process_5Fmodes_28char_20_2A_2Aparameters_2C_20userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20int_20status_2C_20int_20pcnt_2C_20bool_20servermode_2C_20bool_20silent_2C_20bool_20local_29" args="(char **parameters, userrec *user, chanrec *chan, int status, int pcnt, bool servermode, bool silent, bool local)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void process_modes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap> <em>servermode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap> <em>silent</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap> <em>local</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29"></a><!-- doxytag: member="mode.h::process_module_umode" ref="process_5Fmodule_5Fumode_28char_20umode_2C_20userrec_20_2Asource_2C_20void_20_2Adest_2C_20bool_20adding_29" args="(char umode, userrec *source, void *dest, bool adding)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool process_module_umode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char&nbsp;</td>
- <td class="mdname" nowrap> <em>umode</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>source</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>void *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap> <em>adding</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="mode.h::server_mode" ref="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void server_mode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00421">Server::SendMode()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_ban" ref="take_5Fban_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_ban </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_hops" ref="take_5Fhops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_hops </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_ops" ref="take_5Fops_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_ops </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29"></a><!-- doxytag: member="mode.h::take_voice" ref="take_5Fvoice_28userrec_20_2Auser_2C_20char_20_2Adest_2C_20chanrec_20_2Achan_2C_20int_20status_29" args="(userrec *user, char *dest, chanrec *chan, int status)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">char* take_voice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>dest</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classchanrec.html">chanrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>chan</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/mode_8h__dep__incl.map b/docs/module-doc/mode_8h__dep__incl.map
index 5d61f5f98..0fbb16370 100644
--- a/docs/module-doc/mode_8h__dep__incl.map
+++ b/docs/module-doc/mode_8h__dep__incl.map
@@ -1,3 +1,11 @@
base referer
-rect $channels_8cpp-source.html 123,7 221,34
-rect $modules_8cpp-source.html 123,58 221,84
+rect $channels_8cpp-source.html 423,108 521,135
+rect $modules_8cpp-source.html 423,210 521,236
+rect $inspircd_8h-source.html 121,286 201,312
+rect $socket_8cpp-source.html 429,311 515,338
+rect $socketengine_8cpp-source.html 409,438 535,464
+rect $users_8cpp-source.html 432,362 512,388
+rect $inspircd__io_8h-source.html 257,159 353,186
+rect $socketengine_8h-source.html 249,362 361,388
+rect $typedefs_8h-source.html 263,210 348,236
+rect $userprocess_8h-source.html 253,514 357,540
diff --git a/docs/module-doc/mode_8h__dep__incl.md5 b/docs/module-doc/mode_8h__dep__incl.md5
index e98ddad91..7141d3567 100644
--- a/docs/module-doc/mode_8h__dep__incl.md5
+++ b/docs/module-doc/mode_8h__dep__incl.md5
@@ -1 +1 @@
-fd59f64e403f74c533d4d585052df75c \ No newline at end of file
+a468254eb82a333e8e171f75c5a95c2c \ No newline at end of file
diff --git a/docs/module-doc/mode_8h__incl.map b/docs/module-doc/mode_8h__incl.map
index c4bd501fa..5891ea4c1 100644
--- a/docs/module-doc/mode_8h__incl.map
+++ b/docs/module-doc/mode_8h__incl.map
@@ -1,4 +1,4 @@
base referer
-rect $users_8h-source.html 127,260 191,287
-rect $channels_8h-source.html 251,210 336,236
-rect $connection_8h-source.html 244,362 343,388
+rect $users_8h-source.html 128,311 192,337
+rect $channels_8h-source.html 248,361 333,388
+rect $ctables_8h-source.html 123,108 197,135
diff --git a/docs/module-doc/mode_8h__incl.md5 b/docs/module-doc/mode_8h__incl.md5
index 6d7d31d18..e109361fc 100644
--- a/docs/module-doc/mode_8h__incl.md5
+++ b/docs/module-doc/mode_8h__incl.md5
@@ -1 +1 @@
-3d060c191165c8107d912ed1383b6923 \ No newline at end of file
+65cc27648a712202e38cf2a89d5cde55 \ No newline at end of file
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html
index a13d4ac10..ac2ff009e 100644
--- a/docs/module-doc/modules_8cpp-source.html
+++ b/docs/module-doc/modules_8cpp-source.html
@@ -28,923 +28,922 @@
<a name="l00019"></a>00019 <span class="preprocessor">#include "inspircd_config.h"</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;time.h&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#ifdef GCC3</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#else</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;sstream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;deque&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include "dynamic.h"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "wildcard.h"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
-<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
-<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
-<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keyword">extern</span> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="modules_8cpp.html#SE">SE</a>;
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;sys/errno.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;time.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;string&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#ifdef GCC3</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ext/hash_map&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#else</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include &lt;hash_map&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include &lt;map&gt;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;sstream&gt;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;deque&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="globals_8h.html">globals.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "dynamic.h"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "command_parse.h"</span>
+<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a> *<a class="code" href="channels_8cpp.html#Config">Config</a>;
<a name="l00055"></a>00055 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
<a name="l00056"></a>00056 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
<a name="l00057"></a>00057 <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>;
<a name="l00058"></a>00058 <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>;
<a name="l00059"></a>00059 <span class="keyword">extern</span> std::vector&lt;InspSocket*&gt; <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>;
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00062"></a>00062 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
-<a name="l00063"></a>00063 <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];
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
-<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
-<a name="l00067"></a>00067 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#command_5Ftable">command_table</a> <a class="code" href="modules_8cpp.html#cmdlist">cmdlist</a>;
-<a name="l00068"></a><a class="code" href="modules_8cpp.html#EMode">00068</a> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a> <a class="code" href="modules_8cpp.html#EMode">EMode</a>;
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00071"></a><a class="code" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">00071</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)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a><a class="code" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">00083</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)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <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>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">00095</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)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <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>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00108"></a><a class="code" href="modules_8h.html#ModeDefinedOn_28char_20c_2C_20int_20i_29">00108</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)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i-&gt;params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00121"></a><a class="code" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">00121</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)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i-&gt;params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00134"></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">00134</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)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 <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));
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="comment">// turns a mode into a listmode</span>
-<a name="l00144"></a><a class="code" href="modules_8h.html#ModeMakeList_28char_20modechar_29">00144</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)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <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>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i-&gt;list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="comment">// version is a simple class for holding a modules version number</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">00159</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) { };
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
-<a name="l00162"></a>00162
-<a name="l00163"></a><a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">00163</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) { };
-<a name="l00164"></a>00164
-<a name="l00165"></a><a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">00165</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) { };
-<a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="classRequest.html#GetData_28_29">00167</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">Request::GetData</a>()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#data">data</a>;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a><a class="code" href="classRequest.html#GetSource_28_29">00172</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">Request::GetSource</a>()
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#source">source</a>;
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a><a class="code" href="classRequest.html#GetDest_28_29">00177</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">Request::GetDest</a>()
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a><a class="code" href="classRequest.html#Send_28_29">00182</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Request::Send</a>()
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this-&gt;dest)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <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>);
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">else</span>
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> NULL;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193
-<a name="l00194"></a><a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">00194</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) { };
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="classEvent.html#GetData_28_29">00196</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">Event::GetData</a>()
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#data">data</a>;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="classEvent.html#GetSource_28_29">00201</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">Event::GetSource</a>()
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#source">source</a>;
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a><a class="code" href="classEvent.html#Send_28_29">00206</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Event::Send</a>()
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> NULL;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a><a class="code" href="classEvent.html#GetEventID_28_29">00212</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">Event::GetEventID</a>()
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#id">id</a>;
-<a name="l00215"></a>00215 }
+<a name="l00060"></a>00060 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00061"></a>00061 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
+<a name="l00062"></a>00062 <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];
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
+<a name="l00065"></a>00065 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#chan_5Fhash">chan_hash</a> <a class="code" href="channels_8cpp.html#chanlist">chanlist</a>;
+<a name="l00066"></a>00066 <span class="keyword">extern</span> <a class="code" href="ctables_8h.html#command_5Ftable">command_table</a> <a class="code" href="modules_8cpp.html#cmdlist">cmdlist</a>;
+<a name="l00067"></a><a class="code" href="modules_8cpp.html#EMode">00067</a> <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a> <a class="code" href="modules_8cpp.html#EMode">EMode</a>;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00070"></a><a class="code" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">00070</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)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a><a class="code" href="modules_8h.html#ModeIsListMode_28char_20modechar_2C_20int_20type_29">00082</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)
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <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>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a><a class="code" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">00094</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)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <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>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00107"></a><a class="code" href="modules_8h.html#ModeDefinedOn_28char_20c_2C_20int_20i_29">00107</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)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i-&gt;params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00120"></a><a class="code" href="modules_8h.html#ModeDefinedOff_28char_20c_2C_20int_20i_29">00120</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)
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i-&gt;params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00133"></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">00133</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)
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 <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));
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="comment">// turns a mode into a listmode</span>
+<a name="l00143"></a><a class="code" href="modules_8h.html#ModeMakeList_28char_20modechar_29">00143</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)
+<a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <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>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i-&gt;list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="comment">// version is a simple class for holding a modules version number</span>
+<a name="l00157"></a>00157
+<a name="l00158"></a><a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">00158</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) { };
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
+<a name="l00161"></a>00161
+<a name="l00162"></a><a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">00162</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) { };
+<a name="l00163"></a>00163
+<a name="l00164"></a><a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">00164</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) { };
+<a name="l00165"></a>00165
+<a name="l00166"></a><a class="code" href="classRequest.html#GetData_28_29">00166</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">Request::GetData</a>()
+<a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#data">data</a>;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170
+<a name="l00171"></a><a class="code" href="classRequest.html#GetSource_28_29">00171</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">Request::GetSource</a>()
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#source">source</a>;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a><a class="code" href="classRequest.html#GetDest_28_29">00176</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">Request::GetDest</a>()
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a><a class="code" href="classRequest.html#Send_28_29">00181</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Request::Send</a>()
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (this-&gt;dest)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <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>);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keywordflow">else</span>
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> NULL;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a><a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">00193</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) { };
+<a name="l00194"></a>00194
+<a name="l00195"></a><a class="code" href="classEvent.html#GetData_28_29">00195</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">Event::GetData</a>()
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#data">data</a>;
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199
+<a name="l00200"></a><a class="code" href="classEvent.html#GetSource_28_29">00200</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">Event::GetSource</a>()
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#source">source</a>;
+<a name="l00203"></a>00203 }
+<a name="l00204"></a>00204
+<a name="l00205"></a><a class="code" href="classEvent.html#Send_28_29">00205</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Event::Send</a>()
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+<a name="l00208"></a>00208 <span class="keywordflow">return</span> NULL;
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210
+<a name="l00211"></a><a class="code" href="classEvent.html#GetEventID_28_29">00211</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">Event::GetEventID</a>()
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#id">id</a>;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
<a name="l00216"></a>00216
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
-<a name="l00219"></a>00219
-<a name="l00220"></a><a class="code" href="classModule.html#Module_28Server_20_2AMe_29">00220</a> <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module::Module</a>(<a class="code" href="classServer.html">Server</a>* Me) { }
-<a name="l00221"></a><a class="code" href="classModule.html#_7EModule_28_29">00221</a> <a class="code" href="classModule.html#_7EModule_28_29">Module::~Module</a>() { }
-<a name="l00222"></a><a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">00222</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) { }
-<a name="l00223"></a><a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00223</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message) { }
-<a name="l00224"></a><a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">00224</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) { }
-<a name="l00225"></a><a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00225</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) { }
-<a name="l00226"></a><a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00226</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) { }
-<a name="l00227"></a><a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">00227</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">Module::OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter) { }
-<a name="l00228"></a><a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">00228</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) { }
-<a name="l00229"></a><a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">00229</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; }
-<a name="l00230"></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">00230</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>; }
-<a name="l00231"></a><a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00231</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnMode</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> text) { };
-<a name="l00232"></a><a class="code" href="classModule.html#GetVersion_28_29">00232</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>); }
-<a name="l00233"></a><a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">00233</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype) { };
-<a name="l00234"></a><a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">00234</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) { };
-<a name="l00235"></a><a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">00235</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) { };
-<a name="l00236"></a><a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00236</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; };
-<a name="l00237"></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">00237</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; };
-<a name="l00238"></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">00238</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; };
-<a name="l00239"></a><a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">00239</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; };
-<a name="l00240"></a><a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">00240</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) { };
-<a name="l00241"></a><a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">00241</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>; };
-<a name="l00242"></a><a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">00242</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) { };
-<a name="l00243"></a><a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00243</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; };
-<a name="l00244"></a><a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00244</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) { };
-<a name="l00245"></a><a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00245</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) { };
-<a name="l00246"></a><a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">00246</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">Module::OnBackgroundTimer</a>(time_t curtime) { };
-<a name="l00247"></a><a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">00247</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) { };
-<a name="l00248"></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">00248</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; };
-<a name="l00249"></a><a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">00249</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>; };
-<a name="l00250"></a><a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">00250</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) { };
-<a name="l00251"></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">00251</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; };
-<a name="l00252"></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">00252</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) { };
-<a name="l00253"></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">00253</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; };
-<a name="l00254"></a><a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00254</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; };
-<a name="l00255"></a><a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">00255</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; };
-<a name="l00256"></a><a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00256</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; };
-<a name="l00257"></a><a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00257</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; };
-<a name="l00258"></a><a class="code" href="classModule.html#OnStats_28char_20symbol_29">00258</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) { };
-<a name="l00259"></a><a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00259</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; };
-<a name="l00260"></a><a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00260</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; };
-<a name="l00261"></a><a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00261</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; };
-<a name="l00262"></a><a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">00262</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>; };
-<a name="l00263"></a><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">00263</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; };
-<a name="l00264"></a><a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">00264</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; };
-<a name="l00265"></a><a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">00265</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) { };
-<a name="l00266"></a><a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">00266</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) { };
-<a name="l00267"></a><a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00267</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; };
-<a name="l00268"></a><a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00268</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; };
-<a name="l00269"></a><a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">00269</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) { };
-<a name="l00270"></a><a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">00270</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; };
-<a name="l00271"></a><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">00271</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) { };
-<a name="l00272"></a><a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">00272</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; };
-<a name="l00273"></a><a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00273</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserMessage</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> text) { };
-<a name="l00274"></a><a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00274</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserNotice</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> text) { };
-<a name="l00275"></a><a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnRemoteKill</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) { };
-<a name="l00276"></a><a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00276</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserInvite</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) { };
-<a name="l00277"></a><a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00277</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnPostLocalTopicChange</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) { };
-<a name="l00278"></a><a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">00278</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">Module::OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &amp;description) { };
-<a name="l00279"></a><a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00279</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
-<a name="l00280"></a><a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00280</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
-<a name="l00281"></a><a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">00281</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module::ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline) { };
-<a name="l00282"></a><a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00282</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
-<a name="l00283"></a><a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00283</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
-<a name="l00284"></a><a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00284</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
-<a name="l00285"></a><a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00285</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
-<a name="l00286"></a><a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">00286</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">Module::OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
-<a name="l00287"></a><a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00287</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { };
-<a name="l00288"></a><a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00288</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Module::OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos) { };
-<a name="l00289"></a><a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00289</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddGLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00290"></a><a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">00290</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">Module::OnAddZLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
-<a name="l00291"></a><a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00291</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddKLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00292"></a><a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">Module::OnAddQLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
-<a name="l00293"></a><a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00293</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddELine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00294"></a><a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00294</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00295"></a><a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">Module::OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
-<a name="l00296"></a><a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00296</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00297"></a><a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">00297</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">Module::OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
-<a name="l00298"></a><a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
-<a name="l00299"></a><a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">00299</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">Module::OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item) { };
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="comment">/* server is a wrapper class that provides methods to all of the C-style</span>
-<a name="l00302"></a>00302 <span class="comment"> * exports in the core</span>
-<a name="l00303"></a>00303 <span class="comment"> */</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="classServer.html#Server_28_29">00305</a> <a class="code" href="classServer.html#Server_28_29">Server::Server</a>()
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308
-<a name="l00309"></a><a class="code" href="classServer.html#_7EServer_28_29">00309</a> <a class="code" href="classServer.html#_7EServer_28_29">Server::~Server</a>()
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312
-<a name="l00313"></a><a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">00313</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)
-<a name="l00314"></a>00314 {
-<a name="l00315"></a>00315 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317
-<a name="l00318"></a><a class="code" href="classServer.html#RehashServer_28_29">00318</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">Server::RehashServer</a>()
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
-<a name="l00321"></a>00321 Config-&gt;<a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323
-<a name="l00324"></a><a class="code" href="classServer.html#GetConfig_28_29">00324</a> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">Server::GetConfig</a>()
-<a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> Config;
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00329"></a><a class="code" href="classServer.html#GetVersion_28_29">00329</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">Server::GetVersion</a>()
-<a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> ServerInstance-&gt;<a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333
-<a name="l00334"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00334</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)
-<a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <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++)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keywordflow">if</span> (*a == sock)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
-<a name="l00341"></a>00341 <span class="keywordflow">return</span>;
-<a name="l00342"></a>00342 }
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00346</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)
-<a name="l00347"></a>00347 {
-<a name="l00348"></a>00348 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00349"></a>00349 }
-<a name="l00350"></a>00350
-<a name="l00351"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00351</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)
-<a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-<a name="l00354"></a>00354 strlcpy(literal,sliteral.c_str(),MAXBUF);
-<a name="l00355"></a>00355 strlcpy(pattern,spattern.c_str(),MAXBUF);
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> match(literal,pattern);
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00359</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)
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00362"></a>00362 }
-<a name="l00363"></a>00363
-<a name="l00364"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00364</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)
-<a name="l00365"></a>00365 {
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00369"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00369</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)
-<a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
-<a name="l00372"></a>00372 }
-<a name="l00373"></a>00373
-<a name="l00374"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00374</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)
-<a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
-<a name="l00377"></a>00377 userl.clear();
-<a name="l00378"></a>00378 std::vector&lt;char*&gt; *list = chan-&gt;<a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
-<a name="l00379"></a>00379 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = list-&gt;begin(); i != list-&gt;end(); i++)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 <span class="keywordtype">char</span>* o = *i;
-<a name="l00382"></a>00382 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-<a name="l00383"></a>00383 }
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> userl;
-<a name="l00385"></a>00385 }
-<a name="l00386"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00386</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)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 <a class="code" href="inspircd_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390
-<a name="l00391"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00391</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)
-<a name="l00392"></a>00392 {
-<a name="l00393"></a>00393 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395
-<a name="l00396"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00396</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)
-<a name="l00397"></a>00397 {
-<a name="l00398"></a>00398 <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());
-<a name="l00399"></a>00399 }
-<a name="l00400"></a>00400
-<a name="l00401"></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">00401</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)
-<a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <a class="code" href="inspircd_8h.html#call_5Fhandler_28const_20char_20_2Acommandname_2C_20char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">call_handler</a>(commandname.c_str(),parameters,pcnt,user);
-<a name="l00404"></a>00404 }
-<a name="l00405"></a>00405
-<a name="l00406"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00406</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
-<a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="keywordflow">return</span> <a class="code" href="inspircd_8h.html#is_5Fvalid_5Fcmd_28const_20char_20_2Acommandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">is_valid_cmd</a>(commandname.c_str(), pcnt, user);
-<a name="l00409"></a>00409 }
-<a name="l00410"></a>00410
-<a name="l00411"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00411</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)
-<a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></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">00416</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, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
-<a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 <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);
-<a name="l00419"></a>00419 }
-<a name="l00420"></a>00420
-<a name="l00421"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00421</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)
-<a name="l00422"></a>00422 {
-<a name="l00423"></a>00423 <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);
-<a name="l00424"></a>00424 }
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00426</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)
-<a name="l00427"></a>00427 {
-<a name="l00428"></a>00428 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00429"></a>00429 }
-<a name="l00430"></a>00430
-<a name="l00431"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00431</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)
-<a name="l00432"></a>00432 {
-<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00434"></a>00434 }
-<a name="l00435"></a>00435
-<a name="l00436"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00436</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)
-<a name="l00437"></a>00437 {
-<a name="l00438"></a>00438 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440
-<a name="l00441"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00441</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)
-<a name="l00442"></a>00442 {
-<a name="l00443"></a>00443 <span class="keywordflow">if</span> (!Source)
-<a name="l00444"></a>00444 {
-<a name="l00445"></a>00445 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-<a name="l00446"></a>00446 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
-<a name="l00447"></a>00447 }
-<a name="l00448"></a>00448 <span class="keywordflow">else</span>
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 <span class="comment">// otherwise it comes from the user specified</span>
-<a name="l00451"></a>00451 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453 }
-<a name="l00454"></a>00454
-<a name="l00455"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00455</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)
-<a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-<a name="l00458"></a>00458 }
-<a name="l00459"></a>00459
-<a name="l00460"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00460</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)
-<a name="l00461"></a>00461 {
-<a name="l00462"></a>00462 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="keywordflow">else</span>
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-<a name="l00469"></a>00469 }
-<a name="l00470"></a>00470 }
-<a name="l00471"></a>00471
-<a name="l00472"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00472</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)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
-<a name="l00475"></a>00475 }
-<a name="l00476"></a>00476
-<a name="l00477"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00477</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)
-<a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <span class="keywordflow">if</span> (IncludeSender)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00482"></a>00482 }
-<a name="l00483"></a>00483 <span class="keywordflow">else</span>
-<a name="l00484"></a>00484 {
-<a name="l00485"></a>00485 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00486"></a>00486 }
-<a name="l00487"></a>00487 }
-<a name="l00488"></a>00488
-<a name="l00489"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00489</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)
-<a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-<a name="l00492"></a>00492 }
-<a name="l00493"></a>00493
-<a name="l00494"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00494</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)
-<a name="l00495"></a>00495 {
-<a name="l00496"></a>00496 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
-<a name="l00497"></a>00497 }
-<a name="l00498"></a>00498
-<a name="l00499"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00499</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)
-<a name="l00500"></a>00500 {
-<a name="l00501"></a>00501 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
-<a name="l00502"></a>00502 }
-<a name="l00503"></a>00503
-<a name="l00504"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00504</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)
-<a name="l00505"></a>00505 {
-<a name="l00506"></a>00506 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
-<a name="l00507"></a>00507 }
-<a name="l00508"></a>00508
-<a name="l00509"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00509</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)
-<a name="l00510"></a>00510 {
-<a name="l00511"></a>00511 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
-<a name="l00512"></a>00512 }
-<a name="l00513"></a>00513
-<a name="l00514"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00514</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)
-<a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> (socket &lt; 65536 ? fd_ref_table[socket] : NULL);
-<a name="l00517"></a>00517 }
-<a name="l00518"></a>00518
-<a name="l00519"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00519</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)
-<a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
-<a name="l00522"></a>00522 }
-<a name="l00523"></a>00523
-<a name="l00524"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00524</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)
-<a name="l00525"></a>00525 {
-<a name="l00526"></a>00526 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
-<a name="l00527"></a>00527 }
-<a name="l00528"></a>00528
-<a name="l00529"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00529</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)
-<a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 <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);
-<a name="l00532"></a>00532 }
-<a name="l00533"></a>00533
-<a name="l00534"></a><a class="code" href="classServer.html#GetServerName_28_29">00534</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">Server::GetServerName</a>()
-<a name="l00535"></a>00535 {
-<a name="l00536"></a>00536 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
-<a name="l00537"></a>00537 }
-<a name="l00538"></a>00538
-<a name="l00539"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00539</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">Server::GetNetworkName</a>()
-<a name="l00540"></a>00540 {
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
-<a name="l00542"></a>00542 }
-<a name="l00543"></a>00543
-<a name="l00544"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00544</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">Server::GetServerDescription</a>()
-<a name="l00545"></a>00545 {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
-<a name="l00547"></a>00547 }
-<a name="l00548"></a>00548
-<a name="l00549"></a><a class="code" href="classServer.html#GetAdmin_28_29">00549</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>()
-<a name="l00550"></a>00550 {
-<a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(Config-&gt;<a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,Config-&gt;<a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,Config-&gt;<a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
-<a name="l00552"></a>00552 }
+<a name="l00217"></a>00217 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
+<a name="l00218"></a>00218
+<a name="l00219"></a><a class="code" href="classModule.html#Module_28Server_20_2AMe_29">00219</a> <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module::Module</a>(<a class="code" href="classServer.html">Server</a>* Me) { }
+<a name="l00220"></a><a class="code" href="classModule.html#_7EModule_28_29">00220</a> <a class="code" href="classModule.html#_7EModule_28_29">Module::~Module</a>() { }
+<a name="l00221"></a><a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">00221</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) { }
+<a name="l00222"></a><a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00222</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message) { }
+<a name="l00223"></a><a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">00223</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) { }
+<a name="l00224"></a><a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00224</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) { }
+<a name="l00225"></a><a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">00225</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) { }
+<a name="l00226"></a><a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">00226</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">Module::OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter) { }
+<a name="l00227"></a><a class="code" href="classModule.html#OnServerRaw_28std_3A_3Astring_20_26raw_2C_20bool_20inbound_2C_20userrec_20_2Auser_29">00227</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) { }
+<a name="l00228"></a><a class="code" href="classModule.html#OnUserPreJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20const_20char_20_2Acname_29">00228</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; }
+<a name="l00229"></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">00229</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>; }
+<a name="l00230"></a><a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00230</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnMode</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> text) { };
+<a name="l00231"></a><a class="code" href="classModule.html#GetVersion_28_29">00231</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>); }
+<a name="l00232"></a><a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">00232</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype) { };
+<a name="l00233"></a><a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">00233</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) { };
+<a name="l00234"></a><a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">00234</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) { };
+<a name="l00235"></a><a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00235</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; };
+<a name="l00236"></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">00236</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; };
+<a name="l00237"></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">00237</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; };
+<a name="l00238"></a><a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">00238</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; };
+<a name="l00239"></a><a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">00239</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) { };
+<a name="l00240"></a><a class="code" href="classModule.html#OnAccessCheck_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_2C_20int_20access_5Ftype_29">00240</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>; };
+<a name="l00241"></a><a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">00241</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) { };
+<a name="l00242"></a><a class="code" href="classModule.html#OnKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00242</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; };
+<a name="l00243"></a><a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00243</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) { };
+<a name="l00244"></a><a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">00244</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) { };
+<a name="l00245"></a><a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">00245</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">Module::OnBackgroundTimer</a>(time_t curtime) { };
+<a name="l00246"></a><a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">00246</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) { };
+<a name="l00247"></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">00247</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; };
+<a name="l00248"></a><a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">00248</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>; };
+<a name="l00249"></a><a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">00249</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) { };
+<a name="l00250"></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">00250</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; };
+<a name="l00251"></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">00251</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) { };
+<a name="l00252"></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">00252</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; };
+<a name="l00253"></a><a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00253</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; };
+<a name="l00254"></a><a class="code" href="classModule.html#OnCheckKey_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20keygiven_29">00254</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; };
+<a name="l00255"></a><a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00255</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; };
+<a name="l00256"></a><a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">00256</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; };
+<a name="l00257"></a><a class="code" href="classModule.html#OnStats_28char_20symbol_29">00257</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) { };
+<a name="l00258"></a><a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00258</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; };
+<a name="l00259"></a><a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00259</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; };
+<a name="l00260"></a><a class="code" href="classModule.html#OnLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00260</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; };
+<a name="l00261"></a><a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">00261</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>; };
+<a name="l00262"></a><a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">00262</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; };
+<a name="l00263"></a><a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">00263</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; };
+<a name="l00264"></a><a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">00264</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) { };
+<a name="l00265"></a><a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">00265</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) { };
+<a name="l00266"></a><a class="code" href="classModule.html#OnAddBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00266</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; };
+<a name="l00267"></a><a class="code" href="classModule.html#OnDelBan_28userrec_20_2Asource_2C_20chanrec_20_2Achannel_2C_20std_3A_3Astring_20banmask_29">00267</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; };
+<a name="l00268"></a><a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">00268</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) { };
+<a name="l00269"></a><a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">00269</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; };
+<a name="l00270"></a><a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">00270</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) { };
+<a name="l00271"></a><a class="code" href="classModule.html#OnRawSocketRead_28int_20fd_2C_20char_20_2Abuffer_2C_20unsigned_20int_20count_2C_20int_20_26readresult_29">00271</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; };
+<a name="l00272"></a><a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00272</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserMessage</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> text) { };
+<a name="l00273"></a><a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">00273</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">Module::OnUserNotice</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> text) { };
+<a name="l00274"></a><a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">00274</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">Module::OnRemoteKill</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) { };
+<a name="l00275"></a><a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">Module::OnUserInvite</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) { };
+<a name="l00276"></a><a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">00276</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">Module::OnPostLocalTopicChange</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) { };
+<a name="l00277"></a><a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">00277</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">Module::OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &amp;description) { };
+<a name="l00278"></a><a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00278</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
+<a name="l00279"></a><a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">00279</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">Module::OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque) { };
+<a name="l00280"></a><a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">00280</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">Module::ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline) { };
+<a name="l00281"></a><a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00281</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
+<a name="l00282"></a><a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">00282</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">Module::OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname) { };
+<a name="l00283"></a><a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00283</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
+<a name="l00284"></a><a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">00284</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">Module::ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata) { };
+<a name="l00285"></a><a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">00285</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">Module::OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text) { };
+<a name="l00286"></a><a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">00286</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">Module::OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost) { };
+<a name="l00287"></a><a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00287</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">Module::OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos) { };
+<a name="l00288"></a><a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00288</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddGLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00289"></a><a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">00289</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">Module::OnAddZLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
+<a name="l00290"></a><a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00290</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddKLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00291"></a><a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">00291</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">Module::OnAddQLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
+<a name="l00292"></a><a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">Module::OnAddELine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00293"></a><a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00293</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00294"></a><a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">00294</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">Module::OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask) { };
+<a name="l00295"></a><a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00296"></a><a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">00296</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">Module::OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask) { };
+<a name="l00297"></a><a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">00297</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">Module::OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask) { };
+<a name="l00298"></a><a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">Module::OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item) { };
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="comment">/* server is a wrapper class that provides methods to all of the C-style</span>
+<a name="l00301"></a>00301 <span class="comment"> * exports in the core</span>
+<a name="l00302"></a>00302 <span class="comment"> */</span>
+<a name="l00303"></a>00303
+<a name="l00304"></a><a class="code" href="classServer.html#Server_28_29">00304</a> <a class="code" href="classServer.html#Server_28_29">Server::Server</a>()
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00308"></a><a class="code" href="classServer.html#_7EServer_28_29">00308</a> <a class="code" href="classServer.html#_7EServer_28_29">Server::~Server</a>()
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 }
+<a name="l00311"></a>00311
+<a name="l00312"></a><a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">00312</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)
+<a name="l00313"></a>00313 {
+<a name="l00314"></a>00314 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.push_back(sock);
+<a name="l00315"></a>00315 }
+<a name="l00316"></a>00316
+<a name="l00317"></a><a class="code" href="classServer.html#RehashServer_28_29">00317</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">Server::RehashServer</a>()
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Rehashing config file"</span>);
+<a name="l00320"></a>00320 Config-&gt;<a class="code" href="classServerConfig.html#Read_28bool_20bail_2C_20userrec_20_2Auser_29">Read</a>(<span class="keyword">false</span>,NULL);
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322
+<a name="l00323"></a><a class="code" href="classServer.html#GetConfig_28_29">00323</a> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">Server::GetConfig</a>()
+<a name="l00324"></a>00324 {
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> Config;
+<a name="l00326"></a>00326 }
+<a name="l00327"></a>00327
+<a name="l00328"></a><a class="code" href="classServer.html#GetVersion_28_29">00328</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">Server::GetVersion</a>()
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> ServerInstance-&gt;<a class="code" href="classInspIRCd.html#GetVersionString_28_29">GetVersionString</a>();
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332
+<a name="l00333"></a><a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">00333</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)
+<a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 <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++)
+<a name="l00336"></a>00336 {
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (*a == sock)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>.erase(a);
+<a name="l00340"></a>00340 <span class="keywordflow">return</span>;
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 }
+<a name="l00344"></a>00344
+<a name="l00345"></a><a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">00345</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)
+<a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349
+<a name="l00350"></a><a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">00350</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)
+<a name="l00351"></a>00351 {
+<a name="l00352"></a>00352 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+<a name="l00353"></a>00353 strlcpy(literal,sliteral.c_str(),MAXBUF);
+<a name="l00354"></a>00354 strlcpy(pattern,spattern.c_str(),MAXBUF);
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> match(literal,pattern);
+<a name="l00356"></a>00356 }
+<a name="l00357"></a>00357
+<a name="l00358"></a><a class="code" href="classServer.html#SendToModeMask_28std_3A_3Astring_20modes_2C_20int_20flags_2C_20std_3A_3Astring_20text_29">00358</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)
+<a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00361"></a>00361 }
+<a name="l00362"></a>00362
+<a name="l00363"></a><a class="code" href="classServer.html#JoinUserToChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20key_29">00363</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)
+<a name="l00364"></a>00364 {
+<a name="l00365"></a>00365 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#add_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acn_2C_20const_20char_20_2Akey_2C_20bool_20override_29">add_channel</a>(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+<a name="l00366"></a>00366 }
+<a name="l00367"></a>00367
+<a name="l00368"></a><a class="code" href="classServer.html#PartUserFromChannel_28userrec_20_2Auser_2C_20std_3A_3Astring_20cname_2C_20std_3A_3Astring_20reason_29">00368</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)
+<a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#del_5Fchannel_28userrec_20_2Auser_2C_20const_20char_20_2Acname_2C_20const_20char_20_2Areason_2C_20bool_20local_29">del_channel</a>(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+<a name="l00371"></a>00371 }
+<a name="l00372"></a>00372
+<a name="l00373"></a><a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">00373</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)
+<a name="l00374"></a>00374 {
+<a name="l00375"></a>00375 <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> userl;
+<a name="l00376"></a>00376 userl.clear();
+<a name="l00377"></a>00377 std::vector&lt;char*&gt; *list = chan-&gt;<a class="code" href="classchanrec.html#GetUsers_28_29">GetUsers</a>();
+<a name="l00378"></a>00378 <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = list-&gt;begin(); i != list-&gt;end(); i++)
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keywordtype">char</span>* o = *i;
+<a name="l00381"></a>00381 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> userl;
+<a name="l00384"></a>00384 }
+<a name="l00385"></a><a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">00385</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)
+<a name="l00386"></a>00386 {
+<a name="l00387"></a>00387 <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(user,nickname.c_str());
+<a name="l00388"></a>00388 }
+<a name="l00389"></a>00389
+<a name="l00390"></a><a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">00390</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)
+<a name="l00391"></a>00391 {
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,reason.c_str());
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a><a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">00395</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)
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <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());
+<a name="l00398"></a>00398 }
+<a name="l00399"></a>00399
+<a name="l00400"></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">00400</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)
+<a name="l00401"></a>00401 {
+<a name="l00402"></a>00402 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CallHandler(commandname,parameters,pcnt,user);
+<a name="l00403"></a>00403 }
+<a name="l00404"></a>00404
+<a name="l00405"></a><a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00405</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">Server::IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00406"></a>00406 {
+<a name="l00407"></a>00407 <span class="keywordflow">return</span> ServerInstance-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;IsValidCommand(commandname, pcnt, user);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409
+<a name="l00410"></a><a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">00410</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)
+<a name="l00411"></a>00411 {
+<a name="l00412"></a>00412 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(level,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00413"></a>00413 }
+<a name="l00414"></a>00414
+<a name="l00415"></a><a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">00415</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">Server::AddCommand</a>(<a class="code" href="classcommand__t.html">command_t</a> *f)
+<a name="l00416"></a>00416 {
+<a name="l00417"></a>00417 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CreateCommand(f);
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419
+<a name="l00420"></a><a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">00420</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)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#ModeGrok">ModeGrok</a>-&gt;<a class="code" href="classModeParser.html#ServerMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">ServerMode</a>(parameters,pcnt,user);
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a><a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">00425</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)
+<a name="l00426"></a>00426 {
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429
+<a name="l00430"></a><a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">00430</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)
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00433"></a>00433 }
+<a name="l00434"></a>00434
+<a name="l00435"></a><a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">00435</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)
+<a name="l00436"></a>00436 {
+<a name="l00437"></a>00437 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00438"></a>00438 }
+<a name="l00439"></a>00439
+<a name="l00440"></a><a class="code" href="classServer.html#SendTo_28userrec_20_2ASource_2C_20userrec_20_2ADest_2C_20std_3A_3Astring_20s_29">00440</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)
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <span class="keywordflow">if</span> (!Source)
+<a name="l00443"></a>00443 {
+<a name="l00444"></a>00444 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+<a name="l00445"></a>00445 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 <span class="keywordflow">else</span>
+<a name="l00448"></a>00448 {
+<a name="l00449"></a>00449 <span class="comment">// otherwise it comes from the user specified</span>
+<a name="l00450"></a>00450 <a class="code" href="globals_8h.html#WriteTo_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20char_20_2Adata_2C_2E_2E_2E_29">WriteTo</a>(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452 }
+<a name="l00453"></a>00453
+<a name="l00454"></a><a class="code" href="classServer.html#SendChannelServerNotice_28std_3A_3Astring_20ServName_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20text_29">00454</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)
+<a name="l00455"></a>00455 {
+<a name="l00456"></a>00456 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458
+<a name="l00459"></a><a class="code" href="classServer.html#SendChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChannel_2C_20std_3A_3Astring_20s_2C_20bool_20IncludeSender_29">00459</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)
+<a name="l00460"></a>00460 {
+<a name="l00461"></a>00461 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00462"></a>00462 {
+<a name="l00463"></a>00463 <a class="code" href="globals_8h.html#WriteChannel_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteChannel</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465 <span class="keywordflow">else</span>
+<a name="l00466"></a>00466 {
+<a name="l00467"></a>00467 <a class="code" href="globals_8h.html#ChanExceptSender_28chanrec_20_2APtr_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">ChanExceptSender</a>(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 }
+<a name="l00470"></a>00470
+<a name="l00471"></a><a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">00471</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)
+<a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#common_5Fchannels_28userrec_20_2Au_2C_20userrec_20_2Au_32_29">common_channels</a>(u1,u2) != 0);
+<a name="l00474"></a>00474 }
+<a name="l00475"></a>00475
+<a name="l00476"></a><a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">00476</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)
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 <span class="keywordflow">if</span> (IncludeSender)
+<a name="l00479"></a>00479 {
+<a name="l00480"></a>00480 <a class="code" href="globals_8h.html#WriteCommon_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommon</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00481"></a>00481 }
+<a name="l00482"></a>00482 <span class="keywordflow">else</span>
+<a name="l00483"></a>00483 {
+<a name="l00484"></a>00484 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(User,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 }
+<a name="l00487"></a>00487
+<a name="l00488"></a><a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">00488</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)
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <a class="code" href="globals_8h.html#WriteWallOps_28userrec_20_2Asource_2C_20bool_20local_5Fonly_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteWallOps</a>(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+<a name="l00491"></a>00491 }
+<a name="l00492"></a>00492
+<a name="l00493"></a><a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">00493</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)
+<a name="l00494"></a>00494 {
+<a name="l00495"></a>00495 <a class="code" href="message_8h.html#ChangeDisplayedHost_28userrec_20_2Auser_2C_20const_20char_20_2Ahost_29">ChangeDisplayedHost</a>(user,host.c_str());
+<a name="l00496"></a>00496 }
+<a name="l00497"></a>00497
+<a name="l00498"></a><a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">00498</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)
+<a name="l00499"></a>00499 {
+<a name="l00500"></a>00500 <a class="code" href="message_8h.html#ChangeName_28userrec_20_2Auser_2C_20const_20char_20_2Agecos_29">ChangeName</a>(user,gecos.c_str());
+<a name="l00501"></a>00501 }
+<a name="l00502"></a>00502
+<a name="l00503"></a><a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">00503</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)
+<a name="l00504"></a>00504 {
+<a name="l00505"></a>00505 <span class="keywordflow">return</span> (<a class="code" href="globals_8h.html#isnick_28const_20char_20_2An_29">isnick</a>(nick.c_str()) != 0);
+<a name="l00506"></a>00506 }
+<a name="l00507"></a>00507
+<a name="l00508"></a><a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">00508</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)
+<a name="l00509"></a>00509 {
+<a name="l00510"></a>00510 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#Find_28std_3A_3Astring_20nick_29">Find</a>(nick);
+<a name="l00511"></a>00511 }
+<a name="l00512"></a>00512
+<a name="l00513"></a><a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">00513</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)
+<a name="l00514"></a>00514 {
+<a name="l00515"></a>00515 <span class="keywordflow">return</span> (socket &lt; 65536 ? fd_ref_table[socket] : NULL);
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517
+<a name="l00518"></a><a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">00518</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)
+<a name="l00519"></a>00519 {
+<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#FindChan_28const_20char_20_2Achan_29">FindChan</a>(channel.c_str());
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522
+<a name="l00523"></a><a class="code" href="classServer.html#ChanMode_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00523</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)
+<a name="l00524"></a>00524 {
+<a name="l00525"></a>00525 <span class="keywordflow">return</span> <a class="code" href="globals_8h.html#cmode_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">cmode</a>(User,Chan);
+<a name="l00526"></a>00526 }
+<a name="l00527"></a>00527
+<a name="l00528"></a><a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">00528</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)
+<a name="l00529"></a>00529 {
+<a name="l00530"></a>00530 <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);
+<a name="l00531"></a>00531 }
+<a name="l00532"></a>00532
+<a name="l00533"></a><a class="code" href="classServer.html#GetServerName_28_29">00533</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">Server::GetServerName</a>()
+<a name="l00534"></a>00534 {
+<a name="l00535"></a>00535 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>;
+<a name="l00536"></a>00536 }
+<a name="l00537"></a>00537
+<a name="l00538"></a><a class="code" href="classServer.html#GetNetworkName_28_29">00538</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">Server::GetNetworkName</a>()
+<a name="l00539"></a>00539 {
+<a name="l00540"></a>00540 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00541"></a>00541 }
+<a name="l00542"></a>00542
+<a name="l00543"></a><a class="code" href="classServer.html#GetServerDescription_28_29">00543</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">Server::GetServerDescription</a>()
+<a name="l00544"></a>00544 {
+<a name="l00545"></a>00545 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#ServerDesc_5BMAXBUF_5D">ServerDesc</a>;
+<a name="l00546"></a>00546 }
+<a name="l00547"></a>00547
+<a name="l00548"></a><a class="code" href="classServer.html#GetAdmin_28_29">00548</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">Server::GetAdmin</a>()
+<a name="l00549"></a>00549 {
+<a name="l00550"></a>00550 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(Config-&gt;<a class="code" href="classServerConfig.html#AdminName_5BMAXBUF_5D">AdminName</a>,Config-&gt;<a class="code" href="classServerConfig.html#AdminEmail_5BMAXBUF_5D">AdminEmail</a>,Config-&gt;<a class="code" href="classServerConfig.html#AdminNick_5BMAXBUF_5D">AdminNick</a>);
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552
<a name="l00553"></a>00553
<a name="l00554"></a>00554
-<a name="l00555"></a>00555
-<a name="l00556"></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">00556</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)
-<a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <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>)))
-<a name="l00559"></a>00559 {
-<a name="l00560"></a>00560 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-<a name="l00563"></a>00563 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565 <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>))
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-<a name="l00571"></a>00571 {
-<a name="l00572"></a>00572 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-<a name="l00573"></a>00573 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00574"></a>00574 }
-<a name="l00575"></a>00575 <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);
-<a name="l00576"></a>00576 }
-<a name="l00577"></a>00577 <span class="keywordflow">else</span>
-<a name="l00578"></a>00578 {
-<a name="l00579"></a>00579 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-<a name="l00580"></a>00580 }
-<a name="l00581"></a>00581 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00582"></a>00582 }
-<a name="l00583"></a>00583
-<a name="l00584"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00584</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)
-<a name="l00585"></a>00585 {
-<a name="l00586"></a>00586 <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);
-<a name="l00587"></a>00587 <span class="keywordflow">if</span> (res)
-<a name="l00588"></a>00588 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
-<a name="l00589"></a>00589 <span class="keywordflow">return</span> res;
-<a name="l00590"></a>00590 }
-<a name="l00591"></a>00591
-<a name="l00592"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00592</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)
-<a name="l00593"></a>00593 {
-<a name="l00594"></a>00594 <span class="keywordflow">return</span> usercount(c);
-<a name="l00595"></a>00595 }
+<a name="l00555"></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">00555</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)
+<a name="l00556"></a>00556 {
+<a name="l00557"></a>00557 <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>)))
+<a name="l00558"></a>00558 {
+<a name="l00559"></a>00559 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#MT_5FSERVER">MT_SERVER</a>)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+<a name="l00562"></a>00562 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00563"></a>00563 }
+<a name="l00564"></a>00564 <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>))
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+<a name="l00567"></a>00567 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00568"></a>00568 }
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+<a name="l00570"></a>00570 {
+<a name="l00571"></a>00571 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+<a name="l00572"></a>00572 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574 <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);
+<a name="l00575"></a>00575 }
+<a name="l00576"></a>00576 <span class="keywordflow">else</span>
+<a name="l00577"></a>00577 {
+<a name="l00578"></a>00578 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+<a name="l00579"></a>00579 }
+<a name="l00580"></a>00580 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00581"></a>00581 }
+<a name="l00582"></a>00582
+<a name="l00583"></a><a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">00583</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)
+<a name="l00584"></a>00584 {
+<a name="l00585"></a>00585 <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);
+<a name="l00586"></a>00586 <span class="keywordflow">if</span> (res)
+<a name="l00587"></a>00587 <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(modechar);
+<a name="l00588"></a>00588 <span class="keywordflow">return</span> res;
+<a name="l00589"></a>00589 }
+<a name="l00590"></a>00590
+<a name="l00591"></a><a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">00591</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)
+<a name="l00592"></a>00592 {
+<a name="l00593"></a>00593 <span class="keywordflow">return</span> usercount(c);
+<a name="l00594"></a>00594 }
+<a name="l00595"></a>00595
<a name="l00596"></a>00596
-<a name="l00597"></a>00597
-<a name="l00598"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00598</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)
-<a name="l00599"></a>00599 {
-<a name="l00600"></a>00600 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00601"></a>00601 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>;
-<a name="l00602"></a>00602 user-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00603"></a>00603 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
-<a name="l00604"></a>00604 SE-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
-<a name="l00605"></a>00605 shutdown(old_fd,2);
-<a name="l00606"></a>00606 close(old_fd);
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00608"></a>00608 }
-<a name="l00609"></a>00609
-<a name="l00610"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00610</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)
-<a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a> = alive-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
-<a name="l00613"></a>00613 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>;
-<a name="l00614"></a>00614 alive-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
-<a name="l00615"></a>00615 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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>);
-<a name="l00616"></a>00616 <a class="code" href="inspircd_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
-<a name="l00617"></a>00617 fd_ref_table[zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = zombie;
-<a name="l00618"></a>00618 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; zombie-&gt;chans.size(); i++)
-<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
-<a name="l00621"></a>00621 {
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel-&gt;name)
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
-<a name="l00625"></a>00625 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(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>);
-<a name="l00626"></a>00626 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00629"></a>00629 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00630"></a>00630 }
-<a name="l00631"></a>00631 userlist(zombie,Ptr);
-<a name="l00632"></a>00632 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00633"></a>00633
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635 }
-<a name="l00636"></a>00636 }
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00638"></a>00638 }
-<a name="l00639"></a>00639
-<a name="l00640"></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">00640</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)
-<a name="l00641"></a>00641 {
-<a name="l00642"></a>00642 <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());
-<a name="l00643"></a>00643 }
-<a name="l00644"></a>00644
-<a name="l00645"></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">00645</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)
-<a name="l00646"></a>00646 {
-<a name="l00647"></a>00647 <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());
-<a name="l00648"></a>00648 }
-<a name="l00649"></a>00649
-<a name="l00650"></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">00650</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)
-<a name="l00651"></a>00651 {
-<a name="l00652"></a>00652 <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());
-<a name="l00653"></a>00653 }
-<a name="l00654"></a>00654
-<a name="l00655"></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">00655</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)
-<a name="l00656"></a>00656 {
-<a name="l00657"></a>00657 <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());
-<a name="l00658"></a>00658 }
-<a name="l00659"></a>00659
-<a name="l00660"></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">00660</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)
-<a name="l00661"></a>00661 {
-<a name="l00662"></a>00662 <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());
-<a name="l00663"></a>00663 }
-<a name="l00664"></a>00664
-<a name="l00665"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00665</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)
-<a name="l00666"></a>00666 {
-<a name="l00667"></a>00667 <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());
-<a name="l00668"></a>00668 }
-<a name="l00669"></a>00669
-<a name="l00670"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00670</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)
-<a name="l00671"></a>00671 {
-<a name="l00672"></a>00672 <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());
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674
-<a name="l00675"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00675</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)
-<a name="l00676"></a>00676 {
-<a name="l00677"></a>00677 <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());
-<a name="l00678"></a>00678 }
-<a name="l00679"></a>00679
-<a name="l00680"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00680</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)
-<a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 <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());
-<a name="l00683"></a>00683 }
-<a name="l00684"></a>00684
-<a name="l00685"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00685</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)
-<a name="l00686"></a>00686 {
-<a name="l00687"></a>00687 <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());
-<a name="l00688"></a>00688 }
-<a name="l00689"></a>00689
-<a name="l00690"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00690</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)
-<a name="l00691"></a>00691 {
-<a name="l00692"></a>00692 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
-<a name="l00693"></a>00693 }
-<a name="l00694"></a>00694
-<a name="l00695"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00695</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)
-<a name="l00696"></a>00696 {
-<a name="l00697"></a>00697 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-<a name="l00698"></a>00698 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-<a name="l00699"></a>00699 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00700"></a>00700 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-<a name="l00701"></a>00701 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00702"></a>00702 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00703"></a>00703 <span class="keywordflow">if</span> (dest[i] &lt; 32)
-<a name="l00704"></a>00704 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00705"></a>00705 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00706"></a>00706 <span class="keywordflow">if</span> (dest[i] &gt; 126)
-<a name="l00707"></a>00707 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00708"></a>00708 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
-<a name="l00709"></a>00709 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00710"></a>00710 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-<a name="l00711"></a>00711 c++;
-<a name="l00712"></a>00712 <span class="keywordflow">if</span> (c&gt;1)
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00714"></a>00714 c = 0;
-<a name="l00715"></a>00715 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-<a name="l00716"></a>00716 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-<a name="l00717"></a>00717 c++;
-<a name="l00718"></a>00718 <span class="keywordflow">if</span> (c&gt;1)
-<a name="l00719"></a>00719 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00720"></a>00720
-<a name="l00721"></a>00721 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00722"></a>00722 }
-<a name="l00723"></a>00723
-<a name="l00724"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00724</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)
-<a name="l00725"></a>00725 {
-<a name="l00726"></a>00726 <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++)
-<a name="l00727"></a>00727 {
-<a name="l00728"></a>00728 <span class="keywordflow">if</span> (Config-&gt;<a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
-<a name="l00729"></a>00729 {
-<a name="l00730"></a>00730 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
-<a name="l00731"></a>00731 }
-<a name="l00732"></a>00732 }
-<a name="l00733"></a>00733 <span class="keywordflow">return</span> NULL;
-<a name="l00734"></a>00734 }
-<a name="l00735"></a>00735
-<a name="l00736"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00736</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>()
-<a name="l00737"></a>00737 {
-<a name="l00738"></a>00738 Config-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00739"></a>00739 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00740"></a>00740 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00741"></a>00741 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
-<a name="l00742"></a>00742 <span class="keywordflow">if</span> (!this-&gt;readerror)
-<a name="l00743"></a>00743 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>;
-<a name="l00744"></a>00744 }
+<a name="l00597"></a><a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">00597</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)
+<a name="l00598"></a>00598 {
+<a name="l00599"></a>00599 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00600"></a>00600 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>;
+<a name="l00601"></a>00601 user-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00602"></a>00602 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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());
+<a name="l00603"></a>00603 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(old_fd);
+<a name="l00604"></a>00604 shutdown(old_fd,2);
+<a name="l00605"></a>00605 close(old_fd);
+<a name="l00606"></a>00606 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00607"></a>00607 }
+<a name="l00608"></a>00608
+<a name="l00609"></a><a class="code" href="classServer.html#PseudoToUser_28userrec_20_2Aalive_2C_20userrec_20_2Azombie_2C_20std_3A_3Astring_20message_29">00609</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)
+<a name="l00610"></a>00610 {
+<a name="l00611"></a>00611 zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a> = alive-&gt;<a class="code" href="classconnection.html#fd">fd</a>;
+<a name="l00612"></a>00612 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>;
+<a name="l00613"></a>00613 alive-&gt;<a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00614"></a>00614 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(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>);
+<a name="l00615"></a>00615 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(alive,message.c_str());
+<a name="l00616"></a>00616 fd_ref_table[zombie-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = zombie;
+<a name="l00617"></a>00617 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; zombie-&gt;chans.size(); i++)
+<a name="l00618"></a>00618 {
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel != NULL)
+<a name="l00620"></a>00620 {
+<a name="l00621"></a>00621 <span class="keywordflow">if</span> (zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel-&gt;name)
+<a name="l00622"></a>00622 {
+<a name="l00623"></a>00623 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#chans">chans</a>[i].channel;
+<a name="l00624"></a>00624 <a class="code" href="globals_8h.html#WriteFrom_28int_20sock_2C_20userrec_20_2Auser_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteFrom</a>(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>);
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#topicset">topicset</a>)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00628"></a>00628 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 userlist(zombie,Ptr);
+<a name="l00631"></a>00631 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 }
+<a name="l00634"></a>00634 }
+<a name="l00635"></a>00635 }
+<a name="l00636"></a>00636 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00637"></a>00637 }
+<a name="l00638"></a>00638
+<a name="l00639"></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">00639</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)
+<a name="l00640"></a>00640 {
+<a name="l00641"></a>00641 <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());
+<a name="l00642"></a>00642 }
+<a name="l00643"></a>00643
+<a name="l00644"></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">00644</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)
+<a name="l00645"></a>00645 {
+<a name="l00646"></a>00646 <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());
+<a name="l00647"></a>00647 }
+<a name="l00648"></a>00648
+<a name="l00649"></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">00649</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)
+<a name="l00650"></a>00650 {
+<a name="l00651"></a>00651 <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());
+<a name="l00652"></a>00652 }
+<a name="l00653"></a>00653
+<a name="l00654"></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">00654</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)
+<a name="l00655"></a>00655 {
+<a name="l00656"></a>00656 <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());
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658
+<a name="l00659"></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">00659</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)
+<a name="l00660"></a>00660 {
+<a name="l00661"></a>00661 <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());
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a><a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">00664</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)
+<a name="l00665"></a>00665 {
+<a name="l00666"></a>00666 <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());
+<a name="l00667"></a>00667 }
+<a name="l00668"></a>00668
+<a name="l00669"></a><a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">00669</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)
+<a name="l00670"></a>00670 {
+<a name="l00671"></a>00671 <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());
+<a name="l00672"></a>00672 }
+<a name="l00673"></a>00673
+<a name="l00674"></a><a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">00674</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)
+<a name="l00675"></a>00675 {
+<a name="l00676"></a>00676 <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());
+<a name="l00677"></a>00677 }
+<a name="l00678"></a>00678
+<a name="l00679"></a><a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">00679</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)
+<a name="l00680"></a>00680 {
+<a name="l00681"></a>00681 <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());
+<a name="l00682"></a>00682 }
+<a name="l00683"></a>00683
+<a name="l00684"></a><a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">00684</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)
+<a name="l00685"></a>00685 {
+<a name="l00686"></a>00686 <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());
+<a name="l00687"></a>00687 }
+<a name="l00688"></a>00688
+<a name="l00689"></a><a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">00689</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)
+<a name="l00690"></a>00690 {
+<a name="l00691"></a>00691 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#duration_28const_20char_20_2Astr_29">duration</a>(delta.c_str());
+<a name="l00692"></a>00692 }
+<a name="l00693"></a>00693
+<a name="l00694"></a><a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">00694</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)
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+<a name="l00697"></a>00697 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+<a name="l00698"></a>00698 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+<a name="l00700"></a>00700 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00701"></a>00701 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00702"></a>00702 <span class="keywordflow">if</span> (dest[i] &lt; 32)
+<a name="l00703"></a>00703 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00704"></a>00704 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00705"></a>00705 <span class="keywordflow">if</span> (dest[i] &gt; 126)
+<a name="l00706"></a>00706 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00707"></a>00707 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0;
+<a name="l00708"></a>00708 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00709"></a>00709 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+<a name="l00710"></a>00710 c++;
+<a name="l00711"></a>00711 <span class="keywordflow">if</span> (c&gt;1)
+<a name="l00712"></a>00712 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00713"></a>00713 c = 0;
+<a name="l00714"></a>00714 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+<a name="l00715"></a>00715 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+<a name="l00716"></a>00716 c++;
+<a name="l00717"></a>00717 <span class="keywordflow">if</span> (c&gt;1)
+<a name="l00718"></a>00718 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00721"></a>00721 }
+<a name="l00722"></a>00722
+<a name="l00723"></a><a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">00723</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)
+<a name="l00724"></a>00724 {
+<a name="l00725"></a>00725 <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++)
+<a name="l00726"></a>00726 {
+<a name="l00727"></a>00727 <span class="keywordflow">if</span> (Config-&gt;<a class="code" href="classServerConfig.html#module_5Fnames">module_names</a>[i] == name)
+<a name="l00728"></a>00728 {
+<a name="l00729"></a>00729 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#modules">modules</a>[i];
+<a name="l00730"></a>00730 }
+<a name="l00731"></a>00731 }
+<a name="l00732"></a>00732 <span class="keywordflow">return</span> NULL;
+<a name="l00733"></a>00733 }
+<a name="l00734"></a>00734
+<a name="l00735"></a><a class="code" href="classConfigReader.html#ConfigReader_28_29">00735</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>()
+<a name="l00736"></a>00736 {
+<a name="l00737"></a>00737 Config-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00738"></a>00738 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00739"></a>00739 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00740"></a>00740 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
+<a name="l00741"></a>00741 <span class="keywordflow">if</span> (!this-&gt;readerror)
+<a name="l00742"></a>00742 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>;
+<a name="l00743"></a>00743 }
+<a name="l00744"></a>00744
<a name="l00745"></a>00745
-<a name="l00746"></a>00746
-<a name="l00747"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00747</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>()
-<a name="l00748"></a>00748 {
-<a name="l00749"></a>00749 <span class="keywordflow">if</span> (this-&gt;cache)
-<a name="l00750"></a>00750 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l00751"></a>00751 <span class="keywordflow">if</span> (this-&gt;errorlog)
-<a name="l00752"></a>00752 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l00753"></a>00753 }
+<a name="l00746"></a><a class="code" href="classConfigReader.html#_7EConfigReader_28_29">00746</a> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">ConfigReader::~ConfigReader</a>()
+<a name="l00747"></a>00747 {
+<a name="l00748"></a>00748 <span class="keywordflow">if</span> (this-&gt;cache)
+<a name="l00749"></a>00749 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (this-&gt;errorlog)
+<a name="l00751"></a>00751 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l00752"></a>00752 }
+<a name="l00753"></a>00753
<a name="l00754"></a>00754
-<a name="l00755"></a>00755
-<a name="l00756"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00756</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
-<a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 Config-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
-<a name="l00759"></a>00759 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00760"></a>00760 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-<a name="l00761"></a>00761 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(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>);
-<a name="l00762"></a>00762 <span class="keywordflow">if</span> (!this-&gt;readerror)
-<a name="l00763"></a>00763 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>;
-<a name="l00764"></a>00764 };
-<a name="l00765"></a>00765
-<a name="l00766"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00766</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)
-<a name="l00767"></a>00767 {
-<a name="l00768"></a>00768 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00769"></a>00769 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00770"></a>00770 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00771"></a>00771 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00772"></a>00772 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00773"></a>00773 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00774"></a>00774 <span class="keywordflow">if</span> (!res)
-<a name="l00775"></a>00775 {
-<a name="l00776"></a>00776 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>;
-<a name="l00777"></a>00777 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00778"></a>00778 }
-<a name="l00779"></a>00779 <span class="keywordflow">return</span> val;
-<a name="l00780"></a>00780 }
-<a name="l00781"></a>00781
-<a name="l00782"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00782</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)
-<a name="l00783"></a>00783 {
-<a name="l00784"></a>00784 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00785"></a>00785 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00786"></a>00786 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00787"></a>00787 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00788"></a>00788 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00789"></a>00789 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00790"></a>00790 <span class="keywordflow">if</span> (!res)
-<a name="l00791"></a>00791 {
-<a name="l00792"></a>00792 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>;
-<a name="l00793"></a>00793 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00794"></a>00794 }
-<a name="l00795"></a>00795 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
-<a name="l00796"></a>00796 <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>));
-<a name="l00797"></a>00797 }
-<a name="l00798"></a>00798
-<a name="l00799"></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">00799</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)
-<a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 <span class="keywordtype">char</span> val[MAXBUF];
-<a name="l00802"></a>00802 <span class="keywordtype">char</span> t[MAXBUF];
-<a name="l00803"></a>00803 <span class="keywordtype">char</span> n[MAXBUF];
-<a name="l00804"></a>00804 strlcpy(t,tag.c_str(),MAXBUF);
-<a name="l00805"></a>00805 strlcpy(n,name.c_str(),MAXBUF);
-<a name="l00806"></a>00806 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
-<a name="l00807"></a>00807 <span class="keywordflow">if</span> (!res)
-<a name="l00808"></a>00808 {
-<a name="l00809"></a>00809 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>;
-<a name="l00810"></a>00810 <span class="keywordflow">return</span> 0;
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
-<a name="l00813"></a>00813 {
-<a name="l00814"></a>00814 <span class="keywordflow">if</span> (!isdigit(val[i]))
-<a name="l00815"></a>00815 {
-<a name="l00816"></a>00816 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>;
-<a name="l00817"></a>00817 <span class="keywordflow">return</span> 0;
-<a name="l00818"></a>00818 }
-<a name="l00819"></a>00819 }
-<a name="l00820"></a>00820 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
-<a name="l00821"></a>00821 {
-<a name="l00822"></a>00822 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>;
-<a name="l00823"></a>00823 <span class="keywordflow">return</span> 0;
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825 <span class="keywordflow">return</span> atoi(val);
-<a name="l00826"></a>00826 }
-<a name="l00827"></a>00827
-<a name="l00828"></a><a class="code" href="classConfigReader.html#GetError_28_29">00828</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>()
-<a name="l00829"></a>00829 {
-<a name="l00830"></a>00830 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l00831"></a>00831 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = 0;
-<a name="l00832"></a>00832 <span class="keywordflow">return</span> olderr;
-<a name="l00833"></a>00833 }
-<a name="l00834"></a>00834
-<a name="l00835"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00835</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)
-<a name="l00836"></a>00836 {
-<a name="l00837"></a>00837 <span class="keywordflow">if</span> (bail)
-<a name="l00838"></a>00838 {
-<a name="l00839"></a>00839 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());
-<a name="l00840"></a>00840 exit(0);
-<a name="l00841"></a>00841 }
-<a name="l00842"></a>00842 <span class="keywordflow">else</span>
-<a name="l00843"></a>00843 {
-<a name="l00844"></a>00844 <span class="keywordtype">char</span> dataline[1024];
-<a name="l00845"></a>00845 <span class="keywordflow">if</span> (user)
-<a name="l00846"></a>00846 {
-<a name="l00847"></a>00847 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
-<a name="l00848"></a>00848 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
-<a name="l00851"></a>00851 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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);
-<a name="l00852"></a>00852 }
-<a name="l00853"></a>00853 }
-<a name="l00854"></a>00854 <span class="keywordflow">else</span>
-<a name="l00855"></a>00855 {
-<a name="l00856"></a>00856 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
-<a name="l00857"></a>00857 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
-<a name="l00858"></a>00858 {
-<a name="l00859"></a>00859 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
-<a name="l00860"></a>00860 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
-<a name="l00861"></a>00861 }
-<a name="l00862"></a>00862 }
-<a name="l00863"></a>00863 <span class="keywordflow">return</span>;
-<a name="l00864"></a>00864 }
-<a name="l00865"></a>00865 }
+<a name="l00755"></a><a class="code" href="classConfigReader.html#ConfigReader_28std_3A_3Astring_20filename_29">00755</a> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader::ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
+<a name="l00756"></a>00756 {
+<a name="l00757"></a>00757 Config-&gt;<a class="code" href="classServerConfig.html#ClearStack_28_29">ClearStack</a>();
+<a name="l00758"></a>00758 this-&gt;<a class="code" href="classConfigReader.html#cache">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00759"></a>00759 this-&gt;<a class="code" href="classConfigReader.html#errorlog">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+<a name="l00760"></a>00760 this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a> = Config-&gt;<a class="code" href="classServerConfig.html#LoadConf_28const_20char_20_2Afilename_2C_20std_3A_3Astringstream_20_2Atarget_2C_20std_3A_3Astringstream_20_2Aerrorstream_29">LoadConf</a>(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>);
+<a name="l00761"></a>00761 <span class="keywordflow">if</span> (!this-&gt;readerror)
+<a name="l00762"></a>00762 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>;
+<a name="l00763"></a>00763 };
+<a name="l00764"></a>00764
+<a name="l00765"></a><a class="code" href="classConfigReader.html#ReadValue_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00765</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)
+<a name="l00766"></a>00766 {
+<a name="l00767"></a>00767 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00768"></a>00768 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00769"></a>00769 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00770"></a>00770 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00771"></a>00771 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00773"></a>00773 <span class="keywordflow">if</span> (!res)
+<a name="l00774"></a>00774 {
+<a name="l00775"></a>00775 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>;
+<a name="l00776"></a>00776 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00777"></a>00777 }
+<a name="l00778"></a>00778 <span class="keywordflow">return</span> val;
+<a name="l00779"></a>00779 }
+<a name="l00780"></a>00780
+<a name="l00781"></a><a class="code" href="classConfigReader.html#ReadFlag_28std_3A_3Astring_20tag_2C_20std_3A_3Astring_20name_2C_20int_20index_29">00781</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)
+<a name="l00782"></a>00782 {
+<a name="l00783"></a>00783 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00784"></a>00784 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00785"></a>00785 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00786"></a>00786 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00787"></a>00787 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00788"></a>00788 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (!res)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 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>;
+<a name="l00792"></a>00792 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00793"></a>00793 }
+<a name="l00794"></a>00794 <a class="code" href="namespaceirc.html#string">std::string</a> s = val;
+<a name="l00795"></a>00795 <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>));
+<a name="l00796"></a>00796 }
+<a name="l00797"></a>00797
+<a name="l00798"></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">00798</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)
+<a name="l00799"></a>00799 {
+<a name="l00800"></a>00800 <span class="keywordtype">char</span> val[MAXBUF];
+<a name="l00801"></a>00801 <span class="keywordtype">char</span> t[MAXBUF];
+<a name="l00802"></a>00802 <span class="keywordtype">char</span> n[MAXBUF];
+<a name="l00803"></a>00803 strlcpy(t,tag.c_str(),MAXBUF);
+<a name="l00804"></a>00804 strlcpy(n,name.c_str(),MAXBUF);
+<a name="l00805"></a>00805 <span class="keywordtype">int</span> res = Config-&gt;<a class="code" href="classServerConfig.html#ReadConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_2C_20const_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_29">ReadConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,t,n,index,val);
+<a name="l00806"></a>00806 <span class="keywordflow">if</span> (!res)
+<a name="l00807"></a>00807 {
+<a name="l00808"></a>00808 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>;
+<a name="l00809"></a>00809 <span class="keywordflow">return</span> 0;
+<a name="l00810"></a>00810 }
+<a name="l00811"></a>00811 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
+<a name="l00812"></a>00812 {
+<a name="l00813"></a>00813 <span class="keywordflow">if</span> (!isdigit(val[i]))
+<a name="l00814"></a>00814 {
+<a name="l00815"></a>00815 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>;
+<a name="l00816"></a>00816 <span class="keywordflow">return</span> 0;
+<a name="l00817"></a>00817 }
+<a name="l00818"></a>00818 }
+<a name="l00819"></a>00819 <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
+<a name="l00820"></a>00820 {
+<a name="l00821"></a>00821 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>;
+<a name="l00822"></a>00822 <span class="keywordflow">return</span> 0;
+<a name="l00823"></a>00823 }
+<a name="l00824"></a>00824 <span class="keywordflow">return</span> atoi(val);
+<a name="l00825"></a>00825 }
+<a name="l00826"></a>00826
+<a name="l00827"></a><a class="code" href="classConfigReader.html#GetError_28_29">00827</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">ConfigReader::GetError</a>()
+<a name="l00828"></a>00828 {
+<a name="l00829"></a>00829 <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l00830"></a>00830 this-&gt;<a class="code" href="classConfigReader.html#error">error</a> = 0;
+<a name="l00831"></a>00831 <span class="keywordflow">return</span> olderr;
+<a name="l00832"></a>00832 }
+<a name="l00833"></a>00833
+<a name="l00834"></a><a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">00834</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)
+<a name="l00835"></a>00835 {
+<a name="l00836"></a>00836 <span class="keywordflow">if</span> (bail)
+<a name="l00837"></a>00837 {
+<a name="l00838"></a>00838 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());
+<a name="l00839"></a>00839 exit(0);
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841 <span class="keywordflow">else</span>
+<a name="l00842"></a>00842 {
+<a name="l00843"></a>00843 <span class="keywordtype">char</span> dataline[1024];
+<a name="l00844"></a>00844 <span class="keywordflow">if</span> (user)
+<a name="l00845"></a>00845 {
+<a name="l00846"></a>00846 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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>);
+<a name="l00847"></a>00847 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
+<a name="l00848"></a>00848 {
+<a name="l00849"></a>00849 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
+<a name="l00850"></a>00850 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(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);
+<a name="l00851"></a>00851 }
+<a name="l00852"></a>00852 }
+<a name="l00853"></a>00853 <span class="keywordflow">else</span>
+<a name="l00854"></a>00854 {
+<a name="l00855"></a>00855 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00856"></a>00856 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;eof())
+<a name="l00857"></a>00857 {
+<a name="l00858"></a>00858 <a class="code" href="classConfigReader.html#errorlog">errorlog</a>-&gt;getline(dataline,1024);
+<a name="l00859"></a>00859 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(dataline);
+<a name="l00860"></a>00860 }
+<a name="l00861"></a>00861 }
+<a name="l00862"></a>00862 <span class="keywordflow">return</span>;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 }
+<a name="l00865"></a>00865
<a name="l00866"></a>00866
-<a name="l00867"></a>00867
-<a name="l00868"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00868</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)
-<a name="l00869"></a>00869 {
-<a name="l00870"></a>00870 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
-<a name="l00871"></a>00871 }
-<a name="l00872"></a>00872
-<a name="l00873"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00873</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)
-<a name="l00874"></a>00874 {
-<a name="l00875"></a>00875 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
-<a name="l00876"></a>00876 }
-<a name="l00877"></a>00877
-<a name="l00878"></a><a class="code" href="classConfigReader.html#Verify_28_29">00878</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>()
-<a name="l00879"></a>00879 {
-<a name="l00880"></a>00880 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l00881"></a>00881 }
+<a name="l00867"></a><a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">00867</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)
+<a name="l00868"></a>00868 {
+<a name="l00869"></a>00869 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#EnumConf_28std_3A_3Astringstream_20_2Aconfig_5Ff_2C_20const_20char_20_2Atag_29">EnumConf</a>(<a class="code" href="classConfigReader.html#cache">cache</a>,tag.c_str());
+<a name="l00870"></a>00870 }
+<a name="l00871"></a>00871
+<a name="l00872"></a><a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">00872</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)
+<a name="l00873"></a>00873 {
+<a name="l00874"></a>00874 <span class="keywordflow">return</span> Config-&gt;<a class="code" href="classServerConfig.html#EnumValues_28std_3A_3Astringstream_20_2Aconfig_2C_20const_20char_20_2Atag_2C_20int_20index_29">EnumValues</a>(<a class="code" href="classConfigReader.html#cache">cache</a>, tag.c_str(), index);
+<a name="l00875"></a>00875 }
+<a name="l00876"></a>00876
+<a name="l00877"></a><a class="code" href="classConfigReader.html#Verify_28_29">00877</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">ConfigReader::Verify</a>()
+<a name="l00878"></a>00878 {
+<a name="l00879"></a>00879 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l00880"></a>00880 }
+<a name="l00881"></a>00881
<a name="l00882"></a>00882
-<a name="l00883"></a>00883
-<a name="l00884"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00884</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
-<a name="l00885"></a>00885 {
-<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00887"></a>00887 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00888"></a>00888 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00889"></a>00889 }
-<a name="l00890"></a>00890
-<a name="l00891"></a><a class="code" href="classFileReader.html#FileReader_28_29">00891</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>()
-<a name="l00892"></a>00892 {
-<a name="l00893"></a>00893 }
-<a name="l00894"></a>00894
-<a name="l00895"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00895</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)
-<a name="l00896"></a>00896 {
-<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
-<a name="l00898"></a>00898 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
-<a name="l00899"></a>00899 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
-<a name="l00900"></a>00900 }
+<a name="l00883"></a><a class="code" href="classFileReader.html#FileReader_28std_3A_3Astring_20filename_29">00883</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename)
+<a name="l00884"></a>00884 {
+<a name="l00885"></a>00885 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00886"></a>00886 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00887"></a>00887 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00888"></a>00888 }
+<a name="l00889"></a>00889
+<a name="l00890"></a><a class="code" href="classFileReader.html#FileReader_28_29">00890</a> <a class="code" href="classFileReader.html#FileReader_28_29">FileReader::FileReader</a>()
+<a name="l00891"></a>00891 {
+<a name="l00892"></a>00892 }
+<a name="l00893"></a>00893
+<a name="l00894"></a><a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">00894</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)
+<a name="l00895"></a>00895 {
+<a name="l00896"></a>00896 <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> c;
+<a name="l00897"></a>00897 <a class="code" href="globals_8h.html#readfile_28file_5Fcache_20_26F_2C_20const_20char_20_2Afname_29">readfile</a>(c,filename.c_str());
+<a name="l00898"></a>00898 this-&gt;<a class="code" href="classFileReader.html#fc">fc</a> = c;
+<a name="l00899"></a>00899 }
+<a name="l00900"></a>00900
<a name="l00901"></a>00901
-<a name="l00902"></a>00902
-<a name="l00903"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00903</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>()
-<a name="l00904"></a>00904 {
-<a name="l00905"></a>00905 }
-<a name="l00906"></a>00906
-<a name="l00907"></a><a class="code" href="classFileReader.html#Exists_28_29">00907</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>()
-<a name="l00908"></a>00908 {
-<a name="l00909"></a>00909 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
-<a name="l00910"></a>00910 {
-<a name="l00911"></a>00911 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-<a name="l00912"></a>00912 }
-<a name="l00913"></a>00913 <span class="keywordflow">else</span>
-<a name="l00914"></a>00914 {
-<a name="l00915"></a>00915 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-<a name="l00916"></a>00916 }
-<a name="l00917"></a>00917 }
-<a name="l00918"></a>00918
-<a name="l00919"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00919</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)
-<a name="l00920"></a>00920 {
-<a name="l00921"></a>00921 <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()))
-<a name="l00922"></a>00922 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
-<a name="l00924"></a>00924 }
-<a name="l00925"></a>00925
-<a name="l00926"></a><a class="code" href="classFileReader.html#FileSize_28_29">00926</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>()
-<a name="l00927"></a>00927 {
-<a name="l00928"></a>00928 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
-<a name="l00929"></a>00929 }
+<a name="l00902"></a><a class="code" href="classFileReader.html#_7EFileReader_28_29">00902</a> <a class="code" href="classFileReader.html#_7EFileReader_28_29">FileReader::~FileReader</a>()
+<a name="l00903"></a>00903 {
+<a name="l00904"></a>00904 }
+<a name="l00905"></a>00905
+<a name="l00906"></a><a class="code" href="classFileReader.html#Exists_28_29">00906</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">FileReader::Exists</a>()
+<a name="l00907"></a>00907 {
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#fc">fc</a>.size() == 0)
+<a name="l00909"></a>00909 {
+<a name="l00910"></a>00910 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+<a name="l00911"></a>00911 }
+<a name="l00912"></a>00912 <span class="keywordflow">else</span>
+<a name="l00913"></a>00913 {
+<a name="l00914"></a>00914 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916 }
+<a name="l00917"></a>00917
+<a name="l00918"></a><a class="code" href="classFileReader.html#GetLine_28int_20x_29">00918</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)
+<a name="l00919"></a>00919 {
+<a name="l00920"></a>00920 <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()))
+<a name="l00921"></a>00921 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00922"></a>00922 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>[x];
+<a name="l00923"></a>00923 }
+<a name="l00924"></a>00924
+<a name="l00925"></a><a class="code" href="classFileReader.html#FileSize_28_29">00925</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileReader::FileSize</a>()
+<a name="l00926"></a>00926 {
+<a name="l00927"></a>00927 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#fc">fc</a>.size();
+<a name="l00928"></a>00928 }
+<a name="l00929"></a>00929
<a name="l00930"></a>00930
-<a name="l00931"></a>00931
-<a name="l00932"></a>00932 std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>(255);
-<a name="l00933"></a>00933 std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>(255);
-<a name="l00934"></a>00934
-<a name="l00935"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00935</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1;
+<a name="l00931"></a>00931 std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>(255);
+<a name="l00932"></a>00932 std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>(255);
+<a name="l00933"></a>00933
+<a name="l00934"></a><a class="code" href="modules_8cpp.html#MODCOUNT">00934</a> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a> = -1;
+<a name="l00935"></a>00935
<a name="l00936"></a>00936
-<a name="l00937"></a>00937
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/modules_8cpp.html b/docs/module-doc/modules_8cpp.html
index 33b829252..c1e98e777 100644
--- a/docs/module-doc/modules_8cpp.html
+++ b/docs/module-doc/modules_8cpp.html
@@ -10,7 +10,6 @@
<h1>modules.cpp File Reference</h1><code>#include &quot;inspircd_config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>&quot;</code><br>
-<code>#include &quot;inspircd_util.h&quot;</code><br>
<code>#include &lt;unistd.h&gt;</code><br>
<code>#include &lt;sys/errno.h&gt;</code><br>
<code>#include &lt;time.h&gt;</code><br>
@@ -36,24 +35,25 @@
<code>#include &quot;<a class="el" href="socket_8h-source.html">socket.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="socketengine_8h-source.html">socketengine.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="typedefs_8h-source.html">typedefs.h</a>&quot;</code><br>
+<code>#include &quot;command_parse.h&quot;</code><br>
<p>
Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl.gif" border="0" usemap="#modules.cpp_map" alt=""></center>
<map name="modules.cpp_map">
-<area href="inspircd_8h-source.html" shape="rect" coords="610,799,690,826" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="742,716,838,743" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="902,970,976,996" alt="">
-<area href="users_8h-source.html" shape="rect" coords="1039,716,1103,743" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="754,970,826,996" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="468,1426,543,1452" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="312,1223,395,1250" alt="">
-<area href="message_8h-source.html" shape="rect" coords="896,716,982,743" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="906,412,972,439" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="908,362,970,388" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="890,311,988,338" alt="">
-<area href="hashcomp_8h-source.html" shape="rect" coords="307,1679,400,1706" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="450,970,562,996" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="163,1274,248,1300" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="305,716,385,743" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="452,666,548,692" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="627,666,701,692" alt="">
+<area href="users_8h-source.html" shape="rect" coords="772,818,836,844" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="896,1426,989,1452" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="623,1375,705,1402" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="767,1578,841,1604" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="768,1223,840,1250" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="631,1020,697,1047" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="444,412,556,439" alt="">
+<area href="message_8h-source.html" shape="rect" coords="621,615,707,642" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="633,362,695,388" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="615,919,713,946" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="163,1375,248,1402" alt="">
</map>
<p>
@@ -79,8 +79,6 @@ Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#factory_28_32_35_35_29">factory</a> (255)</td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#SE">SE</a></td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#Config">Config</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
@@ -101,7 +99,7 @@ Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#chan_5Fhash">chan_hash</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#chanlist">chanlist</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#ExtModeList">ExtModeList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8cpp.html#EMode">EMode</a></td></tr>
@@ -161,17 +159,17 @@ Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00134">134</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00133">133</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00071">ModeDefined()</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00070">ModeDefined()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 <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));
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00141"></a>00141 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#ModeDefined_28char_20modechar_2C_20int_20type_29">ModeDefined</a>(modechar,type)) {
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 <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));
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00140"></a>00140 }
</pre></div>
<p>
</td>
@@ -241,20 +239,20 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00071">71</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00070">70</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
</pre></div>
<p>
</td>
@@ -296,18 +294,18 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtended
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i-&gt;params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i-&gt;params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
</pre></div>
<p>
</td>
@@ -349,18 +347,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00107">107</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i-&gt;params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i-&gt;params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
</pre></div>
<p>
</td>
@@ -402,18 +400,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00095">95</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00094">94</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <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>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <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>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
@@ -455,18 +453,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00083">83</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00082">82</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <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>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <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>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
</pre></div>
<p>
</td>
@@ -499,21 +497,21 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00144">144</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <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>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i-&gt;list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <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>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i-&gt;list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
</pre></div>
<p>
</td>
@@ -577,7 +575,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="modules_8cpp.html#clientlist">clientlist</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="users_8cpp.html#clientlist">clientlist</a> </td>
</tr>
</table>
</td>
@@ -591,7 +589,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="users_8cpp-source.html#l00743">ReHashNick()</a>. </td>
</tr>
</table>
<a class="anchor" name="cmdlist"></a><!-- doxytag: member="modules.cpp::cmdlist" ref="cmdlist" args="" --><p>
@@ -600,7 +600,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a> <a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="ctables_8h.html#command_5Ftable">command_table</a> <a class="el" href="modules_8cpp.html#cmdlist">cmdlist</a> </td>
</tr>
</table>
</td>
@@ -662,9 +662,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00068">68</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00067">67</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00071">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00121">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00108">ModeDefinedOn()</a>, <a class="el" href="modules_8cpp-source.html#l00095">ModeDefinedOper()</a>, <a class="el" href="modules_8cpp-source.html#l00083">ModeIsListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00070">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00120">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00107">ModeDefinedOn()</a>, <a class="el" href="modules_8cpp-source.html#l00094">ModeDefinedOper()</a>, <a class="el" href="modules_8cpp-source.html#l00082">ModeIsListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>. </td>
</tr>
</table>
<a class="anchor" name="factory"></a><!-- doxytag: member="modules.cpp::factory" ref="factory" args="" --><p>
@@ -696,7 +696,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtended
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
</tr>
</table>
</td>
@@ -719,7 +719,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtended
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">int <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> = -1 </td>
</tr>
</table>
</td>
@@ -735,7 +735,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtended
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00934">934</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a class="anchor" name="module_5Fsockets"></a><!-- doxytag: member="modules.cpp::module_sockets" ref="module_5Fsockets" args="" --><p>
@@ -744,7 +744,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classInspSocket.html">InspSocket</a>*&gt; <a class="el" href="modules_8cpp.html#module_5Fsockets">module_sockets</a> </td>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classInspSocket.html">InspSocket</a>*&gt; <a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a> </td>
</tr>
</table>
</td>
@@ -760,7 +760,7 @@ Definition at line <a class="el" href="modules_8cpp-source.html#l00935">935</a>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00313">Server::AddSocket()</a>, and <a class="el" href="modules_8cpp-source.html#l00334">Server::DelSocket()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00312">Server::AddSocket()</a>, and <a class="el" href="modules_8cpp-source.html#l00333">Server::DelSocket()</a>. </td>
</tr>
</table>
<a class="anchor" name="modules"></a><!-- doxytag: member="modules.cpp::modules" ref="modules" args="" --><p>
@@ -786,36 +786,13 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00313">Server::AddSo
</td>
</tr>
</table>
-<a class="anchor" name="SE"></a><!-- doxytag: member="modules.cpp::SE" ref="SE" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="socket_8cpp.html#SE">SE</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
<a class="anchor" name="ServerInstance"></a><!-- doxytag: member="modules.cpp::ServerInstance" ref="ServerInstance" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="modules_8cpp.html#ServerInstance">ServerInstance</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
</tr>
</table>
</td>
@@ -855,7 +832,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00313">Server::AddSo
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/modules_8cpp__incl.map b/docs/module-doc/modules_8cpp__incl.map
index 056ed18df..957fa469e 100644
--- a/docs/module-doc/modules_8cpp__incl.map
+++ b/docs/module-doc/modules_8cpp__incl.map
@@ -1,15 +1,15 @@
base referer
-rect $inspircd_8h-source.html 610,799 690,826
-rect $inspircd__io_8h-source.html 742,716 838,743
-rect $globals_8h-source.html 902,970 976,996
-rect $users_8h-source.html 1039,716 1103,743
-rect $socket_8h-source.html 754,970 826,996
-rect $ctables_8h-source.html 468,1426 543,1452
-rect $modules_8h-source.html 312,1223 395,1250
-rect $message_8h-source.html 896,716 982,743
-rect $mode_8h-source.html 906,412 972,439
-rect $xline_8h-source.html 908,362 970,388
-rect $commands_8h-source.html 890,311 988,338
-rect $hashcomp_8h-source.html 307,1679 400,1706
-rect $socketengine_8h-source.html 450,970 562,996
-rect $typedefs_8h-source.html 163,1274 248,1300
+rect $inspircd_8h-source.html 305,716 385,743
+rect $inspircd__io_8h-source.html 452,666 548,692
+rect $globals_8h-source.html 627,666 701,692
+rect $users_8h-source.html 772,818 836,844
+rect $hashcomp_8h-source.html 896,1426 989,1452
+rect $modules_8h-source.html 623,1375 705,1402
+rect $ctables_8h-source.html 767,1578 841,1604
+rect $socket_8h-source.html 768,1223 840,1250
+rect $mode_8h-source.html 631,1020 697,1047
+rect $socketengine_8h-source.html 444,412 556,439
+rect $message_8h-source.html 621,615 707,642
+rect $xline_8h-source.html 633,362 695,388
+rect $commands_8h-source.html 615,919 713,946
+rect $typedefs_8h-source.html 163,1375 248,1402
diff --git a/docs/module-doc/modules_8cpp__incl.md5 b/docs/module-doc/modules_8cpp__incl.md5
index 10e2c307c..d0f388278 100644
--- a/docs/module-doc/modules_8cpp__incl.md5
+++ b/docs/module-doc/modules_8cpp__incl.md5
@@ -1 +1 @@
-2384cd0922e32b841176cc7e795d3e18 \ No newline at end of file
+4e8aa95ae7fcdb9cbd30aed0c54c5b3b \ No newline at end of file
diff --git a/docs/module-doc/modules_8h-source.html b/docs/module-doc/modules_8h-source.html
index a156711a2..554028446 100644
--- a/docs/module-doc/modules_8h-source.html
+++ b/docs/module-doc/modules_8h-source.html
@@ -63,475 +63,493 @@
<a name="l00062"></a>00062 <span class="preprocessor">#include &lt;deque&gt;</span>
<a name="l00063"></a>00063 <span class="preprocessor">#include &lt;sstream&gt;</span>
<a name="l00064"></a>00064
-<a name="l00065"></a><a class="code" href="modules_8h.html#file_5Fcache">00065</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
-<a name="l00066"></a>00066
-<a name="l00069"></a>00069 <span class="keyword">typedef</span> std::deque&lt;std::string&gt; <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
-<a name="l00070"></a><a class="code" href="modules_8h.html#string_5Flist">00070</a> <span class="keyword">typedef</span> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>;
-<a name="l00071"></a>00071
-<a name="l00074"></a><a class="code" href="modules_8h.html#chanuserlist">00074</a> <span class="keyword">typedef</span> std::deque&lt;userrec*&gt; <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a>;
-<a name="l00075"></a>00075
+<a name="l00065"></a>00065 <span class="keyword">class </span><a class="code" href="classServer.html">Server</a>;
+<a name="l00066"></a><a class="code" href="modules_8h.html#file_5Fcache">00066</a> <span class="keyword">class </span><a class="code" href="classServerConfig.html">ServerConfig</a>;
+<a name="l00067"></a>00067
+<a name="l00070"></a>00070 <span class="keyword">typedef</span> std::deque&lt;std::string&gt; <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
+<a name="l00071"></a><a class="code" href="modules_8h.html#string_5Flist">00071</a> <span class="keyword">typedef</span> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="modules_8h.html#string_5Flist">string_list</a>;
+<a name="l00072"></a>00072
+<a name="l00075"></a><a class="code" href="modules_8h.html#chanuserlist">00075</a> <span class="keyword">typedef</span> std::deque&lt;userrec*&gt; <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a>;
<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="comment">// This #define allows us to call a method in all</span>
-<a name="l00078"></a>00078 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
-<a name="l00079"></a>00079 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
-<a name="l00080"></a>00080
-<a name="l00081"></a><a class="code" href="modules_8h.html#FOREACH_5FMOD">00081</a> <span class="preprocessor">#define FOREACH_MOD for (int _i = 0; _i &lt;= MODCOUNT; _i++) modules[_i]-&gt;</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a>00083 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
-<a name="l00084"></a>00084 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
-<a name="l00085"></a>00085 <span class="comment">// and any modules after are ignored.</span>
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="comment">// *********************************************************************************************</span>
-<a name="l00088"></a>00088
-<a name="l00089"></a><a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">00089</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
-<a name="l00090"></a>00090 <span class="preprocessor"> for (int _i = 0; _i &lt;= MODCOUNT; _i++) { \</span>
-<a name="l00091"></a>00091 <span class="preprocessor"> int res = modules[_i]-&gt;x ; \</span>
-<a name="l00092"></a>00092 <span class="preprocessor"> if (res != 0) { \</span>
-<a name="l00093"></a>00093 <span class="preprocessor"> MOD_RESULT = res; \</span>
-<a name="l00094"></a>00094 <span class="preprocessor"> break; \</span>
-<a name="l00095"></a>00095 <span class="preprocessor"> } \</span>
-<a name="l00096"></a>00096 <span class="preprocessor"> } \</span>
-<a name="l00097"></a>00097 <span class="preprocessor"> } </span>
-<a name="l00098"></a>00098 <span class="preprocessor"></span>
-<a name="l00099"></a>00099 <span class="comment">// *********************************************************************************************</span>
-<a name="l00100"></a>00100
-<a name="l00101"></a><a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">00101</a> <span class="preprocessor">#define FD_MAGIC_NUMBER -42</span>
-<a name="l00102"></a>00102 <span class="preprocessor"></span>
-<a name="l00103"></a>00103 <span class="keyword">extern</span> <span class="keywordtype">void</span> <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>(<span class="keywordtype">char</span>* cmd, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
-<a name="l00104"></a>00104 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="mode_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="comment">// This #define allows us to call a method in all</span>
+<a name="l00079"></a>00079 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
+<a name="l00080"></a>00080 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
+<a name="l00081"></a>00081
+<a name="l00082"></a><a class="code" href="modules_8h.html#FOREACH_5FMOD">00082</a> <span class="preprocessor">#define FOREACH_MOD for (int _i = 0; _i &lt;= MODCOUNT; _i++) modules[_i]-&gt;</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span>
+<a name="l00084"></a>00084 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
+<a name="l00085"></a>00085 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
+<a name="l00086"></a>00086 <span class="comment">// and any modules after are ignored.</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="comment">// *********************************************************************************************</span>
+<a name="l00089"></a>00089
+<a name="l00090"></a><a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">00090</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
+<a name="l00091"></a>00091 <span class="preprocessor"> for (int _i = 0; _i &lt;= MODCOUNT; _i++) { \</span>
+<a name="l00092"></a>00092 <span class="preprocessor"> int res = modules[_i]-&gt;x ; \</span>
+<a name="l00093"></a>00093 <span class="preprocessor"> if (res != 0) { \</span>
+<a name="l00094"></a>00094 <span class="preprocessor"> MOD_RESULT = res; \</span>
+<a name="l00095"></a>00095 <span class="preprocessor"> break; \</span>
+<a name="l00096"></a>00096 <span class="preprocessor"> } \</span>
+<a name="l00097"></a>00097 <span class="preprocessor"> } \</span>
+<a name="l00098"></a>00098 <span class="preprocessor"> } </span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>
+<a name="l00100"></a>00100 <span class="comment">// *********************************************************************************************</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a><a class="code" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">00102</a> <span class="preprocessor">#define FD_MAGIC_NUMBER -42</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00104"></a>00104 <span class="comment">// useful macros</span>
<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// class Version holds the version information of a Module, returned</span>
-<a name="l00107"></a>00107 <span class="comment">// by Module::GetVersion (thanks RD)</span>
-<a name="l00108"></a>00108
-<a name="l00113"></a><a class="code" href="classVersion.html">00113</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="keyword">public</span>:
-<a name="l00116"></a><a class="code" href="classVersion.html#Revision">00116</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#Major">Major</a>, <a class="code" href="classVersion.html#Minor">Minor</a>, <a class="code" href="classVersion.html#Revision">Revision</a>, <a class="code" href="classVersion.html#Build">Build</a>, <a class="code" href="classVersion.html#Flags">Flags</a>;
-<a name="l00117"></a>00117 <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">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);
-<a name="l00118"></a>00118 };
-<a name="l00119"></a>00119
-<a name="l00125"></a><a class="code" href="classAdmin.html">00125</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keyword">public</span>:
-<a name="l00128"></a><a class="code" href="classAdmin.html#Nick">00128</a> <span class="keyword">const</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classAdmin.html#Name">Name</a>, <a class="code" href="classAdmin.html#Email">Email</a>, <a class="code" href="classAdmin.html#Nick">Nick</a>;
-<a name="l00129"></a>00129 <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">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);
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// Forward-delacare module for ModuleMessage etc</span>
-<a name="l00134"></a>00134 <span class="keyword">class </span><a class="code" href="classModule.html">Module</a>;
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="comment">// Thanks to Rob (from anope) for the idea of this message passing API</span>
-<a name="l00137"></a>00137 <span class="comment">// (its been done before, but this seemed a very neat and tidy way...</span>
-<a name="l00138"></a>00138
-<a name="l00143"></a><a class="code" href="classModuleMessage.html">00143</a> <span class="keyword">class </span><a class="code" href="classModuleMessage.html">ModuleMessage</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00106"></a><a class="code" href="modules_8h.html#IS_5FLOCAL_28x_29">00106</a> <span class="preprocessor">#define IS_LOCAL(x) (x-&gt;fd &gt; -1)</span>
+<a name="l00107"></a><a class="code" href="modules_8h.html#IS_5FREMOTE_28x_29">00107</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_REMOTE(x) (x-&gt;fd &lt; 0)</span>
+<a name="l00108"></a><a class="code" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">00108</a> <span class="preprocessor"></span><span class="preprocessor">#define IS_MODULE_CREATED(x) (x-&gt;fd == FD_MAGIC_NUMBER)</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00110"></a>00110 <span class="comment">// flags for use with WriteMode</span>
+<a name="l00111"></a>00111
+<a name="l00112"></a><a class="code" href="modules_8h.html#WM_5FAND">00112</a> <span class="preprocessor">#define WM_AND 1</span>
+<a name="l00113"></a><a class="code" href="modules_8h.html#WM_5FOR">00113</a> <span class="preprocessor"></span><span class="preprocessor">#define WM_OR 2</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span>
+<a name="l00115"></a>00115 <span class="comment">// flags for use with OnUserPreMessage and OnUserPreNotice</span>
+<a name="l00116"></a>00116
+<a name="l00117"></a><a class="code" href="modules_8h.html#TYPE_5FUSER">00117</a> <span class="preprocessor">#define TYPE_USER 1</span>
+<a name="l00118"></a><a class="code" href="modules_8h.html#TYPE_5FCHANNEL">00118</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_CHANNEL 2</span>
+<a name="l00119"></a><a class="code" href="modules_8h.html#TYPE_5FSERVER">00119</a> <span class="preprocessor"></span><span class="preprocessor">#define TYPE_SERVER 3</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>
+<a name="l00121"></a>00121 <span class="comment">/*extern void createcommand(char* cmd, handlerfunc f, char flags, int minparams, char* source);</span>
+<a name="l00122"></a>00122 <span class="comment">extern void server_mode(char **parameters, int pcnt, userrec *user);*/</span>
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// class Version holds the version information of a Module, returned</span>
+<a name="l00125"></a>00125 <span class="comment">// by Module::GetVersion (thanks RD)</span>
+<a name="l00126"></a>00126
+<a name="l00131"></a><a class="code" href="classVersion.html">00131</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">public</span>:
+<a name="l00134"></a><a class="code" href="classVersion.html#Revision">00134</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#Major">Major</a>, <a class="code" href="classVersion.html#Minor">Minor</a>, <a class="code" href="classVersion.html#Revision">Revision</a>, <a class="code" href="classVersion.html#Build">Build</a>, <a class="code" href="classVersion.html#Flags">Flags</a>;
+<a name="l00135"></a>00135 <a class="code" href="classVersion.html#Version_28int_20major_2C_20int_20minor_2C_20int_20revision_2C_20int_20build_2C_20int_20flags_29">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);
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137
+<a name="l00143"></a><a class="code" href="classAdmin.html">00143</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
<a name="l00144"></a>00144 {
<a name="l00145"></a>00145 <span class="keyword">public</span>:
-<a name="l00148"></a>00148 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>() = 0;
-<a name="l00149"></a><a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">00149</a> <span class="keyword">virtual</span> <a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>() {};
-<a name="l00150"></a>00150 };
-<a name="l00151"></a>00151
-<a name="l00157"></a><a class="code" href="classRequest.html">00157</a> <span class="keyword">class </span><a class="code" href="classRequest.html">Request</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="keyword">protected</span>:
-<a name="l00162"></a><a class="code" href="classRequest.html#data">00162</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#data">data</a>;
-<a name="l00166"></a><a class="code" href="classRequest.html#source">00166</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#source">source</a>;
-<a name="l00169"></a><a class="code" href="classRequest.html#dest">00169</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#dest">dest</a>;
-<a name="l00170"></a>00170 <span class="keyword">public</span>:
-<a name="l00173"></a>00173 <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">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);
-<a name="l00176"></a>00176 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">GetData</a>();
-<a name="l00179"></a>00179 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">GetSource</a>();
-<a name="l00182"></a>00182 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">GetDest</a>();
-<a name="l00188"></a>00188 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Send</a>();
-<a name="l00189"></a>00189 };
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00197"></a><a class="code" href="classEvent.html">00197</a> <span class="keyword">class </span><a class="code" href="classEvent.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <span class="keyword">protected</span>:
-<a name="l00202"></a><a class="code" href="classEvent.html#data">00202</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#data">data</a>;
-<a name="l00206"></a><a class="code" href="classEvent.html#source">00206</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#source">source</a>;
-<a name="l00211"></a><a class="code" href="classEvent.html#id">00211</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#id">id</a>;
-<a name="l00212"></a>00212 <span class="keyword">public</span>:
-<a name="l00215"></a>00215 <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">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);
-<a name="l00218"></a>00218 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">GetData</a>();
-<a name="l00221"></a>00221 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">GetSource</a>();
-<a name="l00225"></a>00225 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">GetEventID</a>();
-<a name="l00230"></a>00230 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Send</a>();
-<a name="l00231"></a>00231 };
-<a name="l00232"></a>00232
-<a name="l00236"></a><a class="code" href="classExtMode.html">00236</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>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <span class="keyword">public</span>:
-<a name="l00239"></a><a class="code" href="classExtMode.html#modechar">00239</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#modechar">modechar</a>;
-<a name="l00240"></a><a class="code" href="classExtMode.html#type">00240</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#type">type</a>;
-<a name="l00241"></a><a class="code" href="classExtMode.html#needsoper">00241</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#needsoper">needsoper</a>;
-<a name="l00242"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Fon">00242</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>;
-<a name="l00243"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Foff">00243</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>;
-<a name="l00244"></a><a class="code" href="classExtMode.html#list">00244</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#list">list</a>;
-<a name="l00245"></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">00245</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) { };
-<a name="l00246"></a>00246 };
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248
-<a name="l00254"></a><a class="code" href="classModule.html">00254</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00146"></a><a class="code" href="classAdmin.html#Nick">00146</a> <span class="keyword">const</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classAdmin.html#Name">Name</a>, <a class="code" href="classAdmin.html#Email">Email</a>, <a class="code" href="classAdmin.html#Nick">Nick</a>;
+<a name="l00147"></a>00147 <a class="code" href="classAdmin.html#Admin_28std_3A_3Astring_20name_2C_20std_3A_3Astring_20email_2C_20std_3A_3Astring_20nick_29">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);
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="comment">// Forward-delacare module for ModuleMessage etc</span>
+<a name="l00152"></a>00152 <span class="keyword">class </span><a class="code" href="classModule.html">Module</a>;
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="comment">// Thanks to Rob (from anope) for the idea of this message passing API</span>
+<a name="l00155"></a>00155 <span class="comment">// (its been done before, but this seemed a very neat and tidy way...</span>
+<a name="l00156"></a>00156
+<a name="l00161"></a><a class="code" href="classModuleMessage.html">00161</a> <span class="keyword">class </span><a class="code" href="classModuleMessage.html">ModuleMessage</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keyword">public</span>:
+<a name="l00166"></a>00166 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModuleMessage.html#Send_28_29_3D_30">Send</a>() = 0;
+<a name="l00167"></a><a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">00167</a> <span class="keyword">virtual</span> <a class="code" href="classModuleMessage.html#_7EModuleMessage_28_29">~ModuleMessage</a>() {};
+<a name="l00168"></a>00168 };
+<a name="l00169"></a>00169
+<a name="l00175"></a><a class="code" href="classRequest.html">00175</a> <span class="keyword">class </span><a class="code" href="classRequest.html">Request</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
+<a name="l00176"></a>00176 {
+<a name="l00177"></a>00177 <span class="keyword">protected</span>:
+<a name="l00180"></a><a class="code" href="classRequest.html#data">00180</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#data">data</a>;
+<a name="l00184"></a><a class="code" href="classRequest.html#source">00184</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#source">source</a>;
+<a name="l00187"></a><a class="code" href="classRequest.html#dest">00187</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#dest">dest</a>;
+<a name="l00188"></a>00188 <span class="keyword">public</span>:
+<a name="l00191"></a>00191 <a class="code" href="classRequest.html#Request_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20Module_20_2Adst_29">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);
+<a name="l00194"></a>00194 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#GetData_28_29">GetData</a>();
+<a name="l00197"></a>00197 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetSource_28_29">GetSource</a>();
+<a name="l00200"></a>00200 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#GetDest_28_29">GetDest</a>();
+<a name="l00206"></a>00206 <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#Send_28_29">Send</a>();
+<a name="l00207"></a>00207 };
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209
+<a name="l00215"></a><a class="code" href="classEvent.html">00215</a> <span class="keyword">class </span><a class="code" href="classEvent.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 <span class="keyword">protected</span>:
+<a name="l00220"></a><a class="code" href="classEvent.html#data">00220</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#data">data</a>;
+<a name="l00224"></a><a class="code" href="classEvent.html#source">00224</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#source">source</a>;
+<a name="l00229"></a><a class="code" href="classEvent.html#id">00229</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#id">id</a>;
+<a name="l00230"></a>00230 <span class="keyword">public</span>:
+<a name="l00233"></a>00233 <a class="code" href="classEvent.html#Event_28char_20_2Aanydata_2C_20Module_20_2Asrc_2C_20std_3A_3Astring_20eventid_29">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);
+<a name="l00236"></a>00236 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#GetData_28_29">GetData</a>();
+<a name="l00239"></a>00239 <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#GetSource_28_29">GetSource</a>();
+<a name="l00243"></a>00243 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classEvent.html#GetEventID_28_29">GetEventID</a>();
+<a name="l00248"></a>00248 <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#Send_28_29">Send</a>();
+<a name="l00249"></a>00249 };
+<a name="l00250"></a>00250
+<a name="l00254"></a><a class="code" href="classExtMode.html">00254</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>
<a name="l00255"></a>00255 {
<a name="l00256"></a>00256 <span class="keyword">public</span>:
-<a name="l00257"></a>00257
-<a name="l00262"></a>00262 <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module</a>(<a class="code" href="classServer.html">Server</a>* Me);
-<a name="l00263"></a>00263
-<a name="l00267"></a>00267 <span class="keyword">virtual</span> <a class="code" href="classModule.html#_7EModule_28_29">~Module</a>();
-<a name="l00268"></a>00268
-<a name="l00273"></a>00273 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">GetVersion</a>();
-<a name="l00274"></a>00274
-<a name="l00279"></a>00279 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00280"></a>00280
-<a name="l00288"></a>00288 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message);
-<a name="l00289"></a>00289
-<a name="l00296"></a>00296 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00297"></a>00297
-<a name="l00304"></a>00304 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00305"></a>00305
-<a name="l00312"></a>00312 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-<a name="l00313"></a>00313
-<a name="l00321"></a>00321 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter);
-<a name="l00322"></a>00322
-<a name="l00334"></a>00334 <span class="keyword">virtual</span> <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">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);
-<a name="l00335"></a>00335
-<a name="l00351"></a>00351 <span class="keyword">virtual</span> <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">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);
-<a name="l00352"></a>00352
-<a name="l00369"></a>00369 <span class="keyword">virtual</span> <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">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);
+<a name="l00257"></a><a class="code" href="classExtMode.html#modechar">00257</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#modechar">modechar</a>;
+<a name="l00258"></a><a class="code" href="classExtMode.html#type">00258</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#type">type</a>;
+<a name="l00259"></a><a class="code" href="classExtMode.html#needsoper">00259</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#needsoper">needsoper</a>;
+<a name="l00260"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Fon">00260</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Fon">params_when_on</a>;
+<a name="l00261"></a><a class="code" href="classExtMode.html#params_5Fwhen_5Foff">00261</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#params_5Fwhen_5Foff">params_when_off</a>;
+<a name="l00262"></a><a class="code" href="classExtMode.html#list">00262</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#list">list</a>;
+<a name="l00263"></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">00263</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) { };
+<a name="l00264"></a>00264 };
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266
+<a name="l00272"></a><a class="code" href="classModule.html">00272</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00273"></a>00273 {
+<a name="l00274"></a>00274 <span class="keyword">public</span>:
+<a name="l00275"></a>00275
+<a name="l00280"></a>00280 <a class="code" href="classModule.html#Module_28Server_20_2AMe_29">Module</a>(<a class="code" href="classServer.html">Server</a>* Me);
+<a name="l00281"></a>00281
+<a name="l00285"></a>00285 <span class="keyword">virtual</span> <a class="code" href="classModule.html#_7EModule_28_29">~Module</a>();
+<a name="l00286"></a>00286
+<a name="l00291"></a>00291 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#GetVersion_28_29">GetVersion</a>();
+<a name="l00292"></a>00292
+<a name="l00297"></a>00297 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserConnect_28userrec_20_2Auser_29">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00298"></a>00298
+<a name="l00306"></a>00306 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserQuit_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> message);
+<a name="l00307"></a>00307
+<a name="l00314"></a>00314 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserDisconnect_28userrec_20_2Auser_29">OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00315"></a>00315
+<a name="l00322"></a>00322 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserJoin_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00323"></a>00323
+<a name="l00330"></a>00330 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPart_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_29">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+<a name="l00331"></a>00331
+<a name="l00339"></a>00339 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRehash_28std_3A_3Astring_20parameter_29">OnRehash</a>(<a class="code" href="namespaceirc.html#string">std::string</a> parameter);
+<a name="l00340"></a>00340
+<a name="l00352"></a>00352 <span class="keyword">virtual</span> <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">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);
+<a name="l00353"></a>00353
+<a name="l00369"></a>00369 <span class="keyword">virtual</span> <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">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);
<a name="l00370"></a>00370
-<a name="l00381"></a>00381 <span class="keyword">virtual</span> <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">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);
-<a name="l00382"></a>00382
-<a name="l00391"></a>00391 <span class="keyword">virtual</span> <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">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);
-<a name="l00392"></a>00392
-<a name="l00399"></a>00399 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype);
-<a name="l00400"></a>00400
-<a name="l00411"></a>00411 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00412"></a>00412
-<a name="l00419"></a>00419 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
-<a name="l00420"></a>00420
-<a name="l00430"></a>00430 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">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);
-<a name="l00431"></a>00431
-<a name="l00439"></a>00439 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserInvite</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);
-<a name="l00440"></a>00440
-<a name="l00454"></a>00454 <span class="keyword">virtual</span> <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">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);
-<a name="l00455"></a>00455
-<a name="l00472"></a>00472 <span class="keyword">virtual</span> <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">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);
-<a name="l00473"></a>00473
-<a name="l00484"></a>00484 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick);
-<a name="l00485"></a>00485
-<a name="l00494"></a>00494 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserMessage</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> text);
-<a name="l00495"></a>00495
-<a name="l00504"></a>00504 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserNotice</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> text);
-<a name="l00505"></a>00505
-<a name="l00515"></a>00515 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnMode</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> text);
-<a name="l00516"></a>00516
-<a name="l00525"></a>00525 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &amp;description);
-<a name="l00526"></a>00526
-<a name="l00539"></a>00539 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
-<a name="l00540"></a>00540
-<a name="l00556"></a>00556 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
-<a name="l00557"></a>00557
-<a name="l00558"></a>00558 <span class="comment">/* Allows modules to syncronize metadata related to channels over the network during a netburst.</span>
-<a name="l00559"></a>00559 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
-<a name="l00560"></a>00560 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
-<a name="l00561"></a>00561 <span class="comment"> * this method is called.You should use the ProtoSendMetaData function after you've</span>
-<a name="l00562"></a>00562 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if it belongs</span>
-<a name="l00563"></a>00563 <span class="comment"> * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp.</span>
-<a name="l00564"></a>00564 <span class="comment"> * @param chan The channel whos metadata is being syncronized</span>
-<a name="l00565"></a>00565 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
-<a name="l00566"></a>00566 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
-<a name="l00567"></a>00567 <span class="comment"> * @param extname The extensions name which is being searched for</span>
-<a name="l00568"></a>00568 <span class="comment"> */</span>
-<a name="l00569"></a>00569 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
-<a name="l00570"></a>00570
-<a name="l00571"></a>00571 <span class="comment">/* Allows modules to syncronize metadata related to users over the network during a netburst.</span>
-<a name="l00572"></a>00572 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
-<a name="l00573"></a>00573 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
-<a name="l00574"></a>00574 <span class="comment"> * this method is called. You should use the ProtoSendMetaData function after you've</span>
-<a name="l00575"></a>00575 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if</span>
-<a name="l00576"></a>00576 <span class="comment"> * if it belongs to your module.</span>
-<a name="l00577"></a>00577 <span class="comment"> * @param user The user whos metadata is being syncronized</span>
-<a name="l00578"></a>00578 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
-<a name="l00579"></a>00579 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
-<a name="l00580"></a>00580 <span class="comment"> * @param extname The extensions name which is being searched for</span>
-<a name="l00581"></a>00581 <span class="comment"> */</span>
-<a name="l00582"></a>00582 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
-<a name="l00583"></a>00583
-<a name="l00591"></a>00591 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
-<a name="l00592"></a>00592
-<a name="l00606"></a>00606 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline);
-<a name="l00607"></a>00607
-<a name="l00622"></a>00622 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
-<a name="l00623"></a>00623
-<a name="l00628"></a>00628 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l00629"></a>00629
-<a name="l00635"></a>00635 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00636"></a>00636
-<a name="l00642"></a>00642 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
-<a name="l00643"></a>00643
-<a name="l00651"></a>00651 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddGLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00652"></a>00652
-<a name="l00660"></a>00660 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">OnAddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
+<a name="l00387"></a>00387 <span class="keyword">virtual</span> <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">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);
+<a name="l00388"></a>00388
+<a name="l00399"></a>00399 <span class="keyword">virtual</span> <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">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);
+<a name="l00400"></a>00400
+<a name="l00409"></a>00409 <span class="keyword">virtual</span> <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">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);
+<a name="l00410"></a>00410
+<a name="l00417"></a>00417 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnOper_28userrec_20_2Auser_2C_20std_3A_3Astring_20opertype_29">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> opertype);
+<a name="l00418"></a>00418
+<a name="l00429"></a>00429 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnInfo_28userrec_20_2Auser_29">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00430"></a>00430
+<a name="l00437"></a>00437 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWhois_28userrec_20_2Asource_2C_20userrec_20_2Adest_29">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
+<a name="l00438"></a>00438
+<a name="l00448"></a>00448 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">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);
+<a name="l00449"></a>00449
+<a name="l00457"></a>00457 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserInvite_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20chanrec_20_2Achannel_29">OnUserInvite</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);
+<a name="l00458"></a>00458
+<a name="l00472"></a>00472 <span class="keyword">virtual</span> <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">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);
+<a name="l00473"></a>00473
+<a name="l00490"></a>00490 <span class="keyword">virtual</span> <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">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);
+<a name="l00491"></a>00491
+<a name="l00502"></a>00502 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnUserPreNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20newnick_29">OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newnick);
+<a name="l00503"></a>00503
+<a name="l00512"></a>00512 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserMessage_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserMessage</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> text);
+<a name="l00513"></a>00513
+<a name="l00522"></a>00522 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserNotice_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnUserNotice</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> text);
+<a name="l00523"></a>00523
+<a name="l00533"></a>00533 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnMode_28userrec_20_2Auser_2C_20void_20_2Adest_2C_20int_20target_5Ftype_2C_20std_3A_3Astring_20text_29">OnMode</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> text);
+<a name="l00534"></a>00534
+<a name="l00543"></a>00543 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGetServerDescription_28std_3A_3Astring_20servername_2C_20std_3A_3Astring_20_26description_29">OnGetServerDescription</a>(<a class="code" href="namespaceirc.html#string">std::string</a> servername,<a class="code" href="namespaceirc.html#string">std::string</a> &amp;description);
+<a name="l00544"></a>00544
+<a name="l00557"></a>00557 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUser_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
+<a name="l00558"></a>00558
+<a name="l00574"></a>00574 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannel_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_29">OnSyncChannel</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto, <span class="keywordtype">void</span>* opaque);
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576 <span class="comment">/* Allows modules to syncronize metadata related to channels over the network during a netburst.</span>
+<a name="l00577"></a>00577 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
+<a name="l00578"></a>00578 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
+<a name="l00579"></a>00579 <span class="comment"> * this method is called.You should use the ProtoSendMetaData function after you've</span>
+<a name="l00580"></a>00580 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if it belongs</span>
+<a name="l00581"></a>00581 <span class="comment"> * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp.</span>
+<a name="l00582"></a>00582 <span class="comment"> * @param chan The channel whos metadata is being syncronized</span>
+<a name="l00583"></a>00583 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
+<a name="l00584"></a>00584 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
+<a name="l00585"></a>00585 <span class="comment"> * @param extname The extensions name which is being searched for</span>
+<a name="l00586"></a>00586 <span class="comment"> */</span>
+<a name="l00587"></a>00587 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncChannelMetaData_28chanrec_20_2Achan_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncChannelMetaData</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
+<a name="l00588"></a>00588
+<a name="l00589"></a>00589 <span class="comment">/* Allows modules to syncronize metadata related to users over the network during a netburst.</span>
+<a name="l00590"></a>00590 <span class="comment"> * Whenever the linking module wants to send out data, but doesnt know what the data</span>
+<a name="l00591"></a>00591 <span class="comment"> * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then</span>
+<a name="l00592"></a>00592 <span class="comment"> * this method is called. You should use the ProtoSendMetaData function after you've</span>
+<a name="l00593"></a>00593 <span class="comment"> * correctly decided how the data should be represented, to send the metadata on its way if</span>
+<a name="l00594"></a>00594 <span class="comment"> * if it belongs to your module.</span>
+<a name="l00595"></a>00595 <span class="comment"> * @param user The user whos metadata is being syncronized</span>
+<a name="l00596"></a>00596 <span class="comment"> * @param proto A pointer to the module handling network protocol</span>
+<a name="l00597"></a>00597 <span class="comment"> * @param opaque An opaque pointer set by the protocol module, should not be modified!</span>
+<a name="l00598"></a>00598 <span class="comment"> * @param extname The extensions name which is being searched for</span>
+<a name="l00599"></a>00599 <span class="comment"> */</span>
+<a name="l00600"></a>00600 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSyncUserMetaData_28userrec_20_2Auser_2C_20Module_20_2Aproto_2C_20void_20_2Aopaque_2C_20std_3A_3Astring_20extname_29">OnSyncUserMetaData</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classModule.html">Module</a>* proto,<span class="keywordtype">void</span>* opaque, <a class="code" href="namespaceirc.html#string">std::string</a> extname);
+<a name="l00601"></a>00601
+<a name="l00609"></a>00609 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDecodeMetaData_28int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">OnDecodeMetaData</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
+<a name="l00610"></a>00610
+<a name="l00624"></a>00624 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMode_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20modeline_29">ProtoSendMode</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> modeline);
+<a name="l00625"></a>00625
+<a name="l00640"></a>00640 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#ProtoSendMetaData_28void_20_2Aopaque_2C_20int_20target_5Ftype_2C_20void_20_2Atarget_2C_20std_3A_3Astring_20extname_2C_20std_3A_3Astring_20extdata_29">ProtoSendMetaData</a>(<span class="keywordtype">void</span>* opaque, <span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* target, <a class="code" href="namespaceirc.html#string">std::string</a> extname, <a class="code" href="namespaceirc.html#string">std::string</a> extdata);
+<a name="l00641"></a>00641
+<a name="l00646"></a>00646 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnWallops_28userrec_20_2Auser_2C_20std_3A_3Astring_20text_29">OnWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l00647"></a>00647
+<a name="l00653"></a>00653 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00654"></a>00654
+<a name="l00660"></a>00660 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnChangeName_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">OnChangeName</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
<a name="l00661"></a>00661
-<a name="l00669"></a>00669 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00669"></a>00669 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddGLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddGLine</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="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
<a name="l00670"></a>00670
-<a name="l00678"></a>00678 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">OnAddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
+<a name="l00678"></a>00678 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddZLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20ipmask_29">OnAddZLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
<a name="l00679"></a>00679
-<a name="l00687"></a>00687 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00687"></a>00687 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddKLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddKLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
<a name="l00688"></a>00688
-<a name="l00694"></a>00694 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00695"></a>00695
-<a name="l00701"></a>00701 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
-<a name="l00702"></a>00702
-<a name="l00708"></a>00708 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00709"></a>00709
-<a name="l00715"></a>00715 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
-<a name="l00716"></a>00716
-<a name="l00722"></a>00722 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l00723"></a>00723
-<a name="l00733"></a>00733 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item);
+<a name="l00696"></a>00696 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddQLine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20nickmask_29">OnAddQLine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
+<a name="l00697"></a>00697
+<a name="l00705"></a>00705 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnAddELine_28long_20duration_2C_20userrec_20_2Asource_2C_20std_3A_3Astring_20reason_2C_20std_3A_3Astring_20hostmask_29">OnAddELine</a>(<span class="keywordtype">long</span> duration, <a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> reason, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00706"></a>00706
+<a name="l00712"></a>00712 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelGLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelGLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00713"></a>00713
+<a name="l00719"></a>00719 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelZLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20ipmask_29">OnDelZLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> ipmask);
+<a name="l00720"></a>00720
+<a name="l00726"></a>00726 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelKLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelKLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00727"></a>00727
+<a name="l00733"></a>00733 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelQLine_28userrec_20_2Asource_2C_20std_3A_3Astring_20nickmask_29">OnDelQLine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> nickmask);
<a name="l00734"></a>00734
-<a name="l00744"></a>00744 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick);
-<a name="l00745"></a>00745
-<a name="l00771"></a>00771 <span class="keyword">virtual</span> <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">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);
-<a name="l00772"></a>00772
-<a name="l00777"></a>00777 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;output);
-<a name="l00778"></a>00778
-<a name="l00792"></a>00792 <span class="keyword">virtual</span> <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">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);
-<a name="l00793"></a>00793
-<a name="l00799"></a>00799 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnRemoteKill</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);
-<a name="l00800"></a>00800
-<a name="l00813"></a>00813 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l00814"></a>00814
-<a name="l00827"></a>00827 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l00828"></a>00828
-<a name="l00835"></a>00835 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">OnBackgroundTimer</a>(time_t curtime);
-<a name="l00836"></a>00836
-<a name="l00847"></a>00847 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode);
-<a name="l00848"></a>00848
-<a name="l00864"></a>00864 <span class="keyword">virtual</span> <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">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);
-<a name="l00865"></a>00865
-<a name="l00876"></a>00876 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00877"></a>00877
-<a name="l00886"></a>00886 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l00887"></a>00887
-<a name="l00900"></a>00900 <span class="keyword">virtual</span> <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">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);
-<a name="l00901"></a>00901
-<a name="l00910"></a>00910 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00911"></a>00911
-<a name="l00921"></a>00921 <span class="keyword">virtual</span> <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">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);
-<a name="l00922"></a>00922
-<a name="l00931"></a>00931 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00932"></a>00932
-<a name="l00941"></a>00941 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l00942"></a>00942
-<a name="l00947"></a>00947 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">OnStats</a>(<span class="keywordtype">char</span> symbol);
-<a name="l00948"></a>00948
-<a name="l00955"></a>00955 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00956"></a>00956
-<a name="l00963"></a>00963 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
-<a name="l00964"></a>00964
-<a name="l00972"></a>00972 <span class="keyword">virtual</span> <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">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);
-<a name="l00973"></a>00973
-<a name="l00980"></a>00980 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnPostLocalTopicChange</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);
-<a name="l00981"></a>00981
-<a name="l00988"></a>00988 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event);
-<a name="l00989"></a>00989
-<a name="l00997"></a>00997 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request);
-<a name="l00998"></a>00998
-<a name="l01008"></a>01008 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input);
-<a name="l01009"></a>01009
-<a name="l01016"></a>01016 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01017"></a>01017
-<a name="l01023"></a>01023 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01024"></a>01024
-<a name="l01032"></a>01032 <span class="keyword">virtual</span> <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">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);
-<a name="l01033"></a>01033
-<a name="l01041"></a>01041 <span class="keyword">virtual</span> <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">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);
+<a name="l00740"></a>00740 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnDelELine_28userrec_20_2Asource_2C_20std_3A_3Astring_20hostmask_29">OnDelELine</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l00741"></a>00741
+<a name="l00751"></a>00751 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnCleanup_28int_20target_5Ftype_2C_20void_20_2Aitem_29">OnCleanup</a>(<span class="keywordtype">int</span> target_type, <span class="keywordtype">void</span>* item);
+<a name="l00752"></a>00752
+<a name="l00762"></a>00762 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserPostNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20oldnick_29">OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> oldnick);
+<a name="l00763"></a>00763
+<a name="l00789"></a>00789 <span class="keyword">virtual</span> <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">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);
+<a name="l00790"></a>00790
+<a name="l00795"></a>00795 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#On_30_30_35Numeric_28std_3A_3Astring_20_26output_29">On005Numeric</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;output);
+<a name="l00796"></a>00796
+<a name="l00810"></a>00810 <span class="keyword">virtual</span> <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">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);
+<a name="l00811"></a>00811
+<a name="l00817"></a>00817 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRemoteKill_28userrec_20_2Asource_2C_20userrec_20_2Adest_2C_20std_3A_3Astring_20reason_29">OnRemoteKill</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);
+<a name="l00818"></a>00818
+<a name="l00831"></a>00831 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnLoadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
+<a name="l00832"></a>00832
+<a name="l00845"></a>00845 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUnloadModule_28Module_20_2Amod_2C_20std_3A_3Astring_20name_29">OnUnloadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,<a class="code" href="namespaceirc.html#string">std::string</a> name);
+<a name="l00846"></a>00846
+<a name="l00853"></a>00853 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnBackgroundTimer_28time_5Ft_20curtime_29">OnBackgroundTimer</a>(time_t curtime);
+<a name="l00854"></a>00854
+<a name="l00865"></a>00865 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnSendList_28userrec_20_2Auser_2C_20chanrec_20_2Achannel_2C_20char_20mode_29">OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode);
+<a name="l00866"></a>00866
+<a name="l00882"></a>00882 <span class="keyword">virtual</span> <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">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);
+<a name="l00883"></a>00883
+<a name="l00894"></a>00894 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#OnCheckReady_28userrec_20_2Auser_29">OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00895"></a>00895
+<a name="l00904"></a>00904 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnUserRegister_28userrec_20_2Auser_29">OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00905"></a>00905
+<a name="l00918"></a>00918 <span class="keyword">virtual</span> <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">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);
+<a name="l00919"></a>00919
+<a name="l00928"></a>00928 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckInvite_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00929"></a>00929
+<a name="l00939"></a>00939 <span class="keyword">virtual</span> <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">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);
+<a name="l00940"></a>00940
+<a name="l00949"></a>00949 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckLimit_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00950"></a>00950
+<a name="l00959"></a>00959 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnCheckBan_28userrec_20_2Auser_2C_20chanrec_20_2Achan_29">OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l00960"></a>00960
+<a name="l00965"></a>00965 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnStats_28char_20symbol_29">OnStats</a>(<span class="keywordtype">char</span> symbol);
+<a name="l00966"></a>00966
+<a name="l00973"></a>00973 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00974"></a>00974
+<a name="l00981"></a>00981 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnChangeLocalUserGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20newhost_29">OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> newhost);
+<a name="l00982"></a>00982
+<a name="l00990"></a>00990 <span class="keyword">virtual</span> <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">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);
+<a name="l00991"></a>00991
+<a name="l00998"></a>00998 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnPostLocalTopicChange_28userrec_20_2Auser_2C_20chanrec_20_2Achan_2C_20std_3A_3Astring_20topic_29">OnPostLocalTopicChange</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);
+<a name="l00999"></a>00999
+<a name="l01006"></a>01006 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnEvent_28Event_20_2Aevent_29">OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event);
+<a name="l01007"></a>01007
+<a name="l01015"></a>01015 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#OnRequest_28Request_20_2Arequest_29">OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request);
+<a name="l01016"></a>01016
+<a name="l01026"></a>01026 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnOperCompare_28std_3A_3Astring_20password_2C_20std_3A_3Astring_20input_29">OnOperCompare</a>(<a class="code" href="namespaceirc.html#string">std::string</a> password, <a class="code" href="namespaceirc.html#string">std::string</a> input);
+<a name="l01027"></a>01027
+<a name="l01034"></a>01034 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalOper_28userrec_20_2Auser_29">OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01035"></a>01035
+<a name="l01041"></a>01041 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnGlobalConnect_28userrec_20_2Auser_29">OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
<a name="l01042"></a>01042
-<a name="l01052"></a>01052 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">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);
-<a name="l01053"></a>01053
-<a name="l01064"></a>01064 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count);
-<a name="l01065"></a>01065
-<a name="l01070"></a>01070 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(<span class="keywordtype">int</span> fd);
+<a name="l01050"></a>01050 <span class="keyword">virtual</span> <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">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);
+<a name="l01051"></a>01051
+<a name="l01059"></a>01059 <span class="keyword">virtual</span> <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">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);
+<a name="l01060"></a>01060
+<a name="l01070"></a>01070 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketAccept_28int_20fd_2C_20std_3A_3Astring_20ip_2C_20int_20localport_29">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);
<a name="l01071"></a>01071
-<a name="l01087"></a>01087 <span class="keyword">virtual</span> <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">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);
-<a name="l01088"></a>01088 };
+<a name="l01082"></a>01082 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#OnRawSocketWrite_28int_20fd_2C_20char_20_2Abuffer_2C_20int_20count_29">OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count);
+<a name="l01083"></a>01083
+<a name="l01088"></a>01088 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(<span class="keywordtype">int</span> fd);
<a name="l01089"></a>01089
-<a name="l01090"></a>01090
-<a name="l01096"></a><a class="code" href="classServer.html">01096</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01097"></a>01097 {
-<a name="l01098"></a>01098 <span class="keyword">public</span>:
-<a name="l01102"></a>01102 <a class="code" href="classServer.html#Server_28_29">Server</a>();
-<a name="l01106"></a>01106 <span class="keyword">virtual</span> <a class="code" href="classServer.html#_7EServer_28_29">~Server</a>();
-<a name="l01111"></a>01111 <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">GetConfig</a>();
-<a name="l01115"></a>01115 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01118"></a>01118 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">GetVersion</a>();
-<a name="l01123"></a>01123 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01128"></a>01128 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01133"></a>01133 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
-<a name="l01137"></a>01137 <span class="keyword">virtual</span> <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">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);
-<a name="l01142"></a>01142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">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);
-<a name="l01157"></a>01157 <span class="keyword">virtual</span> <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">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);
-<a name="l01164"></a>01164 <span class="keyword">virtual</span> <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">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);
-<a name="l01169"></a>01169 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
-<a name="l01177"></a>01177 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">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);
-<a name="l01182"></a>01182 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text);
-<a name="l01183"></a>01183
-<a name="l01187"></a>01187 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
-<a name="l01191"></a>01191 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
-<a name="l01195"></a>01195 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
-<a name="l01199"></a>01199 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">FindDescriptor</a>(<span class="keywordtype">int</span> socket);
-<a name="l01203"></a>01203 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel);
-<a name="l01208"></a>01208 <span class="keyword">virtual</span> <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">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-<a name="l01212"></a>01212 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-<a name="l01215"></a>01215 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">GetServerName</a>();
-<a name="l01218"></a>01218 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">GetNetworkName</a>();
-<a name="l01221"></a>01221 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">GetServerDescription</a>();
-<a name="l01227"></a>01227 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">GetAdmin</a>();
-<a name="l01246"></a>01246 <span class="keyword">virtual</span> <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">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);
-<a name="l01247"></a>01247
-<a name="l01269"></a>01269 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar);
-<a name="l01270"></a>01270
-<a name="l01288"></a>01288 <span class="keyword">virtual</span> <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">AddCommand</a>(<span class="keywordtype">char</span>* cmd, <a class="code" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
-<a name="l01289"></a>01289
-<a name="l01311"></a>01311 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-<a name="l01312"></a>01312
-<a name="l01325"></a>01325 <span class="keyword">virtual</span> <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">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);
-<a name="l01326"></a>01326
-<a name="l01332"></a>01332 <span class="keyword">virtual</span> <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">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);
-<a name="l01333"></a>01333
-<a name="l01339"></a>01339 <span class="keyword">virtual</span> <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">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);
-<a name="l01340"></a>01340
-<a name="l01346"></a>01346 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
-<a name="l01347"></a>01347
-<a name="l01358"></a>01358 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
-<a name="l01359"></a>01359
-<a name="l01364"></a>01364 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern);
+<a name="l01105"></a>01105 <span class="keyword">virtual</span> <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">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);
+<a name="l01106"></a>01106 };
+<a name="l01107"></a>01107
+<a name="l01108"></a>01108
+<a name="l01114"></a><a class="code" href="classServer.html">01114</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01115"></a>01115 {
+<a name="l01116"></a>01116 <span class="keyword">public</span>:
+<a name="l01120"></a>01120 <a class="code" href="classServer.html#Server_28_29">Server</a>();
+<a name="l01124"></a>01124 <span class="keyword">virtual</span> <a class="code" href="classServer.html#_7EServer_28_29">~Server</a>();
+<a name="l01129"></a>01129 <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="classServer.html#GetConfig_28_29">GetConfig</a>();
+<a name="l01133"></a>01133 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendOpers_28std_3A_3Astring_20s_29">SendOpers</a>(<a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01136"></a>01136 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetVersion_28_29">GetVersion</a>();
+<a name="l01141"></a>01141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Log_28int_20level_2C_20std_3A_3Astring_20s_29">Log</a>(<span class="keywordtype">int</span> level, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01146"></a>01146 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#Send_28int_20Socket_2C_20std_3A_3Astring_20s_29">Send</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01151"></a>01151 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendServ_28int_20Socket_2C_20std_3A_3Astring_20s_29">SendServ</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="namespaceirc.html#string">std::string</a> s);
+<a name="l01155"></a>01155 <span class="keyword">virtual</span> <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">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);
+<a name="l01160"></a>01160 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendFrom_28int_20Socket_2C_20userrec_20_2AUser_2C_20std_3A_3Astring_20s_29">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);
+<a name="l01175"></a>01175 <span class="keyword">virtual</span> <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">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);
+<a name="l01182"></a>01182 <span class="keyword">virtual</span> <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">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);
+<a name="l01187"></a>01187 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#CommonChannels_28userrec_20_2Au_31_2C_20userrec_20_2Au_32_29">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
+<a name="l01195"></a>01195 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendCommon_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_2C_20bool_20IncludeSender_29">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);
+<a name="l01200"></a>01200 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendWallops_28userrec_20_2AUser_2C_20std_3A_3Astring_20text_29">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="namespaceirc.html#string">std::string</a> text);
+<a name="l01201"></a>01201
+<a name="l01205"></a>01205 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsNick_28std_3A_3Astring_20nick_29">IsNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
+<a name="l01209"></a>01209 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#CountUsers_28chanrec_20_2Ac_29">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
+<a name="l01213"></a>01213 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindNick_28std_3A_3Astring_20nick_29">FindNick</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nick);
+<a name="l01217"></a>01217 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#FindDescriptor_28int_20socket_29">FindDescriptor</a>(<span class="keywordtype">int</span> socket);
+<a name="l01221"></a>01221 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#FindChannel_28std_3A_3Astring_20channel_29">FindChannel</a>(<a class="code" href="namespaceirc.html#string">std::string</a> channel);
+<a name="l01226"></a>01226 <span class="keyword">virtual</span> <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">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+<a name="l01230"></a>01230 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsOnChannel_28userrec_20_2AUser_2C_20chanrec_20_2AChan_29">IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+<a name="l01233"></a>01233 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerName_28_29">GetServerName</a>();
+<a name="l01236"></a>01236 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetNetworkName_28_29">GetNetworkName</a>();
+<a name="l01239"></a>01239 <span class="keyword">virtual</span> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classServer.html#GetServerDescription_28_29">GetServerDescription</a>();
+<a name="l01245"></a>01245 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#GetAdmin_28_29">GetAdmin</a>();
+<a name="l01264"></a>01264 <span class="keyword">virtual</span> <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">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);
+<a name="l01265"></a>01265
+<a name="l01287"></a>01287 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#AddExtendedListMode_28char_20modechar_29">AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar);
+<a name="l01288"></a>01288
+<a name="l01306"></a>01306 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddCommand_28command_5Ft_20_2Af_29">AddCommand</a>(<a class="code" href="classcommand__t.html">command_t</a> *f);
+<a name="l01307"></a>01307
+<a name="l01329"></a>01329 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#SendMode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l01330"></a>01330
+<a name="l01343"></a>01343 <span class="keyword">virtual</span> <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">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);
+<a name="l01344"></a>01344
+<a name="l01350"></a>01350 <span class="keyword">virtual</span> <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">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);
+<a name="l01351"></a>01351
+<a name="l01357"></a>01357 <span class="keyword">virtual</span> <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">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);
+<a name="l01358"></a>01358
+<a name="l01364"></a>01364 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeUserNick_28userrec_20_2Auser_2C_20std_3A_3Astring_20nickname_29">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> nickname);
<a name="l01365"></a>01365
-<a name="l01377"></a>01377 <span class="keyword">virtual</span> <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">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);
-<a name="l01378"></a>01378
-<a name="l01379"></a>01379 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01380"></a>01380
-<a name="l01386"></a>01386 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host);
-<a name="l01387"></a>01387
-<a name="l01393"></a>01393 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
-<a name="l01394"></a>01394
-<a name="l01403"></a>01403 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server);
-<a name="l01404"></a>01404
-<a name="l01408"></a>01408 <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
-<a name="l01409"></a>01409
-<a name="l01416"></a>01416 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message);
-<a name="l01417"></a>01417
-<a name="l01424"></a>01424 <span class="keyword">virtual</span> <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">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);
-<a name="l01425"></a>01425
-<a name="l01433"></a>01433 <span class="keyword">virtual</span> <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">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);
-<a name="l01434"></a>01434
-<a name="l01442"></a>01442 <span class="keyword">virtual</span> <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">AddQLine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01376"></a>01376 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#QuitUser_28userrec_20_2Auser_2C_20std_3A_3Astring_20reason_29">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> reason);
+<a name="l01377"></a>01377
+<a name="l01382"></a>01382 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#MatchText_28std_3A_3Astring_20sliteral_2C_20std_3A_3Astring_20spattern_29">MatchText</a>(<a class="code" href="namespaceirc.html#string">std::string</a> sliteral, <a class="code" href="namespaceirc.html#string">std::string</a> spattern);
+<a name="l01383"></a>01383
+<a name="l01395"></a>01395 <span class="keyword">virtual</span> <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">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);
+<a name="l01396"></a>01396
+<a name="l01397"></a>01397 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidModuleCommand_28std_3A_3Astring_20commandname_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">IsValidModuleCommand</a>(<a class="code" href="namespaceirc.html#string">std::string</a> commandname, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01398"></a>01398
+<a name="l01404"></a>01404 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeHost_28userrec_20_2Auser_2C_20std_3A_3Astring_20host_29">ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> host);
+<a name="l01405"></a>01405
+<a name="l01411"></a>01411 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#ChangeGECOS_28userrec_20_2Auser_2C_20std_3A_3Astring_20gecos_29">ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="namespaceirc.html#string">std::string</a> gecos);
+<a name="l01412"></a>01412
+<a name="l01421"></a>01421 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsUlined_28std_3A_3Astring_20server_29">IsUlined</a>(<a class="code" href="namespaceirc.html#string">std::string</a> server);
+<a name="l01422"></a>01422
+<a name="l01426"></a>01426 <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#chanuserlist">chanuserlist</a> <a class="code" href="classServer.html#GetUsers_28chanrec_20_2Achan_29">GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
+<a name="l01427"></a>01427
+<a name="l01434"></a>01434 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#UserToPseudo_28userrec_20_2Auser_2C_20std_3A_3Astring_20message_29">UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<a class="code" href="namespaceirc.html#string">std::string</a> message);
+<a name="l01435"></a>01435
+<a name="l01442"></a>01442 <span class="keyword">virtual</span> <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">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);
<a name="l01443"></a>01443
-<a name="l01451"></a>01451 <span class="keyword">virtual</span> <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">AddZLine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01451"></a>01451 <span class="keyword">virtual</span> <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">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);
<a name="l01452"></a>01452
-<a name="l01460"></a>01460 <span class="keyword">virtual</span> <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">AddKLine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01460"></a>01460 <span class="keyword">virtual</span> <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">AddQLine</a>(<span class="keywordtype">long</span> duration, <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);
<a name="l01461"></a>01461
-<a name="l01469"></a>01469 <span class="keyword">virtual</span> <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">AddELine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01469"></a>01469 <span class="keyword">virtual</span> <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">AddZLine</a>(<span class="keywordtype">long</span> duration, <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);
<a name="l01470"></a>01470
-<a name="l01473"></a>01473 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01474"></a>01474
-<a name="l01477"></a>01477 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname);
-<a name="l01478"></a>01478
-<a name="l01481"></a>01481 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
-<a name="l01482"></a>01482
-<a name="l01485"></a>01485 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01486"></a>01486
-<a name="l01489"></a>01489 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
-<a name="l01490"></a>01490
-<a name="l01496"></a>01496 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> duration);
-<a name="l01497"></a>01497
-<a name="l01500"></a>01500 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask);
-<a name="l01501"></a>01501
-<a name="l01506"></a>01506 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name);
-<a name="l01507"></a>01507
-<a name="l01510"></a>01510 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
-<a name="l01511"></a>01511
-<a name="l01514"></a>01514 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01478"></a>01478 <span class="keyword">virtual</span> <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">AddKLine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01479"></a>01479
+<a name="l01487"></a>01487 <span class="keyword">virtual</span> <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">AddELine</a>(<span class="keywordtype">long</span> duration, <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);
+<a name="l01488"></a>01488
+<a name="l01491"></a>01491 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelGLine_28std_3A_3Astring_20hostmask_29">DelGLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01492"></a>01492
+<a name="l01495"></a>01495 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelQLine_28std_3A_3Astring_20nickname_29">DelQLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> nickname);
+<a name="l01496"></a>01496
+<a name="l01499"></a>01499 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelZLine_28std_3A_3Astring_20ipaddr_29">DelZLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> ipaddr);
+<a name="l01500"></a>01500
+<a name="l01503"></a>01503 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelKLine_28std_3A_3Astring_20hostmask_29">DelKLine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01504"></a>01504
+<a name="l01507"></a>01507 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#DelELine_28std_3A_3Astring_20hostmask_29">DelELine</a>(<a class="code" href="namespaceirc.html#string">std::string</a> hostmask);
+<a name="l01508"></a>01508
+<a name="l01514"></a>01514 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classServer.html#CalcDuration_28std_3A_3Astring_20duration_29">CalcDuration</a>(<a class="code" href="namespaceirc.html#string">std::string</a> duration);
<a name="l01515"></a>01515
-<a name="l01516"></a>01516 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">RehashServer</a>();
-<a name="l01517"></a>01517 };
-<a name="l01518"></a>01518
+<a name="l01518"></a>01518 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#IsValidMask_28std_3A_3Astring_20mask_29">IsValidMask</a>(<a class="code" href="namespaceirc.html#string">std::string</a> mask);
<a name="l01519"></a>01519
-<a name="l01520"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">01520</a> <span class="preprocessor">#define CONF_NOT_A_NUMBER 0x000010</span>
-<a name="l01521"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">01521</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_NOT_UNSIGNED 0x000080</span>
-<a name="l01522"></a><a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">01522</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_VALUE_NOT_FOUND 0x000100</span>
-<a name="l01523"></a><a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">01523</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_FILE_NOT_FOUND 0x000200</span>
-<a name="l01524"></a>01524 <span class="preprocessor"></span>
+<a name="l01524"></a>01524 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#FindModule_28std_3A_3Astring_20name_29">FindModule</a>(<a class="code" href="namespaceirc.html#string">std::string</a> name);
<a name="l01525"></a>01525
-<a name="l01532"></a><a class="code" href="classConfigReader.html">01532</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01533"></a>01533 {
-<a name="l01534"></a>01534 <span class="keyword">protected</span>:
-<a name="l01540"></a><a class="code" href="classConfigReader.html#cache">01540</a> std::stringstream *<a class="code" href="classConfigReader.html#cache">cache</a>;
-<a name="l01541"></a><a class="code" href="classConfigReader.html#errorlog">01541</a> std::stringstream *<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
-<a name="l01544"></a><a class="code" href="classConfigReader.html#readerror">01544</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#readerror">readerror</a>;
-<a name="l01545"></a><a class="code" href="classConfigReader.html#error">01545</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#error">error</a>;
-<a name="l01546"></a>01546
-<a name="l01547"></a>01547 <span class="keyword">public</span>:
-<a name="l01552"></a>01552 <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
-<a name="l01556"></a>01556 <span class="comment"></span> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename); <span class="comment">// read a module-specific config</span>
-<a name="l01560"></a>01560 <span class="comment"></span> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>();
-<a name="l01565"></a>01565 <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">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);
-<a name="l01571"></a>01571 <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">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);
-<a name="l01580"></a>01580 <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">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);
-<a name="l01585"></a>01585 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">GetError</a>();
-<a name="l01592"></a>01592 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag);
-<a name="l01597"></a>01597 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">Verify</a>();
-<a name="l01604"></a>01604 <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">DumpErrors</a>(<span class="keywordtype">bool</span> bail,<a class="code" href="classuserrec.html">userrec</a>* user);
-<a name="l01605"></a>01605
-<a name="l01611"></a>01611 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index);
-<a name="l01612"></a>01612 };
-<a name="l01613"></a>01613
-<a name="l01614"></a>01614
-<a name="l01615"></a>01615
-<a name="l01621"></a><a class="code" href="classFileReader.html">01621</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01622"></a>01622 {
-<a name="l01623"></a><a class="code" href="classFileReader.html#fc">01623</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classFileReader.html#fc">fc</a>;
-<a name="l01624"></a>01624 <span class="keyword">public</span>:
-<a name="l01629"></a>01629 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>();
-<a name="l01630"></a>01630
-<a name="l01636"></a>01636 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l01637"></a>01637
-<a name="l01641"></a>01641 <a class="code" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>();
-<a name="l01642"></a>01642
-<a name="l01648"></a>01648 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
-<a name="l01649"></a>01649
-<a name="l01653"></a>01653 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">Exists</a>();
-<a name="l01654"></a>01654
-<a name="l01659"></a>01659 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">GetLine</a>(<span class="keywordtype">int</span> x);
+<a name="l01528"></a>01528 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#AddSocket_28InspSocket_20_2Asock_29">AddSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01529"></a>01529
+<a name="l01532"></a>01532 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#DelSocket_28InspSocket_20_2Asock_29">DelSocket</a>(<a class="code" href="classInspSocket.html">InspSocket</a>* sock);
+<a name="l01533"></a>01533
+<a name="l01534"></a>01534 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#RehashServer_28_29">RehashServer</a>();
+<a name="l01535"></a>01535 };
+<a name="l01536"></a>01536
+<a name="l01537"></a>01537
+<a name="l01538"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">01538</a> <span class="preprocessor">#define CONF_NOT_A_NUMBER 0x000010</span>
+<a name="l01539"></a><a class="code" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">01539</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_NOT_UNSIGNED 0x000080</span>
+<a name="l01540"></a><a class="code" href="modules_8h.html#CONF_5FVALUE_5FNOT_5FFOUND">01540</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_VALUE_NOT_FOUND 0x000100</span>
+<a name="l01541"></a><a class="code" href="modules_8h.html#CONF_5FFILE_5FNOT_5FFOUND">01541</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_FILE_NOT_FOUND 0x000200</span>
+<a name="l01542"></a>01542 <span class="preprocessor"></span>
+<a name="l01543"></a>01543
+<a name="l01550"></a><a class="code" href="classConfigReader.html">01550</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01551"></a>01551 {
+<a name="l01552"></a>01552 <span class="keyword">protected</span>:
+<a name="l01558"></a><a class="code" href="classConfigReader.html#cache">01558</a> std::stringstream *<a class="code" href="classConfigReader.html#cache">cache</a>;
+<a name="l01559"></a><a class="code" href="classConfigReader.html#errorlog">01559</a> std::stringstream *<a class="code" href="classConfigReader.html#errorlog">errorlog</a>;
+<a name="l01562"></a><a class="code" href="classConfigReader.html#readerror">01562</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#readerror">readerror</a>;
+<a name="l01563"></a><a class="code" href="classConfigReader.html#error">01563</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#error">error</a>;
+<a name="l01564"></a>01564
+<a name="l01565"></a>01565 <span class="keyword">public</span>:
+<a name="l01570"></a>01570 <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
+<a name="l01574"></a>01574 <span class="comment"></span> <a class="code" href="classConfigReader.html#ConfigReader_28_29">ConfigReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename); <span class="comment">// read a module-specific config</span>
+<a name="l01578"></a>01578 <span class="comment"></span> <a class="code" href="classConfigReader.html#_7EConfigReader_28_29">~ConfigReader</a>();
+<a name="l01583"></a>01583 <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">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);
+<a name="l01589"></a>01589 <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">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);
+<a name="l01598"></a>01598 <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">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);
+<a name="l01603"></a>01603 <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#GetError_28_29">GetError</a>();
+<a name="l01610"></a>01610 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#Enumerate_28std_3A_3Astring_20tag_29">Enumerate</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag);
+<a name="l01615"></a>01615 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#Verify_28_29">Verify</a>();
+<a name="l01622"></a>01622 <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#DumpErrors_28bool_20bail_2C_20userrec_20_2Auser_29">DumpErrors</a>(<span class="keywordtype">bool</span> bail,<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l01623"></a>01623
+<a name="l01629"></a>01629 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#EnumerateValues_28std_3A_3Astring_20tag_2C_20int_20index_29">EnumerateValues</a>(<a class="code" href="namespaceirc.html#string">std::string</a> tag, <span class="keywordtype">int</span> index);
+<a name="l01630"></a>01630 };
+<a name="l01631"></a>01631
+<a name="l01632"></a>01632
+<a name="l01633"></a>01633
+<a name="l01639"></a><a class="code" href="classFileReader.html">01639</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01640"></a>01640 {
+<a name="l01641"></a><a class="code" href="classFileReader.html#fc">01641</a> <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a> <a class="code" href="classFileReader.html#fc">fc</a>;
+<a name="l01642"></a>01642 <span class="keyword">public</span>:
+<a name="l01647"></a>01647 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>();
+<a name="l01648"></a>01648
+<a name="l01654"></a>01654 <a class="code" href="classFileReader.html#FileReader_28_29">FileReader</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l01655"></a>01655
+<a name="l01659"></a>01659 <a class="code" href="classFileReader.html#_7EFileReader_28_29">~FileReader</a>();
<a name="l01660"></a>01660
-<a name="l01666"></a>01666 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileSize</a>();
-<a name="l01667"></a>01667 };
-<a name="l01668"></a>01668
-<a name="l01669"></a>01669
-<a name="l01676"></a><a class="code" href="classModuleFactory.html">01676</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l01677"></a>01677 {
-<a name="l01678"></a>01678 <span class="keyword">public</span>:
-<a name="l01679"></a><a class="code" href="classModuleFactory.html#ModuleFactory_28_29">01679</a> <a class="code" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>() { }
-<a name="l01680"></a><a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">01680</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>() { }
-<a name="l01685"></a>01685 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">CreateModule</a>(<a class="code" href="classServer.html">Server</a>* Me) = 0;
-<a name="l01686"></a>01686 };
+<a name="l01666"></a>01666 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#LoadFile_28std_3A_3Astring_20filename_29">LoadFile</a>(<a class="code" href="namespaceirc.html#string">std::string</a> filename);
+<a name="l01667"></a>01667
+<a name="l01671"></a>01671 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#Exists_28_29">Exists</a>();
+<a name="l01672"></a>01672
+<a name="l01677"></a>01677 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classFileReader.html#GetLine_28int_20x_29">GetLine</a>(<span class="keywordtype">int</span> x);
+<a name="l01678"></a>01678
+<a name="l01684"></a>01684 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#FileSize_28_29">FileSize</a>();
+<a name="l01685"></a>01685 };
+<a name="l01686"></a>01686
<a name="l01687"></a>01687
-<a name="l01688"></a>01688
-<a name="l01689"></a><a class="code" href="modules_8h.html#ircd_5Fmodule">01689</a> <span class="keyword">typedef</span> DLLFactory&lt;ModuleFactory&gt; <a class="code" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>;
-<a name="l01690"></a>01690
-<a name="l01691"></a>01691 <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> c, <span class="keywordtype">int</span> i);
-<a name="l01692"></a>01692 <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> c, <span class="keywordtype">int</span> i);
-<a name="l01693"></a>01693 <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> c, <span class="keywordtype">int</span> i);
-<a name="l01694"></a>01694 <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> c, <span class="keywordtype">int</span> i);
-<a name="l01695"></a>01695 <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar);
-<a name="l01696"></a>01696 <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);
-<a name="l01697"></a>01697
-<a name="l01698"></a>01698 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l01694"></a><a class="code" href="classModuleFactory.html">01694</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l01695"></a>01695 {
+<a name="l01696"></a>01696 <span class="keyword">public</span>:
+<a name="l01697"></a><a class="code" href="classModuleFactory.html#ModuleFactory_28_29">01697</a> <a class="code" href="classModuleFactory.html#ModuleFactory_28_29">ModuleFactory</a>() { }
+<a name="l01698"></a><a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">01698</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#_7EModuleFactory_28_29">~ModuleFactory</a>() { }
+<a name="l01703"></a>01703 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#CreateModule_28Server_20_2AMe_29_3D_30">CreateModule</a>(<a class="code" href="classServer.html">Server</a>* Me) = 0;
+<a name="l01704"></a>01704 };
+<a name="l01705"></a>01705
+<a name="l01706"></a>01706
+<a name="l01707"></a><a class="code" href="modules_8h.html#ircd_5Fmodule">01707</a> <span class="keyword">typedef</span> DLLFactory&lt;ModuleFactory&gt; <a class="code" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>;
+<a name="l01708"></a>01708
+<a name="l01709"></a>01709 <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> c, <span class="keywordtype">int</span> i);
+<a name="l01710"></a>01710 <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> c, <span class="keywordtype">int</span> i);
+<a name="l01711"></a>01711 <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> c, <span class="keywordtype">int</span> i);
+<a name="l01712"></a>01712 <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> c, <span class="keywordtype">int</span> i);
+<a name="l01713"></a>01713 <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#ModeMakeList_28char_20modechar_29">ModeMakeList</a>(<span class="keywordtype">char</span> modechar);
+<a name="l01714"></a>01714 <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);
+<a name="l01715"></a>01715
+<a name="l01716"></a>01716 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/modules_8h.html b/docs/module-doc/modules_8h.html
index 9ccdc3d84..032239f66 100644
--- a/docs/module-doc/modules_8h.html
+++ b/docs/module-doc/modules_8h.html
@@ -18,18 +18,18 @@
<p>
Include dependency graph for modules.h:<p><center><img src="modules_8h__incl.gif" border="0" usemap="#modules.h_map" alt=""></center>
<map name="modules.h_map">
-<area href="base_8h-source.html" shape="rect" coords="283,108,344,135" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="145,209,220,236" alt="">
-<area href="socket_8h-source.html" shape="rect" coords="427,361,499,388" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="273,209,353,236" alt="">
+<area href="base_8h-source.html" shape="rect" coords="152,159,214,185" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="146,108,220,135" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="147,336,219,363" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="modules_8h__dep__incl.gif" border="0" usemap="#modules.hdep_map" alt=""></center>
<map name="modules.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="275,32,373,59" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="275,95,373,121" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="140,57,225,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="288,57,387,84" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="288,108,387,135" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="142,57,238,84" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="147,108,232,135" alt="">
</map>
<p>
@@ -122,12 +122,28 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#VF_5FCOMMON">VF_COMMON</a>&nbsp;&nbsp;&nbsp;8</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a>&nbsp;&nbsp;&nbsp;for (int _i = 0; _i &lt;= <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-&gt;</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a>&nbsp;&nbsp;&nbsp;for (int _i = 0; _i &lt;= <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-&gt;</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(x)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#FD_5FMAGIC_5FNUMBER">FD_MAGIC_NUMBER</a>&nbsp;&nbsp;&nbsp;-42</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FLOCAL_28x_29">IS_LOCAL</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd &gt; -1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FREMOTE_28x_29">IS_REMOTE</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd &lt; 0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#IS_5FMODULE_5FCREATED_28x_29">IS_MODULE_CREATED</a>(x)&nbsp;&nbsp;&nbsp;(x-&gt;fd == FD_MAGIC_NUMBER)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#WM_5FAND">WM_AND</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#WM_5FOR">WM_OR</a>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FUSER">TYPE_USER</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FCHANNEL">TYPE_CHANNEL</a>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#TYPE_5FSERVER">TYPE_SERVER</a>&nbsp;&nbsp;&nbsp;3</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#CONF_5FNOT_5FA_5FNUMBER">CONF_NOT_A_NUMBER</a>&nbsp;&nbsp;&nbsp;0x000010</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#CONF_5FNOT_5FUNSIGNED">CONF_NOT_UNSIGNED</a>&nbsp;&nbsp;&nbsp;0x000080</td></tr>
@@ -148,10 +164,6 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef DLLFactory&lt; <a class="el" href="classModuleFactory.html">ModuleFactory</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29">createcommand</a> (char *cmd, <a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a> f, char flags, int minparams, char *source)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29">server_mode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ModeDefined_28char_20c_2C_20int_20i_29">ModeDefined</a> (char c, int i)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="modules_8h.html#ModeDefinedOper_28char_20c_2C_20int_20i_29">ModeDefinedOper</a> (char c, int i)</td></tr>
@@ -444,7 +456,7 @@ Used with OnAccessCheck() method of modules.
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00037">37</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00241">Module::OnAccessCheck()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00240">Module::OnAccessCheck()</a>. </td>
</tr>
</table>
<a class="anchor" name="ACR_5FDENY"></a><!-- doxytag: member="modules.h::ACR_DENY" ref="ACR_5FDENY" args="" --><p>
@@ -496,9 +508,9 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01523">1523</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01541">1541</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader::ConfigReader()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00735">ConfigReader::ConfigReader()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FNOT_5FA_5FNUMBER"></a><!-- doxytag: member="modules.h::CONF_NOT_A_NUMBER" ref="CONF_5FNOT_5FA_5FNUMBER" args="" --><p>
@@ -523,9 +535,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00736">ConfigReader:
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01520">1520</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01538">1538</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FNOT_5FUNSIGNED"></a><!-- doxytag: member="modules.h::CONF_NOT_UNSIGNED" ref="CONF_5FNOT_5FUNSIGNED" args="" --><p>
@@ -550,9 +562,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader:
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01521">1521</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01539">1539</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>. </td>
</tr>
</table>
<a class="anchor" name="CONF_5FVALUE_5FNOT_5FFOUND"></a><!-- doxytag: member="modules.h::CONF_VALUE_NOT_FOUND" ref="CONF_5FVALUE_5FNOT_5FFOUND" args="" --><p>
@@ -577,9 +589,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader:
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01522">1522</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l01540">1540</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00782">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00799">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00766">ConfigReader::ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00781">ConfigReader::ReadFlag()</a>, <a class="el" href="modules_8cpp-source.html#l00798">ConfigReader::ReadInteger()</a>, and <a class="el" href="modules_8cpp-source.html#l00765">ConfigReader::ReadValue()</a>. </td>
</tr>
</table>
<a class="anchor" name="DEBUG"></a><!-- doxytag: member="modules.h::DEBUG" ref="DEBUG" args="" --><p>
@@ -656,9 +668,9 @@ Definition at line <a class="el" href="modules_8h-source.html#l00025">25</a> of
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00101">101</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00102">102</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00598">Server::UserToPseudo()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00597">Server::UserToPseudo()</a>. </td>
</tr>
</table>
<a class="anchor" name="FOREACH_5FMOD"></a><!-- doxytag: member="modules.h::FOREACH_MOD" ref="FOREACH_5FMOD" args="" --><p>
@@ -667,7 +679,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::Pseud
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">#define FOREACH_MOD&nbsp;&nbsp;&nbsp;for (int _i = 0; _i &lt;= <a class="el" href="modules_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-&gt; </td>
+ <td class="md" nowrap valign="top">#define FOREACH_MOD&nbsp;&nbsp;&nbsp;for (int _i = 0; _i &lt;= <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a>; _i++) modules[_i]-&gt; </td>
</tr>
</table>
</td>
@@ -683,9 +695,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00610">Server::Pseud
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00082">82</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, and <a class="el" href="modules_8cpp-source.html#l00206">Event::Send()</a>. </td>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel()</a>, <a class="el" href="channels_8cpp-source.html#l00372">ForceChan()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, and <a class="el" href="modules_8cpp-source.html#l00205">Event::Send()</a>. </td>
</tr>
</table>
<a class="anchor" name="FOREACH_5FRESULT_28x_29"></a><!-- doxytag: member="modules.h::FOREACH_RESULT" ref="FOREACH_5FRESULT_28x_29" args="(x)" --><p>
@@ -724,9 +736,99 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00401">del_channel(
}
</pre></div>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00089">89</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00090">90</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+<p>
+Referenced by <a class="el" href="channels_8cpp-source.html#l00194">add_channel()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FLOCAL_28x_29"></a><!-- doxytag: member="modules.h::IS_LOCAL" ref="IS_5FLOCAL_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_LOCAL </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">x&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd &gt; -1)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00106">106</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FMODULE_5FCREATED_28x_29"></a><!-- doxytag: member="modules.h::IS_MODULE_CREATED" ref="IS_5FMODULE_5FCREATED_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_MODULE_CREATED </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">x&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd == FD_MAGIC_NUMBER)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00108">108</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="IS_5FREMOTE_28x_29"></a><!-- doxytag: member="modules.h::IS_REMOTE" ref="IS_5FREMOTE_28x_29" args="(x)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define IS_REMOTE </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">x&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(x-&gt;fd &lt; 0)</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
<p>
-Referenced by <a class="el" href="channels_8cpp-source.html#l00195">add_channel()</a>, and <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00107">107</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FCHANNEL"></a><!-- doxytag: member="modules.h::MT_CHANNEL" ref="MT_5FCHANNEL" args="" --><p>
@@ -755,7 +857,7 @@ Used with OnExtendedMode() method of modules.
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00031">31</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00144">ModeMakeList()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>, and <a class="el" href="modules_8cpp-source.html#l00143">ModeMakeList()</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FCLIENT"></a><!-- doxytag: member="modules.h::MT_CLIENT" ref="MT_5FCLIENT" args="" --><p>
@@ -782,7 +884,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddEx
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00032">32</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="MT_5FSERVER"></a><!-- doxytag: member="modules.h::MT_SERVER" ref="MT_5FSERVER" args="" --><p>
@@ -809,7 +911,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00556">Server::AddEx
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00033">33</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00556">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00555">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a class="anchor" name="NONE"></a><!-- doxytag: member="modules.h::NONE" ref="NONE" args="" --><p>
@@ -862,6 +964,81 @@ Definition at line <a class="el" href="modules_8h-source.html#l00027">27</a> of
Definition at line <a class="el" href="modules_8h-source.html#l00026">26</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
+<a class="anchor" name="TYPE_5FCHANNEL"></a><!-- doxytag: member="modules.h::TYPE_CHANNEL" ref="TYPE_5FCHANNEL" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_CHANNEL&nbsp;&nbsp;&nbsp;2 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00118">118</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="TYPE_5FSERVER"></a><!-- doxytag: member="modules.h::TYPE_SERVER" ref="TYPE_5FSERVER" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_SERVER&nbsp;&nbsp;&nbsp;3 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00119">119</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="TYPE_5FUSER"></a><!-- doxytag: member="modules.h::TYPE_USER" ref="TYPE_5FUSER" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">#define TYPE_USER&nbsp;&nbsp;&nbsp;1 </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00117">117</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="VERBOSE"></a><!-- doxytag: member="modules.h::VERBOSE" ref="VERBOSE" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -988,17 +1165,16 @@ Definition at line <a class="el" href="modules_8h-source.html#l00052">52</a> of
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00053">53</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00232">Module::GetVersion()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00231">Module::GetVersion()</a>. </td>
</tr>
</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="chanuserlist"></a><!-- doxytag: member="modules.h::chanuserlist" ref="chanuserlist" args="" --><p>
+<a class="anchor" name="WM_5FAND"></a><!-- doxytag: member="modules.h::WM_AND" ref="WM_5FAND" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="classuserrec.html">userrec</a>*&gt; <a class="el" href="modules_8h.html#chanuserlist">chanuserlist</a> </td>
+ <td class="md" nowrap valign="top">#define WM_AND&nbsp;&nbsp;&nbsp;1 </td>
</tr>
</table>
</td>
@@ -1012,20 +1188,18 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00232">Module::GetVe
<td>
<p>
-Holds a list of users in a channel.
-<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00074">74</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00112">112</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="modules.h::file_cache" ref="file_5Fcache" args="" --><p>
+<a class="anchor" name="WM_5FOR"></a><!-- doxytag: member="modules.h::WM_OR" ref="WM_5FOR" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="namespaceirc.html#string">std::string</a>&gt; <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> </td>
+ <td class="md" nowrap valign="top">#define WM_OR&nbsp;&nbsp;&nbsp;2 </td>
</tr>
</table>
</td>
@@ -1039,20 +1213,19 @@ Definition at line <a class="el" href="modules_8h-source.html#l00074">74</a> of
<td>
<p>
-Low level definition of a <a class="el" href="classFileReader.html">FileReader</a> classes file cache area.
-<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00065">65</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00113">113</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="ircd_5Fmodule"></a><!-- doxytag: member="modules.h::ircd_module" ref="ircd_5Fmodule" args="" --><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="chanuserlist"></a><!-- doxytag: member="modules.h::chanuserlist" ref="chanuserlist" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef DLLFactory&lt;<a class="el" href="classModuleFactory.html">ModuleFactory</a>&gt; <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> </td>
+ <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="classuserrec.html">userrec</a>*&gt; <a class="el" href="modules_8h.html#chanuserlist">chanuserlist</a> </td>
</tr>
</table>
</td>
@@ -1066,18 +1239,20 @@ Definition at line <a class="el" href="modules_8h-source.html#l00065">65</a> of
<td>
<p>
+Holds a list of users in a channel.
+<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l01689">1689</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00075">75</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="string_5Flist"></a><!-- doxytag: member="modules.h::string_list" ref="string_5Flist" args="" --><p>
+<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="modules.h::file_cache" ref="file_5Fcache" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">typedef <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> <a class="el" href="modules_8h.html#string_5Flist">string_list</a> </td>
+ <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="namespaceirc.html#string">std::string</a>&gt; <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> </td>
</tr>
</table>
</td>
@@ -1091,51 +1266,45 @@ Definition at line <a class="el" href="modules_8h-source.html#l01689">1689</a> o
<td>
<p>
+Low level definition of a <a class="el" href="classFileReader.html">FileReader</a> classes file cache area.
+<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00066">66</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29"></a><!-- doxytag: member="modules.h::createcommand" ref="createcommand_28char_20_2Acmd_2C_20handlerfunc_20f_2C_20char_20flags_2C_20int_20minparams_2C_20char_20_2Asource_29" args="(char *cmd, handlerfunc f, char flags, int minparams, char *source)" --><p>
+<a class="anchor" name="ircd_5Fmodule"></a><!-- doxytag: member="modules.h::ircd_module" ref="ircd_5Fmodule" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top">void createcommand </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char *&nbsp;</td>
- <td class="mdname" nowrap> <em>cmd</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="inspircd_8h.html#handlerfunc_29_28char_20_2A_2A_2C_20int_2C_20userrec_20_2A_29">handlerfunc</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char&nbsp;</td>
- <td class="mdname" nowrap> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>minparams</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>source</em></td>
+ <td class="md" nowrap valign="top">typedef DLLFactory&lt;<a class="el" href="classModuleFactory.html">ModuleFactory</a>&gt; <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> </td>
</tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l01707">1707</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="string_5Flist"></a><!-- doxytag: member="modules.h::string_list" ref="string_5Flist" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td class="md" nowrap valign="top">typedef <a class="el" href="typedefs_8h.html#file_5Fcache">file_cache</a> <a class="el" href="modules_8h.html#string_5Flist">string_list</a> </td>
</tr>
</table>
</td>
@@ -1151,9 +1320,10 @@ Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00416">Server::AddCommand()</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00071">71</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
+<hr><h2>Function Documentation</h2>
<a class="anchor" name="ModeDefined_28char_20c_2C_20int_20i_29"></a><!-- doxytag: member="modules.h::ModeDefined" ref="ModeDefined_28char_20c_2C_20int_20i_29" args="(char c, int i)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -1190,20 +1360,20 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00416">Server::AddCo
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00071">71</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00070">70</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00081"></a>00081 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00133">DoAddExtendedMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 }
</pre></div>
<p>
</td>
@@ -1245,18 +1415,18 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00134">DoAddExtended
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> i-&gt;params_when_off;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> 0;
-<a name="l00131"></a>00131 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> i-&gt;params_when_off;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 0;
+<a name="l00130"></a>00130 }
</pre></div>
<p>
</td>
@@ -1298,18 +1468,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00107">107</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> i-&gt;params_when_on;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 0;
-<a name="l00118"></a>00118 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> i-&gt;params_when_on;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> 0;
+<a name="l00117"></a>00117 }
</pre></div>
<p>
</td>
@@ -1351,18 +1521,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00095">95</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00094">94</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <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>))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 <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>))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 }
</pre></div>
<p>
</td>
@@ -1404,18 +1574,18 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00083">83</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00082">82</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <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>))
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00093"></a>00093 }
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>.<div class="fragment"><pre class="fragment"><a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <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>))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00092"></a>00092 }
</pre></div>
<p>
</td>
@@ -1448,70 +1618,27 @@ References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>.<div c
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00144">144</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00068">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
+References <a class="el" href="modules_8cpp-source.html#l00067">EMode</a>, and <a class="el" href="modules_8h-source.html#l00031">MT_CHANNEL</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00584">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <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>))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 i-&gt;list = <span class="keyword">true</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
-<a name="l00155"></a>00155 }
+Referenced by <a class="el" href="modules_8cpp-source.html#l00583">Server::AddExtendedListMode()</a>.<div class="fragment"><pre class="fragment"><a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">for</span> (<a class="code" href="typedefs_8h.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++)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <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>))
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 i-&gt;list = <span class="keyword">true</span>;
+<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 <span class="keywordflow">return</span>;
+<a name="l00154"></a>00154 }
</pre></div>
<p>
</td>
</tr>
</table>
-<a class="anchor" name="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29"></a><!-- doxytag: member="modules.h::server_mode" ref="server_5Fmode_28char_20_2A_2Aparameters_2C_20int_20pcnt_2C_20userrec_20_2Auser_29" args="(char **parameters, int pcnt, userrec *user)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void server_mode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">char **&nbsp;</td>
- <td class="mdname" nowrap> <em>parameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pcnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>user</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/modules_8h__dep__incl.map b/docs/module-doc/modules_8h__dep__incl.map
index 2ae52d4d8..d2382c473 100644
--- a/docs/module-doc/modules_8h__dep__incl.map
+++ b/docs/module-doc/modules_8h__dep__incl.map
@@ -1,4 +1,5 @@
base referer
-rect $channels_8cpp-source.html 275,32 373,59
-rect $modules_8cpp-source.html 275,95 373,121
-rect $typedefs_8h-source.html 140,57 225,84
+rect $channels_8cpp-source.html 288,57 387,84
+rect $modules_8cpp-source.html 288,108 387,135
+rect $inspircd__io_8h-source.html 142,57 238,84
+rect $typedefs_8h-source.html 147,108 232,135
diff --git a/docs/module-doc/modules_8h__dep__incl.md5 b/docs/module-doc/modules_8h__dep__incl.md5
index 1b8f85636..797e74981 100644
--- a/docs/module-doc/modules_8h__dep__incl.md5
+++ b/docs/module-doc/modules_8h__dep__incl.md5
@@ -1 +1 @@
-029327ee049ffb0b20c7a5fec8c0bf60 \ No newline at end of file
+a9c8e3f1de38b14742a7373870135e9c \ No newline at end of file
diff --git a/docs/module-doc/modules_8h__incl.map b/docs/module-doc/modules_8h__incl.map
index 11a5b7c38..80950de97 100644
--- a/docs/module-doc/modules_8h__incl.map
+++ b/docs/module-doc/modules_8h__incl.map
@@ -1,5 +1,4 @@
base referer
-rect $base_8h-source.html 283,108 344,135
-rect $ctables_8h-source.html 145,209 220,236
-rect $socket_8h-source.html 427,361 499,388
-rect $inspircd_8h-source.html 273,209 353,236
+rect $base_8h-source.html 152,159 214,185
+rect $ctables_8h-source.html 146,108 220,135
+rect $socket_8h-source.html 147,336 219,363
diff --git a/docs/module-doc/modules_8h__incl.md5 b/docs/module-doc/modules_8h__incl.md5
index 0ba01c624..44632e2c0 100644
--- a/docs/module-doc/modules_8h__incl.md5
+++ b/docs/module-doc/modules_8h__incl.md5
@@ -1 +1 @@
-8349e345831c364ad6f1773db4ad756f \ No newline at end of file
+b8bad034c27cd1c2ec23841d82552230 \ No newline at end of file
diff --git a/docs/module-doc/namespaceirc.html b/docs/module-doc/namespaceirc.html
index 7a3116ffc..2c5489a02 100644
--- a/docs/module-doc/namespaceirc.html
+++ b/docs/module-doc/namespaceirc.html
@@ -56,7 +56,7 @@ This typedef declares <a class="el" href="namespaceirc.html#string">irc::string<
Definition at line <a class="el" href="hashcomp_8h-source.html#l00129">129</a> of file <a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/namespacemembers.html b/docs/module-doc/namespacemembers.html
index 739166549..239850c0b 100644
--- a/docs/module-doc/namespacemembers.html
+++ b/docs/module-doc/namespacemembers.html
@@ -11,7 +11,7 @@ Here is a list of all namespace members with links to the namespace documentatio
<ul>
<li>string
: <a class="el" href="namespaceirc.html#string">irc</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/namespacemembers_type.html b/docs/module-doc/namespacemembers_type.html
index 99d94cbd5..a73089474 100644
--- a/docs/module-doc/namespacemembers_type.html
+++ b/docs/module-doc/namespacemembers_type.html
@@ -11,7 +11,7 @@
<ul>
<li>string
: <a class="el" href="namespaceirc.html#string">irc</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/namespacenspace.html b/docs/module-doc/namespacenspace.html
index 3558dad6a..ef2d042ee 100644
--- a/docs/module-doc/namespacenspace.html
+++ b/docs/module-doc/namespacenspace.html
@@ -15,7 +15,7 @@
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">hash&lt; string &gt;</a></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/namespaces.html b/docs/module-doc/namespaces.html
index a9b9a4154..73a796a6c 100644
--- a/docs/module-doc/namespaces.html
+++ b/docs/module-doc/namespaces.html
@@ -10,7 +10,7 @@
<tr><td class="indexkey"><a class="el" href="namespacenspace.html">nspace</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/namespacestd.html b/docs/module-doc/namespacestd.html
index 51eb1a3f9..38a0bf752 100644
--- a/docs/module-doc/namespacestd.html
+++ b/docs/module-doc/namespacestd.html
@@ -10,7 +10,7 @@
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socket_8cpp-source.html b/docs/module-doc/socket_8cpp-source.html
index 933d1eae5..5278c5d50 100644
--- a/docs/module-doc/socket_8cpp-source.html
+++ b/docs/module-doc/socket_8cpp-source.html
@@ -41,253 +41,252 @@
<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="socket_8h.html">socket.h</a>"</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="inspircd__io_8h.html">inspircd_io.h</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "inspircd_util.h"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "inspstring.h"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "inspstring.h"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "helperfuncs.h"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00038"></a>00038
<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">extern</span> <a class="code" href="classSocketEngine.html">SocketEngine</a>* <a class="code" href="modules_8cpp.html#SE">SE</a>;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="socket_8cpp.html#boundPortCount">boundPortCount</a>;
-<a name="l00043"></a>00043 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a>[<a class="code" href="inspircd_8h.html#MAXSOCKS">MAXSOCKS</a>];
-<a name="l00044"></a>00044 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00045"></a>00045
-<a name="l00046"></a><a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">00046</a> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
-<a name="l00047"></a>00047
-<a name="l00048"></a><a class="code" href="classInspSocket.html#InspSocket_28_29">00048</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>()
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">00053</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
-<a name="l00056"></a>00056 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
-<a name="l00057"></a>00057 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00058"></a>00058 SE-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00059"></a>00059 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">00062</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (listening) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> ((this-&gt;fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00068"></a>00068 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00069"></a>00069 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00070"></a>00070 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this-&gt;fd,this-&gt;client,this-&gt;server,port,(<span class="keywordtype">char</span>*)host.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00078"></a>00078 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00079"></a>00079 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00080"></a>00080 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
-<a name="l00081"></a>00081 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 <span class="keywordflow">else</span>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
-<a name="l00087"></a>00087 SE-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00088"></a>00088 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00089"></a>00089 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span>;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span> {
-<a name="l00094"></a>00094 <span class="keywordtype">char</span>* ip;
-<a name="l00095"></a>00095 this-&gt;host = host;
-<a name="l00096"></a>00096 hostent* hoste = gethostbyname(host.c_str());
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!hoste) {
-<a name="l00098"></a>00098 ip = (<span class="keywordtype">char</span>*)host.c_str();
-<a name="l00099"></a>00099 } <span class="keywordflow">else</span> {
-<a name="l00100"></a>00100 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste-&gt;h_addr;
-<a name="l00101"></a>00101 ip = inet_ntoa(*ia);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
-<a name="l00107"></a>00107 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> ((this-&gt;fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00111"></a>00111 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
-<a name="l00112"></a>00112 <span class="keywordflow">return</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 this-&gt;port = port;
-<a name="l00115"></a>00115 inet_aton(ip,&amp;<a class="code" href="classInspSocket.html#addy">addy</a>);
-<a name="l00116"></a>00116 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
-<a name="l00117"></a>00117 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
-<a name="l00118"></a>00118 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this-&gt;port);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> flags;
-<a name="l00121"></a>00121 flags = fcntl(this-&gt;fd, F_GETFL, 0);
-<a name="l00122"></a>00122 fcntl(this-&gt;fd, F_SETFL, flags | O_NONBLOCK);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordflow">if</span>(connect(this-&gt;fd, (sockaddr*)&amp;this-&gt;addr,<span class="keyword">sizeof</span>(this-&gt;addr)) == -1)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (errno != EINPROGRESS)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00129"></a>00129 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
-<a name="l00130"></a>00130 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00131"></a>00131 <span class="keywordflow">return</span>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
-<a name="l00135"></a>00135 SE-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00136"></a>00136 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a><a class="code" href="classInspSocket.html#Close_28_29">00141</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">InspSocket::Close</a>()
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (this-&gt;fd != -1)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 this-&gt;<a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00146"></a>00146 shutdown(this-&gt;fd,2);
-<a name="l00147"></a>00147 close(this-&gt;fd);
-<a name="l00148"></a>00148 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
-<a name="l00149"></a>00149 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a><a class="code" href="classInspSocket.html#GetIP_28_29">00153</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">InspSocket::GetIP</a>()
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157
-<a name="l00158"></a><a class="code" href="classInspSocket.html#Read_28_29">00158</a> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">InspSocket::Read</a>()
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> n = recv(this-&gt;fd,this-&gt;ibuf,<span class="keyword">sizeof</span>(this-&gt;ibuf),0);
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (n &gt; 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[n] = 0;
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 <span class="keywordflow">else</span>
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> NULL;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="comment">// There are two possible outcomes to this function.</span>
-<a name="l00174"></a>00174 <span class="comment">// It will either write all of the data, or an undefined amount.</span>
-<a name="l00175"></a>00175 <span class="comment">// If an undefined amount is written the connection has failed</span>
-<a name="l00176"></a>00176 <span class="comment">// and should be aborted.</span>
-<a name="l00177"></a><a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">00177</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket::Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordtype">char</span>* d = (<span class="keywordtype">char</span>*)data.c_str();
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written = 0;
-<a name="l00181"></a>00181 <span class="keywordtype">int</span> n = 0;
-<a name="l00182"></a>00182 <span class="keywordtype">int</span> s = data.length();
-<a name="l00183"></a>00183 <span class="keywordflow">while</span> ((written &lt; data.length()) &amp;&amp; (n &gt;= 0))
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 n = send(this-&gt;fd,d,s,0);
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (n &gt; 0)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="comment">// If we didnt write everything, advance</span>
-<a name="l00189"></a>00189 <span class="comment">// the pointers so that when we retry</span>
-<a name="l00190"></a>00190 <span class="comment">// the next time around the loop, we try</span>
-<a name="l00191"></a>00191 <span class="comment">// to write what we failed to write before.</span>
-<a name="l00192"></a>00192 written += n;
-<a name="l00193"></a>00193 s -= n;
-<a name="l00194"></a>00194 d += n;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> written;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199
-<a name="l00200"></a><a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">00200</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket::Timeout</a>(time_t current)
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((this-&gt;state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) &amp;&amp; (current &gt; <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// for non-listening sockets, the timeout can occur</span>
-<a name="l00205"></a>00205 <span class="comment">// which causes termination of the connection after</span>
-<a name="l00206"></a>00206 <span class="comment">// the given number of seconds without a successful</span>
-<a name="l00207"></a>00207 <span class="comment">// connection.</span>
-<a name="l00208"></a>00208 this-&gt;<a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
-<a name="l00209"></a>00209 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
-<a name="l00210"></a>00210 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
-<a name="l00211"></a>00211 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216
-<a name="l00217"></a><a class="code" href="classInspSocket.html#Poll_28_29">00217</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">InspSocket::Poll</a>()
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keywordtype">int</span> incoming = -1;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (this-&gt;state)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
-<a name="l00224"></a>00224 this-&gt;<a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
-<a name="l00225"></a>00225 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
-<a name="l00226"></a>00226 <span class="comment"> * in read-state.</span>
-<a name="l00227"></a>00227 <span class="comment"> */</span>
-<a name="l00228"></a>00228 SE-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this-&gt;fd);
-<a name="l00229"></a>00229 SE-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
-<a name="l00233"></a>00233 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
-<a name="l00234"></a>00234 incoming = accept (this-&gt;fd, (sockaddr*)&amp;<a class="code" href="classInspSocket.html#client">client</a>,&amp;<a class="code" href="classInspSocket.html#length">length</a>);
-<a name="l00235"></a>00235 this-&gt;<a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(client.sin_addr));
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00237"></a>00237 <span class="keywordflow">break</span>;
-<a name="l00238"></a>00238 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00240"></a>00240 <span class="keywordflow">break</span>;
-<a name="l00241"></a>00241 <span class="keywordflow">default</span>:
-<a name="l00242"></a>00242 <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">00248</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket::SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
-<a name="l00251"></a>00251 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = s;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a><a class="code" href="classInspSocket.html#GetState_28_29">00254</a> <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">InspSocket::GetState</a>()
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#state">state</a>;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00259"></a><a class="code" href="classInspSocket.html#GetFd_28_29">00259</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">InspSocket::GetFd</a>()
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a><a class="code" href="classInspSocket.html#OnConnected_28_29">00264</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">InspSocket::OnConnected</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-<a name="l00265"></a><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">00265</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">InspSocket::OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e) { <span class="keywordflow">return</span>; }
-<a name="l00266"></a><a class="code" href="classInspSocket.html#OnDisconnect_28_29">00266</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">InspSocket::OnDisconnect</a>() { <span class="keywordflow">return</span> 0; }
-<a name="l00267"></a><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">00267</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">InspSocket::OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip) { <span class="keywordflow">return</span> 0; }
-<a name="l00268"></a><a class="code" href="classInspSocket.html#OnDataReady_28_29">00268</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">InspSocket::OnDataReady</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-<a name="l00269"></a><a class="code" href="classInspSocket.html#OnTimeout_28_29">00269</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">InspSocket::OnTimeout</a>() { <span class="keywordflow">return</span>; }
-<a name="l00270"></a><a class="code" href="classInspSocket.html#OnClose_28_29">00270</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">InspSocket::OnClose</a>() { <span class="keywordflow">return</span>; }
-<a name="l00271"></a>00271
-<a name="l00272"></a><a class="code" href="classInspSocket.html#_7EInspSocket_28_29">00272</a> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">InspSocket::~InspSocket</a>()
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 <span class="comment">/*</span>
-<a name="l00278"></a>00278 <span class="comment">int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)</span>
-<a name="l00279"></a>00279 <span class="comment">int OpenTCPSocket (void)</span>
-<a name="l00280"></a>00280 <span class="comment">*/</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00040"></a>00040 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
+<a name="l00041"></a>00041 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00042"></a>00042
+<a name="l00043"></a><a class="code" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">00043</a> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
+<a name="l00044"></a>00044
+<a name="l00045"></a><a class="code" href="classInspSocket.html#InspSocket_28_29">00045</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>()
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FDISCONNECTED">I_DISCONNECTED</a>;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00050"></a><a class="code" href="classInspSocket.html#InspSocket_28int_20newfd_2C_20char_20_2Aip_29">00050</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip)
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = newfd;
+<a name="l00053"></a>00053 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>;
+<a name="l00054"></a>00054 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00055"></a>00055 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00056"></a>00056 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00059"></a><a class="code" href="classInspSocket.html#InspSocket_28std_3A_3Astring_20host_2C_20int_20port_2C_20bool_20listening_2C_20unsigned_20long_20maxtime_29">00059</a> <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket::InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (listening) {
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> ((this-&gt;fd = <a class="code" href="inspircd__io_8h.html#OpenTCPSocket_28void_29">OpenTCPSocket</a>()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00065"></a>00065 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00066"></a>00066 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00067"></a>00067 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"OpenTCPSocket() error"</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">return</span>;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">else</span>
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (<a class="code" href="inspircd__io_8h.html#BindSocket_28int_20sockfd_2C_20struct_20sockaddr_5Fin_20client_2C_20struct_20sockaddr_5Fin_20server_2C_20int_20port_2C_20char_20_2Aaddr_29">BindSocket</a>(this-&gt;fd,this-&gt;client,this-&gt;server,port,(<span class="keywordtype">char</span>*)host.c_str()) == <a class="code" href="inspircd_8h.html#ERROR">ERROR</a>)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00075"></a>00075 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00076"></a>00076 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00077"></a>00077 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FBIND">I_ERR_BIND</a>);
+<a name="l00078"></a>00078 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"BindSocket() error %s"</span>,strerror(errno));
+<a name="l00079"></a>00079 <span class="keywordflow">return</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">else</span>
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>;
+<a name="l00084"></a>00084 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00085"></a>00085 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00086"></a>00086 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"New socket now in I_LISTENING state"</span>);
+<a name="l00087"></a>00087 <span class="keywordflow">return</span>;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 } <span class="keywordflow">else</span> {
+<a name="l00091"></a>00091 <span class="keywordtype">char</span>* ip;
+<a name="l00092"></a>00092 this-&gt;host = host;
+<a name="l00093"></a>00093 hostent* hoste = gethostbyname(host.c_str());
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!hoste) {
+<a name="l00095"></a>00095 ip = (<span class="keywordtype">char</span>*)host.c_str();
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
+<a name="l00097"></a>00097 <span class="keyword">struct </span>in_addr* ia = (in_addr*)hoste-&gt;h_addr;
+<a name="l00098"></a>00098 ip = inet_ntoa(*ia);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a> = ip;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a> = time(NULL)+maxtime;
+<a name="l00104"></a>00104 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">false</span>;
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> ((this-&gt;fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00108"></a>00108 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FSOCKET">I_ERR_SOCKET</a>);
+<a name="l00109"></a>00109 <span class="keywordflow">return</span>;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 this-&gt;port = port;
+<a name="l00112"></a>00112 inet_aton(ip,&amp;<a class="code" href="classInspSocket.html#addy">addy</a>);
+<a name="l00113"></a>00113 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_family = AF_INET;
+<a name="l00114"></a>00114 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_addr = <a class="code" href="classInspSocket.html#addy">addy</a>;
+<a name="l00115"></a>00115 <a class="code" href="classInspSocket.html#addr">addr</a>.sin_port = htons(this-&gt;port);
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">int</span> flags;
+<a name="l00118"></a>00118 flags = fcntl(this-&gt;fd, F_GETFL, 0);
+<a name="l00119"></a>00119 fcntl(this-&gt;fd, F_SETFL, flags | O_NONBLOCK);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordflow">if</span>(connect(this-&gt;fd, (sockaddr*)&amp;this-&gt;addr,<span class="keyword">sizeof</span>(this-&gt;addr)) == -1)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (errno != EINPROGRESS)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00126"></a>00126 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FCONNECT">I_ERR_CONNECT</a>);
+<a name="l00127"></a>00127 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>;
+<a name="l00132"></a>00132 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">false</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00133"></a>00133 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = <span class="keyword">this</span>;
+<a name="l00134"></a>00134 <span class="keywordflow">return</span>;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a><a class="code" href="classInspSocket.html#Close_28_29">00138</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">InspSocket::Close</a>()
+<a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (this-&gt;fd != -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 this-&gt;<a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00143"></a>00143 shutdown(this-&gt;fd,2);
+<a name="l00144"></a>00144 close(this-&gt;fd);
+<a name="l00145"></a>00145 socket_ref[this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>] = NULL;
+<a name="l00146"></a>00146 this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a> = -1;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149
+<a name="l00150"></a><a class="code" href="classInspSocket.html#GetIP_28_29">00150</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">InspSocket::GetIP</a>()
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154
+<a name="l00155"></a><a class="code" href="classInspSocket.html#Read_28_29">00155</a> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">InspSocket::Read</a>()
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordtype">int</span> n = recv(this-&gt;fd,this-&gt;ibuf,<span class="keyword">sizeof</span>(this-&gt;ibuf),0);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (n &gt; 0)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[n] = 0;
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 <span class="keywordflow">else</span>
+<a name="l00164"></a>00164 {
+<a name="l00165"></a>00165 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"EOF or error on socket"</span>);
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> NULL;
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="comment">// There are two possible outcomes to this function.</span>
+<a name="l00171"></a>00171 <span class="comment">// It will either write all of the data, or an undefined amount.</span>
+<a name="l00172"></a>00172 <span class="comment">// If an undefined amount is written the connection has failed</span>
+<a name="l00173"></a>00173 <span class="comment">// and should be aborted.</span>
+<a name="l00174"></a><a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">00174</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">InspSocket::Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> = this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> + data;
+<a name="l00177"></a>00177 this-&gt;<a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> data.length();
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a><a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">00181</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">InspSocket::FlushWriteBuffer</a>()
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keywordtype">int</span> result = 0;
+<a name="l00184"></a>00184 <span class="keywordflow">if</span> (this-&gt;Buffer.length())
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 result = send(this-&gt;fd,this-&gt;Buffer.c_str(),this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a>.length(),0);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (result &gt; 0)
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 <span class="comment">/* If we wrote some, advance the buffer forwards */</span>
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* n = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a>.c_str();
+<a name="l00191"></a>00191 n += result;
+<a name="l00192"></a>00192 this-&gt;<a class="code" href="classInspSocket.html#Buffer">Buffer</a> = n;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196
+<a name="l00197"></a><a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">00197</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">InspSocket::Timeout</a>(time_t current)
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> ((this-&gt;state == <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>) &amp;&amp; (current &gt; <a class="code" href="classInspSocket.html#timeout_5Fend">timeout_end</a>))
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="comment">// for non-listening sockets, the timeout can occur</span>
+<a name="l00202"></a>00202 <span class="comment">// which causes termination of the connection after</span>
+<a name="l00203"></a>00203 <span class="comment">// the given number of seconds without a successful</span>
+<a name="l00204"></a>00204 <span class="comment">// connection.</span>
+<a name="l00205"></a>00205 this-&gt;<a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00206"></a>00206 this-&gt;<a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketErrorI_5FERR_5FTIMEOUT">I_ERR_TIMEOUT</a>);
+<a name="l00207"></a>00207 <a class="code" href="classInspSocket.html#timeout">timeout</a> = <span class="keyword">true</span>;
+<a name="l00208"></a>00208 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = <a class="code" href="socket_8h.html#InspSocketStateI_5FERROR">I_ERROR</a>;
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (this-&gt;Buffer.length())
+<a name="l00212"></a>00212 this-&gt;<a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
+<a name="l00216"></a><a class="code" href="classInspSocket.html#Poll_28_29">00216</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">InspSocket::Poll</a>()
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 <span class="keywordtype">int</span> incoming = -1;
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">switch</span> (this-&gt;state)
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTING">I_CONNECTING</a>:
+<a name="l00223"></a>00223 this-&gt;<a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>);
+<a name="l00224"></a>00224 <span class="comment">/* Our socket was in write-state, so delete it and re-add it</span>
+<a name="l00225"></a>00225 <span class="comment"> * in read-state.</span>
+<a name="l00226"></a>00226 <span class="comment"> */</span>
+<a name="l00227"></a>00227 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(this-&gt;fd);
+<a name="l00228"></a>00228 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(this-&gt;fd,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FMODULE">X_ESTAB_MODULE</a>);
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00230"></a>00230 <span class="keywordflow">break</span>;
+<a name="l00231"></a>00231 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FLISTENING">I_LISTENING</a>:
+<a name="l00232"></a>00232 <a class="code" href="classInspSocket.html#length">length</a> = <span class="keyword">sizeof</span> (<a class="code" href="classInspSocket.html#client">client</a>);
+<a name="l00233"></a>00233 incoming = accept (this-&gt;fd, (sockaddr*)&amp;<a class="code" href="classInspSocket.html#client">client</a>,&amp;<a class="code" href="classInspSocket.html#length">length</a>);
+<a name="l00234"></a>00234 this-&gt;<a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(incoming,inet_ntoa(client.sin_addr));
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">break</span>;
+<a name="l00237"></a>00237 <span class="keywordflow">case</span> <a class="code" href="socket_8h.html#InspSocketStateI_5FCONNECTED">I_CONNECTED</a>:
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
+<a name="l00239"></a>00239 <span class="keywordflow">break</span>;
+<a name="l00240"></a>00240 <span class="keywordflow">default</span>:
+<a name="l00241"></a>00241 <span class="keywordflow">break</span>;
+<a name="l00242"></a>00242 }
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246
+<a name="l00247"></a><a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">00247</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">InspSocket::SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Socket state change"</span>);
+<a name="l00250"></a>00250 this-&gt;<a class="code" href="classInspSocket.html#state">state</a> = s;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a><a class="code" href="classInspSocket.html#GetState_28_29">00253</a> <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">InspSocket::GetState</a>()
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#state">state</a>;
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a><a class="code" href="classInspSocket.html#GetFd_28_29">00258</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">InspSocket::GetFd</a>()
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classInspSocket.html#fd">fd</a>;
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262
+<a name="l00263"></a><a class="code" href="classInspSocket.html#OnConnected_28_29">00263</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">InspSocket::OnConnected</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00264"></a><a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">00264</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">InspSocket::OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e) { <span class="keywordflow">return</span>; }
+<a name="l00265"></a><a class="code" href="classInspSocket.html#OnDisconnect_28_29">00265</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">InspSocket::OnDisconnect</a>() { <span class="keywordflow">return</span> 0; }
+<a name="l00266"></a><a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">00266</a> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">InspSocket::OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip) { <span class="keywordflow">return</span> 0; }
+<a name="l00267"></a><a class="code" href="classInspSocket.html#OnDataReady_28_29">00267</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">InspSocket::OnDataReady</a>() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00268"></a><a class="code" href="classInspSocket.html#OnTimeout_28_29">00268</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">InspSocket::OnTimeout</a>() { <span class="keywordflow">return</span>; }
+<a name="l00269"></a><a class="code" href="classInspSocket.html#OnClose_28_29">00269</a> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">InspSocket::OnClose</a>() { <span class="keywordflow">return</span>; }
+<a name="l00270"></a>00270
+<a name="l00271"></a><a class="code" href="classInspSocket.html#_7EInspSocket_28_29">00271</a> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">InspSocket::~InspSocket</a>()
+<a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 this-&gt;<a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="comment">/*</span>
+<a name="l00277"></a>00277 <span class="comment">int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr)</span>
+<a name="l00278"></a>00278 <span class="comment">int OpenTCPSocket (void)</span>
+<a name="l00279"></a>00279 <span class="comment">*/</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socket_8cpp.html b/docs/module-doc/socket_8cpp.html
index fda9e1ce7..8a47414ce 100644
--- a/docs/module-doc/socket_8cpp.html
+++ b/docs/module-doc/socket_8cpp.html
@@ -23,7 +23,6 @@
<code>#include &quot;<a class="el" href="socket_8h-source.html">socket.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="inspircd__io_8h-source.html">inspircd_io.h</a>&quot;</code><br>
-<code>#include &quot;inspircd_util.h&quot;</code><br>
<code>#include &quot;inspstring.h&quot;</code><br>
<code>#include &quot;helperfuncs.h&quot;</code><br>
<code>#include &quot;<a class="el" href="socketengine_8h-source.html">socketengine.h</a>&quot;</code><br>
@@ -31,21 +30,17 @@
<p>
Include dependency graph for socket.cpp:<p><center><img src="socket_8cpp__incl.gif" border="0" usemap="#socket.cpp_map" alt=""></center>
<map name="socket.cpp_map">
-<area href="socket_8h-source.html" shape="rect" coords="456,374,528,400" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="301,450,381,476" alt="">
-<area href="inspircd__io_8h-source.html" shape="rect" coords="444,424,540,451" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="140,830,252,856" alt="">
+<area href="socket_8h-source.html" shape="rect" coords="318,463,390,490" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="155,424,235,451" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="306,564,402,591" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="298,210,410,236" alt="">
</map>
<p>
<a href="socket_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#SE">SE</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#boundPortCount">boundPortCount</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a> [MAXSOCKS]</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket_8cpp.html#TIME">TIME</a></td></tr>
@@ -53,59 +48,13 @@ Include dependency graph for socket.cpp:<p><center><img src="socket_8cpp__incl.g
</table>
<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="boundPortCount"></a><!-- doxytag: member="socket.cpp::boundPortCount" ref="boundPortCount" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="socket_8cpp.html#boundPortCount">boundPortCount</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="openSockfd_5BMAXSOCKS_5D"></a><!-- doxytag: member="socket.cpp::openSockfd" ref="openSockfd_5BMAXSOCKS_5D" args="[MAXSOCKS]" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="socket_8cpp.html#openSockfd_5BMAXSOCKS_5D">openSockfd</a>[MAXSOCKS] </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="SE"></a><!-- doxytag: member="socket.cpp::SE" ref="SE" args="" --><p>
+<a class="anchor" name="ServerInstance"></a><!-- doxytag: member="socket.cpp::ServerInstance" ref="ServerInstance" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classSocketEngine.html">SocketEngine</a>* <a class="el" href="socket_8cpp.html#SE">SE</a> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
</tr>
</table>
</td>
@@ -128,7 +77,7 @@ Include dependency graph for socket.cpp:<p><center><img src="socket_8cpp__incl.g
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
</tr>
</table>
</td>
@@ -144,7 +93,7 @@ Include dependency graph for socket.cpp:<p><center><img src="socket_8cpp__incl.g
<p>
<p>
-Definition at line <a class="el" href="socket_8cpp-source.html#l00046">46</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00043">43</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
</tr>
</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="socket.cpp::TIME" ref="TIME" args="" --><p>
@@ -170,7 +119,7 @@ Definition at line <a class="el" href="socket_8cpp-source.html#l00046">46</a> of
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socket_8cpp__incl.map b/docs/module-doc/socket_8cpp__incl.map
index e5dbf66eb..42039b390 100644
--- a/docs/module-doc/socket_8cpp__incl.map
+++ b/docs/module-doc/socket_8cpp__incl.map
@@ -1,5 +1,5 @@
base referer
-rect $socket_8h-source.html 456,374 528,400
-rect $inspircd_8h-source.html 301,450 381,476
-rect $inspircd__io_8h-source.html 444,424 540,451
-rect $socketengine_8h-source.html 140,830 252,856
+rect $socket_8h-source.html 318,463 390,490
+rect $inspircd_8h-source.html 155,424 235,451
+rect $inspircd__io_8h-source.html 306,564 402,591
+rect $socketengine_8h-source.html 298,210 410,236
diff --git a/docs/module-doc/socket_8cpp__incl.md5 b/docs/module-doc/socket_8cpp__incl.md5
index 532a9daa0..0c7a5d7de 100644
--- a/docs/module-doc/socket_8cpp__incl.md5
+++ b/docs/module-doc/socket_8cpp__incl.md5
@@ -1 +1 @@
-9f75c46dbd63c7144404dcb531abb481 \ No newline at end of file
+03426437789107bb0505454dfe45ab2a \ No newline at end of file
diff --git a/docs/module-doc/socket_8h-source.html b/docs/module-doc/socket_8h-source.html
index 4001154a5..601404fc3 100644
--- a/docs/module-doc/socket_8h-source.html
+++ b/docs/module-doc/socket_8h-source.html
@@ -56,61 +56,65 @@
<a name="l00092"></a>00092
<a name="l00097"></a><a class="code" href="classInspSocket.html#timeout">00097</a> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#timeout">timeout</a>;
<a name="l00098"></a>00098
-<a name="l00106"></a><a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">00106</a> <span class="keywordtype">char</span> <a class="code" href="classInspSocket.html#ibuf_5B_31_36_33_38_34_5D">ibuf</a>[16384];
+<a name="l00106"></a><a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">00106</a> <span class="keywordtype">char</span> <a class="code" href="classInspSocket.html#ibuf_5B_36_35_35_33_35_5D">ibuf</a>[65535];
<a name="l00107"></a>00107
-<a name="l00113"></a><a class="code" href="classInspSocket.html#IP">00113</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#IP">IP</a>;
-<a name="l00114"></a>00114
-<a name="l00119"></a><a class="code" href="classInspSocket.html#client">00119</a> sockaddr_in <a class="code" href="classInspSocket.html#client">client</a>;
-<a name="l00120"></a>00120
-<a name="l00125"></a><a class="code" href="classInspSocket.html#server">00125</a> sockaddr_in <a class="code" href="classInspSocket.html#server">server</a>;
-<a name="l00126"></a>00126
-<a name="l00131"></a><a class="code" href="classInspSocket.html#length">00131</a> socklen_t <a class="code" href="classInspSocket.html#length">length</a>;
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">public</span>:
-<a name="l00134"></a>00134
-<a name="l00139"></a>00139 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>();
-<a name="l00140"></a>00140
-<a name="l00149"></a>00149 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
-<a name="l00150"></a>00150
-<a name="l00160"></a>00160 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#host">host</a>, <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#port">port</a>, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime);
-<a name="l00161"></a>00161
-<a name="l00167"></a>00167 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
-<a name="l00168"></a>00168
-<a name="l00175"></a>00175 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e);
-<a name="l00176"></a>00176
-<a name="l00181"></a>00181 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">OnDisconnect</a>();
-<a name="l00182"></a>00182
-<a name="l00195"></a>00195 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
-<a name="l00196"></a>00196
-<a name="l00204"></a>00204 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00111"></a><a class="code" href="classInspSocket.html#Buffer">00111</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#Buffer">Buffer</a>;
+<a name="l00112"></a>00112
+<a name="l00118"></a><a class="code" href="classInspSocket.html#IP">00118</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#IP">IP</a>;
+<a name="l00119"></a>00119
+<a name="l00124"></a><a class="code" href="classInspSocket.html#client">00124</a> sockaddr_in <a class="code" href="classInspSocket.html#client">client</a>;
+<a name="l00125"></a>00125
+<a name="l00130"></a><a class="code" href="classInspSocket.html#server">00130</a> sockaddr_in <a class="code" href="classInspSocket.html#server">server</a>;
+<a name="l00131"></a>00131
+<a name="l00136"></a><a class="code" href="classInspSocket.html#length">00136</a> socklen_t <a class="code" href="classInspSocket.html#length">length</a>;
+<a name="l00137"></a>00137
+<a name="l00140"></a>00140 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#FlushWriteBuffer_28_29">FlushWriteBuffer</a>();
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">public</span>:
+<a name="l00143"></a>00143
+<a name="l00148"></a>00148 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>();
+<a name="l00149"></a>00149
+<a name="l00158"></a>00158 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
+<a name="l00159"></a>00159
+<a name="l00169"></a>00169 <a class="code" href="classInspSocket.html#InspSocket_28_29">InspSocket</a>(<a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#host">host</a>, <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#port">port</a>, <span class="keywordtype">bool</span> listening, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxtime);
+<a name="l00170"></a>00170
+<a name="l00176"></a>00176 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnConnected_28_29">OnConnected</a>();
+<a name="l00177"></a>00177
+<a name="l00184"></a>00184 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnError_28InspSocketError_20e_29">OnError</a>(<a class="code" href="socket_8h.html#InspSocketError">InspSocketError</a> e);
+<a name="l00185"></a>00185
+<a name="l00190"></a>00190 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnDisconnect_28_29">OnDisconnect</a>();
+<a name="l00191"></a>00191
+<a name="l00204"></a>00204 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#OnDataReady_28_29">OnDataReady</a>();
<a name="l00205"></a>00205
-<a name="l00214"></a>00214 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
-<a name="l00215"></a>00215
-<a name="l00221"></a>00221 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">Read</a>();
-<a name="l00222"></a>00222
-<a name="l00228"></a>00228 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">GetIP</a>();
-<a name="l00229"></a>00229
-<a name="l00236"></a>00236 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">Timeout</a>(time_t current);
-<a name="l00237"></a>00237
-<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
-<a name="l00244"></a>00244
-<a name="l00258"></a>00258 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
-<a name="l00259"></a>00259
-<a name="l00265"></a>00265 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s);
-<a name="l00266"></a>00266
-<a name="l00270"></a>00270 <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">GetState</a>();
-<a name="l00271"></a>00271
-<a name="l00280"></a>00280 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">Poll</a>();
-<a name="l00281"></a>00281
-<a name="l00287"></a>00287 <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">GetFd</a>();
-<a name="l00288"></a>00288
-<a name="l00294"></a>00294 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
-<a name="l00295"></a>00295
-<a name="l00301"></a>00301 <span class="keyword">virtual</span> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>();
-<a name="l00302"></a>00302 };
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00213"></a>00213 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnTimeout_28_29">OnTimeout</a>();
+<a name="l00214"></a>00214
+<a name="l00223"></a>00223 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#OnClose_28_29">OnClose</a>();
+<a name="l00224"></a>00224
+<a name="l00230"></a>00230 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classInspSocket.html#Read_28_29">Read</a>();
+<a name="l00231"></a>00231
+<a name="l00237"></a>00237 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classInspSocket.html#GetIP_28_29">GetIP</a>();
+<a name="l00238"></a>00238
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Timeout_28time_5Ft_20current_29">Timeout</a>(time_t current);
+<a name="l00246"></a>00246
+<a name="l00252"></a>00252 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#Write_28std_3A_3Astring_20data_29">Write</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
+<a name="l00253"></a>00253
+<a name="l00267"></a>00267 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#OnIncomingConnection_28int_20newfd_2C_20char_20_2Aip_29">OnIncomingConnection</a>(<span class="keywordtype">int</span> newfd, <span class="keywordtype">char</span>* ip);
+<a name="l00268"></a>00268
+<a name="l00274"></a>00274 <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#SetState_28InspSocketState_20s_29">SetState</a>(<a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> s);
+<a name="l00275"></a>00275
+<a name="l00279"></a>00279 <a class="code" href="socket_8h.html#InspSocketState">InspSocketState</a> <a class="code" href="classInspSocket.html#GetState_28_29">GetState</a>();
+<a name="l00280"></a>00280
+<a name="l00289"></a>00289 <span class="keywordtype">bool</span> <a class="code" href="classInspSocket.html#Poll_28_29">Poll</a>();
+<a name="l00290"></a>00290
+<a name="l00296"></a>00296 <span class="keywordtype">int</span> <a class="code" href="classInspSocket.html#GetFd_28_29">GetFd</a>();
+<a name="l00297"></a>00297
+<a name="l00303"></a>00303 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInspSocket.html#Close_28_29">Close</a>();
+<a name="l00304"></a>00304
+<a name="l00310"></a>00310 <span class="keyword">virtual</span> <a class="code" href="classInspSocket.html#_7EInspSocket_28_29">~InspSocket</a>();
+<a name="l00311"></a>00311 };
+<a name="l00312"></a>00312
+<a name="l00313"></a>00313 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socket_8h.html b/docs/module-doc/socket_8h.html
index 6a07f6829..f06eb2bdf 100644
--- a/docs/module-doc/socket_8h.html
+++ b/docs/module-doc/socket_8h.html
@@ -21,8 +21,8 @@ This graph shows which files directly or indirectly include this file:<p><center
<map name="socket.hdep_map">
<area href="modules_8cpp-source.html" shape="rect" coords="260,57,359,84" alt="">
<area href="socket_8cpp-source.html" shape="rect" coords="267,133,352,160" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="129,108,209,135" alt="">
<area href="modules_8h-source.html" shape="rect" coords="128,57,211,84" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="129,108,209,135" alt="">
</map>
<p>
@@ -139,7 +139,7 @@ Definition at line <a class="el" href="socket_8h-source.html#l00029">29</a> of f
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socket_8h__dep__incl.map b/docs/module-doc/socket_8h__dep__incl.map
index 39631ee0c..9aac42e32 100644
--- a/docs/module-doc/socket_8h__dep__incl.map
+++ b/docs/module-doc/socket_8h__dep__incl.map
@@ -1,5 +1,5 @@
base referer
rect $modules_8cpp-source.html 260,57 359,84
rect $socket_8cpp-source.html 267,133 352,160
-rect $inspircd_8h-source.html 129,108 209,135
rect $modules_8h-source.html 128,57 211,84
+rect $inspircd_8h-source.html 129,108 209,135
diff --git a/docs/module-doc/socket_8h__dep__incl.md5 b/docs/module-doc/socket_8h__dep__incl.md5
index 5264f4ee1..f7ea8f6d9 100644
--- a/docs/module-doc/socket_8h__dep__incl.md5
+++ b/docs/module-doc/socket_8h__dep__incl.md5
@@ -1 +1 @@
-3c191a72f21affbd7a2ef0ada34c2b11 \ No newline at end of file
+44d57d2060fc1c23df1ada0b15f0d062 \ No newline at end of file
diff --git a/docs/module-doc/socketengine_8cpp-source.html b/docs/module-doc/socketengine_8cpp-source.html
index 9811eef6b..e04764301 100644
--- a/docs/module-doc/socketengine_8cpp-source.html
+++ b/docs/module-doc/socketengine_8cpp-source.html
@@ -212,7 +212,7 @@
<a name="l00203"></a>00203 <span class="preprocessor">#endif</span>
<a name="l00204"></a>00204 <span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="stringliteral">"misconfigured"</span>;
<a name="l00205"></a>00205 }
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socketengine_8cpp.html b/docs/module-doc/socketengine_8cpp.html
index 35ea9bd95..9c1891efc 100644
--- a/docs/module-doc/socketengine_8cpp.html
+++ b/docs/module-doc/socketengine_8cpp.html
@@ -17,9 +17,9 @@
<p>
Include dependency graph for socketengine.cpp:<p><center><img src="socketengine_8cpp__incl.gif" border="0" usemap="#socketengine.cpp_map" alt=""></center>
<map name="socketengine.cpp_map">
-<area href="globals_8h-source.html" shape="rect" coords="343,209,417,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="340,57,420,84" alt="">
-<area href="socketengine_8h-source.html" shape="rect" coords="180,159,292,185" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="492,210,567,236" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="180,108,260,135" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="308,159,420,186" alt="">
</map>
<p>
@@ -57,7 +57,7 @@ Definition at line <a class="el" href="socketengine_8cpp-source.html#l00033">33<
Referenced by <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00057">SocketEngine::GetType()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00146">SocketEngine::Wait()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socketengine_8cpp__incl.map b/docs/module-doc/socketengine_8cpp__incl.map
index e7b56eb07..c2c0abf48 100644
--- a/docs/module-doc/socketengine_8cpp__incl.map
+++ b/docs/module-doc/socketengine_8cpp__incl.map
@@ -1,4 +1,4 @@
base referer
-rect $globals_8h-source.html 343,209 417,236
-rect $inspircd_8h-source.html 340,57 420,84
-rect $socketengine_8h-source.html 180,159 292,185
+rect $globals_8h-source.html 492,210 567,236
+rect $inspircd_8h-source.html 180,108 260,135
+rect $socketengine_8h-source.html 308,159 420,186
diff --git a/docs/module-doc/socketengine_8cpp__incl.md5 b/docs/module-doc/socketengine_8cpp__incl.md5
index 333ce2806..e8adc4660 100644
--- a/docs/module-doc/socketengine_8cpp__incl.md5
+++ b/docs/module-doc/socketengine_8cpp__incl.md5
@@ -1 +1 @@
-50741f9f6cf4a87616fd7184331c0fd9 \ No newline at end of file
+a9f3c9ef26b80d60108ae75da748354c \ No newline at end of file
diff --git a/docs/module-doc/socketengine_8h-source.html b/docs/module-doc/socketengine_8h-source.html
index ceb54ee8c..bf289751c 100644
--- a/docs/module-doc/socketengine_8h-source.html
+++ b/docs/module-doc/socketengine_8h-source.html
@@ -82,7 +82,7 @@
<a name="l00142"></a>00142 };
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socketengine_8h.html b/docs/module-doc/socketengine_8h.html
index c6ee617a3..c3194dde2 100644
--- a/docs/module-doc/socketengine_8h.html
+++ b/docs/module-doc/socketengine_8h.html
@@ -26,9 +26,15 @@ Include dependency graph for socketengine.h:<p><center><img src="socketengine_8h
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="socketengine_8h__dep__incl.gif" border="0" usemap="#socketengine.hdep_map" alt=""></center>
<map name="socketengine.hdep_map">
-<area href="modules_8cpp-source.html" shape="rect" coords="180,7,279,33" alt="">
-<area href="socket_8cpp-source.html" shape="rect" coords="187,57,272,84" alt="">
-<area href="socketengine_8cpp-source.html" shape="rect" coords="167,108,292,135" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="469,311,568,338" alt="">
+<area href="socket_8cpp-source.html" shape="rect" coords="476,412,561,439" alt="">
+<area href="socketengine_8cpp-source.html" shape="rect" coords="295,58,420,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="479,108,559,135" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="167,260,247,287" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="469,210,568,236" alt="">
+<area href="inspircd__io_8h-source.html" shape="rect" coords="309,260,405,287" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="315,210,400,236" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="305,311,409,338" alt="">
</map>
<p>
@@ -106,7 +112,9 @@ Referenced by <a class="el" href="socketengine_8cpp-source.html#l00057">SocketEn
<p>
<p>
-Definition at line <a class="el" href="socketengine_8h-source.html#l00043">43</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>. </td>
+Definition at line <a class="el" href="socketengine_8h-source.html#l00043">43</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="X_5FESTAB_5FDNS"></a><!-- doxytag: member="socketengine.h::X_ESTAB_DNS" ref="X_5FESTAB_5FDNS" args="" --><p>
@@ -158,7 +166,7 @@ Definition at line <a class="el" href="socketengine_8h-source.html#l00045">45</a
<p>
Definition at line <a class="el" href="socketengine_8h-source.html#l00044">44</a> of file <a class="el" href="socketengine_8h-source.html">socketengine.h</a>.
<p>
-Referenced by <a class="el" href="socket_8cpp-source.html#l00053">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00217">InspSocket::Poll()</a>. </td>
+Referenced by <a class="el" href="socket_8cpp-source.html#l00050">InspSocket::InspSocket()</a>, and <a class="el" href="socket_8cpp-source.html#l00216">InspSocket::Poll()</a>. </td>
</tr>
</table>
<a class="anchor" name="X_5FLISTEN"></a><!-- doxytag: member="socketengine.h::X_LISTEN" ref="X_5FLISTEN" args="" --><p>
@@ -215,7 +223,7 @@ Definition at line <a class="el" href="socketengine_8h-source.html#l00055">55</a
Referenced by <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, and <a class="el" href="socketengine_8cpp-source.html#l00146">SocketEngine::Wait()</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/socketengine_8h__dep__incl.map b/docs/module-doc/socketengine_8h__dep__incl.map
index d19518b55..50af03e3e 100644
--- a/docs/module-doc/socketengine_8h__dep__incl.map
+++ b/docs/module-doc/socketengine_8h__dep__incl.map
@@ -1,4 +1,10 @@
base referer
-rect $modules_8cpp-source.html 180,7 279,33
-rect $socket_8cpp-source.html 187,57 272,84
-rect $socketengine_8cpp-source.html 167,108 292,135
+rect $modules_8cpp-source.html 469,311 568,338
+rect $socket_8cpp-source.html 476,412 561,439
+rect $socketengine_8cpp-source.html 295,58 420,84
+rect $users_8cpp-source.html 479,108 559,135
+rect $inspircd_8h-source.html 167,260 247,287
+rect $channels_8cpp-source.html 469,210 568,236
+rect $inspircd__io_8h-source.html 309,260 405,287
+rect $typedefs_8h-source.html 315,210 400,236
+rect $userprocess_8h-source.html 305,311 409,338
diff --git a/docs/module-doc/socketengine_8h__dep__incl.md5 b/docs/module-doc/socketengine_8h__dep__incl.md5
index eb92fe10f..494132264 100644
--- a/docs/module-doc/socketengine_8h__dep__incl.md5
+++ b/docs/module-doc/socketengine_8h__dep__incl.md5
@@ -1 +1 @@
-00d3a68c8884c78980281618846deffd \ No newline at end of file
+5d41f86d6f67ff7b18b6ad71c4748bc2 \ No newline at end of file
diff --git a/docs/module-doc/socketengine_8h__incl.md5 b/docs/module-doc/socketengine_8h__incl.md5
index 8b91e5aee..5f44e8306 100644
--- a/docs/module-doc/socketengine_8h__incl.md5
+++ b/docs/module-doc/socketengine_8h__incl.md5
@@ -1 +1 @@
-9faa242bc7dd08e1da2018aca66c84c3 \ No newline at end of file
+9fbbbfd9144c559ad108601ee9a99b89 \ No newline at end of file
diff --git a/docs/module-doc/structdns__ip4list-members.html b/docs/module-doc/structdns__ip4list-members.html
index fa02814fa..00adf56b3 100644
--- a/docs/module-doc/structdns__ip4list-members.html
+++ b/docs/module-doc/structdns__ip4list-members.html
@@ -8,7 +8,7 @@
<h1>dns_ip4list Member List</h1>This is the complete list of members for <a class="el" href="structdns__ip4list.html">dns_ip4list</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structdns__ip4list.html#ip">ip</a></td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structdns__ip4list.html#next">next</a></td><td><a class="el" href="structdns__ip4list.html">dns_ip4list</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structdns__ip4list.html b/docs/module-doc/structdns__ip4list.html
index cf1bd3068..dbaa45b4c 100644
--- a/docs/module-doc/structdns__ip4list.html
+++ b/docs/module-doc/structdns__ip4list.html
@@ -74,7 +74,7 @@ Definition at line <a class="el" href="dns_8h-source.html#l00028">28</a> of file
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="dns_8h-source.html">dns.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1InAddr__HashComp-members.html b/docs/module-doc/structirc_1_1InAddr__HashComp-members.html
index 249b293ef..8182411d7 100644
--- a/docs/module-doc/structirc_1_1InAddr__HashComp-members.html
+++ b/docs/module-doc/structirc_1_1InAddr__HashComp-members.html
@@ -7,7 +7,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>
<h1>irc::InAddr_HashComp Member List</h1>This is the complete list of members for <a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structirc_1_1InAddr__HashComp.html#operator_28_29_28const_20in_5Faddr_20_26s_31_2C_20const_20in_5Faddr_20_26s_32_29_20const_20">operator()</a>(const in_addr &amp;s1, const in_addr &amp;s2) const </td><td><a class="el" href="structirc_1_1InAddr__HashComp.html">irc::InAddr_HashComp</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1InAddr__HashComp.html b/docs/module-doc/structirc_1_1InAddr__HashComp.html
index 49a97d2d1..db0ae84d5 100644
--- a/docs/module-doc/structirc_1_1InAddr__HashComp.html
+++ b/docs/module-doc/structirc_1_1InAddr__HashComp.html
@@ -68,7 +68,7 @@ The operator () does the actual comparison in hash_map.
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1StrHashComp-members.html b/docs/module-doc/structirc_1_1StrHashComp-members.html
index dd9da58d0..42b6d308f 100644
--- a/docs/module-doc/structirc_1_1StrHashComp-members.html
+++ b/docs/module-doc/structirc_1_1StrHashComp-members.html
@@ -7,7 +7,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>
<h1>irc::StrHashComp Member List</h1>This is the complete list of members for <a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structirc_1_1StrHashComp.html#operator_28_29_28const_20std_3A_3Astring_20_26s_31_2C_20const_20std_3A_3Astring_20_26s_32_29_20const_20">operator()</a>(const std::string &amp;s1, const std::string &amp;s2) const </td><td><a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1StrHashComp.html b/docs/module-doc/structirc_1_1StrHashComp.html
index 74ece1118..9f14acf2a 100644
--- a/docs/module-doc/structirc_1_1StrHashComp.html
+++ b/docs/module-doc/structirc_1_1StrHashComp.html
@@ -68,7 +68,7 @@ The operator () does the actual comparison in hash_map.
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1irc__char__traits-members.html b/docs/module-doc/structirc_1_1irc__char__traits-members.html
index 596ff8900..18a070203 100644
--- a/docs/module-doc/structirc_1_1irc__char__traits-members.html
+++ b/docs/module-doc/structirc_1_1irc__char__traits-members.html
@@ -11,7 +11,7 @@
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#find_28const_20char_20_2As_31_2C_20int_20n_2C_20char_20c_29">find</a>(const char *s1, int n, char c)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#lt_28char_20c_31st_2C_20char_20c_32nd_29">lt</a>(char c1st, char c2nd)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structirc_1_1irc__char__traits.html#ne_28char_20c_31st_2C_20char_20c_32nd_29">ne</a>(char c1st, char c2nd)</td><td><a class="el" href="structirc_1_1irc__char__traits.html">irc::irc_char_traits</a></td><td><code> [static]</code></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structirc_1_1irc__char__traits.html b/docs/module-doc/structirc_1_1irc__char__traits.html
index ea99c41a1..cc87009d3 100644
--- a/docs/module-doc/structirc_1_1irc__char__traits.html
+++ b/docs/module-doc/structirc_1_1irc__char__traits.html
@@ -256,7 +256,7 @@ Check if two chars do NOT match.
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html
index ee61dcf3d..ce275a162 100644
--- a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html
+++ b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html
@@ -7,7 +7,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>
<h1>nspace::hash&lt; in_addr &gt; Member List</h1>This is the complete list of members for <a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">nspace::hash&lt; in_addr &gt;</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html#operator_28_29_28const_20struct_20in_5Faddr_20_26a_29_20const_20">operator()</a>(const struct in_addr &amp;a) const </td><td><a class="el" href="structnspace_1_1hash_3_01in__addr_01_4.html">nspace::hash&lt; in_addr &gt;</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html
index b6f8cbff5..67b91bf4a 100644
--- a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html
+++ b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html
@@ -54,7 +54,7 @@ Definition at line <a class="el" href="hashcomp_8h-source.html#l00054">54</a> of
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html b/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html
index 9fab76b65..db868f084 100644
--- a/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html
+++ b/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html
@@ -7,7 +7,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>
<h1>nspace::hash&lt; string &gt; Member List</h1>This is the complete list of members for <a class="el" href="structnspace_1_1hash_3_01string_01_4.html">nspace::hash&lt; string &gt;</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html#operator_28_29_28const_20string_20_26s_29_20const_20">operator()</a>(const string &amp;s) const </td><td><a class="el" href="structnspace_1_1hash_3_01string_01_4.html">nspace::hash&lt; string &gt;</a></td><td></td></tr>
-</table><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+</table><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html b/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html
index 73e23d188..c16f33dc1 100644
--- a/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html
+++ b/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html
@@ -54,7 +54,7 @@ Definition at line <a class="el" href="hashcomp_8h-source.html#l00062">62</a> of
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="hashcomp_8h-source.html">hashcomp.h</a></ul>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/tree.html b/docs/module-doc/tree.html
index c109a1b8f..1c7b81379 100644
--- a/docs/module-doc/tree.html
+++ b/docs/module-doc/tree.html
@@ -74,6 +74,7 @@
<div style="display: block;">
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder1', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p>
<div id="folder1">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="aes_8h.html" target="basefrm">aes.h</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="base_8h.html" target="basefrm">base.h</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="channels_8cpp.html" target="basefrm">channels.cpp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="channels_8h.html" target="basefrm">channels.h</a></p>
@@ -103,11 +104,13 @@
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder2', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder2', this)"/><a class="el" href="annotated.html" target="basefrm">Class List</a></p>
<div id="folder2">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAdmin.html" target="basefrm">Admin</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAES.html" target="basefrm">AES</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBanItem.html" target="basefrm">BanItem</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBoolSet.html" target="basefrm">BoolSet</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classchanrec.html" target="basefrm">chanrec</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classstd_1_1char__traits.html" target="basefrm">char_traits</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classclassbase.html" target="basefrm">classbase</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcmd__mode.html" target="basefrm">cmd_mode</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classConfigReader.html" target="basefrm">ConfigReader</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classConnectClass.html" target="basefrm">ConnectClass</a></p>
@@ -134,6 +137,7 @@
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1irc__char__traits.html" target="basefrm">irc::irc_char_traits</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classKLine.html" target="basefrm">KLine</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParameter.html" target="basefrm">ModeParameter</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParser.html" target="basefrm">ModeParser</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModule.html" target="basefrm">Module</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModuleFactory.html" target="basefrm">ModuleFactory</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModuleMessage.html" target="basefrm">ModuleMessage</a></p>
@@ -153,6 +157,7 @@
</div>
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder3', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder3', this)"/><a class="el" href="hierarchy.html" target="basefrm">Class Hierarchy</a></p>
<div id="folder3">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classAES.html" target="basefrm">AES</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classBoolSet.html" target="basefrm">BoolSet</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder4', this)"/><a class="el" href="classstd_1_1char__traits.html" target="basefrm">char_traits</a></p>
<div id="folder4">
@@ -166,7 +171,6 @@
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder6', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder6', this)"/><a class="el" href="classExtensible.html" target="basefrm">Extensible</a></p>
<div id="folder6">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classchanrec.html" target="basefrm">chanrec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder7', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder7', this)"/><a class="el" href="classconnection.html" target="basefrm">connection</a></p>
<div id="folder7">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classuserrec.html" target="basefrm">userrec</a></p>
@@ -202,6 +206,10 @@
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classZLine.html" target="basefrm">ZLine</a></p>
</div>
</div>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder11', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder11', this)"/><a class="el" href="classcommand__t.html" target="basefrm">command_t</a></p>
+ <div id="folder11">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classcmd__mode.html" target="basefrm">cmd_mode</a></p>
+ </div>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classCullItem.html" target="basefrm">CullItem</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classCullList.html" target="basefrm">CullList</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classDNS.html" target="basefrm">DNS</a></p>
@@ -211,34 +219,35 @@
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1InAddr__HashComp.html" target="basefrm">irc::InAddr_HashComp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classInspIRCd.html" target="basefrm">InspIRCd</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classInspSocket.html" target="basefrm">InspSocket</a></p>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classModeParser.html" target="basefrm">ModeParser</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classserverstats.html" target="basefrm">serverstats</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classSocketEngine.html" target="basefrm">SocketEngine</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structirc_1_1StrHashComp.html" target="basefrm">irc::StrHashComp</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classWhoWasUser.html" target="basefrm">WhoWasUser</a></p>
</div>
<p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="functions.html" target="basefrm">Class Members</a></p>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder11', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder11', this)"/><a class="el" href="namespaces.html" target="basefrm">Namespace List</a></p>
- <div id="folder11">
+ <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder12', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder12', this)"/><a class="el" href="namespaces.html" target="basefrm">Namespace List</a></p>
+ <div id="folder12">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespaceirc.html" target="basefrm">irc</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespacenspace.html" target="basefrm">nspace</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="namespacestd.html" target="basefrm">std</a></p>
</div>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder12', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder12', this)"/><a class="el" href="dirs.html" target="basefrm">Directories</a></p>
- <div id="folder12">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder13', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder13', this)"/><a class="el" href="dir_000000.html" target="basefrm">home</a></p>
- <div id="folder13">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder14', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder14', this)"/><a class="el" href="dir_000001.html" target="basefrm">brain</a></p>
- <div id="folder14">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder15', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder15', this)"/><a class="el" href="dir_000002.html" target="basefrm">inspircd-cvs</a></p>
- <div id="folder15">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder16', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder16', this)"/><a class="el" href="dir_000003.html" target="basefrm">inspircd</a></p>
- <div id="folder16">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder17', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder17', this)"/><a class="el" href="dir_000004.html" target="basefrm">include</a></p>
- <div id="folder17">
- </div>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder18', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder18', this)"/><a class="el" href="dir_000005.html" target="basefrm">src</a></p>
+ <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder13', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder13', this)"/><a class="el" href="dirs.html" target="basefrm">Directories</a></p>
+ <div id="folder13">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder14', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder14', this)"/><a class="el" href="dir_000000.html" target="basefrm">home</a></p>
+ <div id="folder14">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder15', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder15', this)"/><a class="el" href="dir_000001.html" target="basefrm">brain</a></p>
+ <div id="folder15">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder16', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder16', this)"/><a class="el" href="dir_000002.html" target="basefrm">inspircd-cvs</a></p>
+ <div id="folder16">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder17', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder17', this)"/><a class="el" href="dir_000003.html" target="basefrm">inspircd</a></p>
+ <div id="folder17">
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder18', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder18', this)"/><a class="el" href="dir_000004.html" target="basefrm">include</a></p>
<div id="folder18">
</div>
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder19', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder19', this)"/><a class="el" href="dir_000005.html" target="basefrm">src</a></p>
+ <div id="folder19">
+ </div>
</div>
</div>
</div>
diff --git a/docs/module-doc/typedefs_8h-source.html b/docs/module-doc/typedefs_8h-source.html
index a907e32fc..7f7c60887 100644
--- a/docs/module-doc/typedefs_8h-source.html
+++ b/docs/module-doc/typedefs_8h-source.html
@@ -30,14 +30,13 @@
<a name="l00021"></a><a class="code" href="typedefs_8h.html#chan_5Fhash">00021</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="typedefs_8h.html#chan_5Fhash">chan_hash</a>;
<a name="l00022"></a><a class="code" href="typedefs_8h.html#address_5Fcache">00022</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="typedefs_8h.html#address_5Fcache">address_cache</a>;
<a name="l00023"></a><a class="code" href="typedefs_8h.html#whowas_5Fhash">00023</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="typedefs_8h.html#whowas_5Fhash">whowas_hash</a>;
-<a name="l00024"></a><a class="code" href="typedefs_8h.html#command_5Ftable">00024</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="typedefs_8h.html#command_5Ftable">command_table</a>;
-<a name="l00025"></a><a class="code" href="typedefs_8h.html#servernamelist">00025</a> <span class="keyword">typedef</span> std::vector&lt;std::string&gt; <a class="code" href="typedefs_8h.html#servernamelist">servernamelist</a>;
-<a name="l00026"></a><a class="code" href="typedefs_8h.html#ExtModeList">00026</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a>;
-<a name="l00027"></a><a class="code" href="typedefs_8h.html#ExtModeListIter">00027</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a>;
-<a name="l00028"></a><a class="code" href="typedefs_8h.html#file_5Fcache">00028</a> <span class="keyword">typedef</span> std::deque&lt;std::string&gt; <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00024"></a><a class="code" href="typedefs_8h.html#servernamelist">00024</a> <span class="keyword">typedef</span> std::vector&lt;std::string&gt; <a class="code" href="typedefs_8h.html#servernamelist">servernamelist</a>;
+<a name="l00025"></a><a class="code" href="typedefs_8h.html#ExtModeList">00025</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="typedefs_8h.html#ExtModeList">ExtModeList</a>;
+<a name="l00026"></a><a class="code" href="typedefs_8h.html#ExtModeListIter">00026</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="typedefs_8h.html#ExtModeListIter">ExtModeListIter</a>;
+<a name="l00027"></a><a class="code" href="typedefs_8h.html#file_5Fcache">00027</a> <span class="keyword">typedef</span> std::deque&lt;std::string&gt; <a class="code" href="globals_8h.html#file_5Fcache">file_cache</a>;
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/typedefs_8h.html b/docs/module-doc/typedefs_8h.html
index 2db725325..180274f56 100644
--- a/docs/module-doc/typedefs_8h.html
+++ b/docs/module-doc/typedefs_8h.html
@@ -22,20 +22,21 @@
<p>
Include dependency graph for typedefs.h:<p><center><img src="typedefs_8h__incl.gif" border="0" usemap="#typedefs.h_map" alt=""></center>
<map name="typedefs.h_map">
-<area href="users_8h-source.html" shape="rect" coords="568,463,632,489" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="684,361,769,388" alt="">
-<area href="hashcomp_8h-source.html" shape="rect" coords="141,108,235,135" alt="">
-<area href="ctables_8h-source.html" shape="rect" coords="300,209,375,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="439,235,519,261" alt="">
-<area href="modules_8h-source.html" shape="rect" coords="147,311,229,337" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="441,412,516,439" alt="">
+<area href="users_8h-source.html" shape="rect" coords="280,245,344,272" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="404,448,489,475" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="400,93,493,120" alt="">
+<area href="ctables_8h-source.html" shape="rect" coords="275,600,349,627" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="143,335,223,361" alt="">
+<area href="modules_8h-source.html" shape="rect" coords="141,600,224,627" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="145,423,220,449" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="typedefs_8h__dep__incl.gif" border="0" usemap="#typedefs.hdep_map" alt=""></center>
<map name="typedefs.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="141,7,240,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="141,58,240,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="141,7,240,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="141,57,240,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="151,108,231,135" alt="">
</map>
<p>
@@ -58,8 +59,6 @@ This graph shows which files directly or indirectly include this file:<p><center
<a class="el" href="namespaceirc.html#string">std::string</a>, <a class="el" href="classWhoWasUser.html">WhoWasUser</a> *,<br>
nspace::hash&lt; <a class="el" href="namespaceirc.html#string">string</a> &gt;, <a class="el" href="structirc_1_1StrHashComp.html">irc::StrHashComp</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::deque&lt; <a class="el" href="classcommand__t.html">command_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a></td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="namespaceirc.html#string">std::string</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#servernamelist">servernamelist</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="classExtMode.html">ExtMode</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="typedefs_8h.html#ExtModeList">ExtModeList</a></td></tr>
@@ -120,31 +119,6 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00022">22</a> of
Definition at line <a class="el" href="typedefs_8h-source.html#l00021">21</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
-<a class="anchor" name="command_5Ftable"></a><!-- doxytag: member="typedefs.h::command_table" ref="command_5Ftable" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef std::deque&lt;<a class="el" href="classcommand__t.html">command_t</a>&gt; <a class="el" href="typedefs_8h.html#command_5Ftable">command_table</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-
-<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00024">24</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
- </tr>
-</table>
<a class="anchor" name="ExtModeList"></a><!-- doxytag: member="typedefs.h::ExtModeList" ref="ExtModeList" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -167,7 +141,7 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00024">24</a> of
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00026">26</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00025">25</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="ExtModeListIter"></a><!-- doxytag: member="typedefs.h::ExtModeListIter" ref="ExtModeListIter" args="" --><p>
@@ -192,7 +166,7 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00026">26</a> of
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00027">27</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00026">26</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="file_5Fcache"></a><!-- doxytag: member="typedefs.h::file_cache" ref="file_5Fcache" args="" --><p>
@@ -217,7 +191,7 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00027">27</a> of
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00028">28</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00027">27</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="servernamelist"></a><!-- doxytag: member="typedefs.h::servernamelist" ref="servernamelist" args="" --><p>
@@ -242,7 +216,7 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00028">28</a> of
<p>
<p>
-Definition at line <a class="el" href="typedefs_8h-source.html#l00025">25</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
+Definition at line <a class="el" href="typedefs_8h-source.html#l00024">24</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
<a class="anchor" name="user_5Fhash"></a><!-- doxytag: member="typedefs.h::user_hash" ref="user_5Fhash" args="" --><p>
@@ -295,7 +269,7 @@ Definition at line <a class="el" href="typedefs_8h-source.html#l00020">20</a> of
Definition at line <a class="el" href="typedefs_8h-source.html#l00023">23</a> of file <a class="el" href="typedefs_8h-source.html">typedefs.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/typedefs_8h__dep__incl.map b/docs/module-doc/typedefs_8h__dep__incl.map
index d7538d0b6..122b85584 100644
--- a/docs/module-doc/typedefs_8h__dep__incl.map
+++ b/docs/module-doc/typedefs_8h__dep__incl.map
@@ -1,3 +1,4 @@
base referer
-rect $channels_8cpp-source.html 141,7 240,34
-rect $modules_8cpp-source.html 141,58 240,84
+rect $channels_8cpp-source.html 141,7 240,33
+rect $modules_8cpp-source.html 141,57 240,84
+rect $users_8cpp-source.html 151,108 231,135
diff --git a/docs/module-doc/typedefs_8h__dep__incl.md5 b/docs/module-doc/typedefs_8h__dep__incl.md5
index 11e0ba285..9905c76fe 100644
--- a/docs/module-doc/typedefs_8h__dep__incl.md5
+++ b/docs/module-doc/typedefs_8h__dep__incl.md5
@@ -1 +1 @@
-142082842cc532e4d4e382b14a7b2d29 \ No newline at end of file
+9650d15ddf009f9c420b6ac64e094f58 \ No newline at end of file
diff --git a/docs/module-doc/typedefs_8h__incl.map b/docs/module-doc/typedefs_8h__incl.map
index b131a2682..214c3651f 100644
--- a/docs/module-doc/typedefs_8h__incl.map
+++ b/docs/module-doc/typedefs_8h__incl.map
@@ -1,8 +1,8 @@
base referer
-rect $users_8h-source.html 568,463 632,489
-rect $channels_8h-source.html 684,361 769,388
-rect $hashcomp_8h-source.html 141,108 235,135
-rect $ctables_8h-source.html 300,209 375,236
-rect $inspircd_8h-source.html 439,235 519,261
-rect $modules_8h-source.html 147,311 229,337
-rect $globals_8h-source.html 441,412 516,439
+rect $users_8h-source.html 280,245 344,272
+rect $channels_8h-source.html 404,448 489,475
+rect $hashcomp_8h-source.html 400,93 493,120
+rect $ctables_8h-source.html 275,600 349,627
+rect $inspircd_8h-source.html 143,335 223,361
+rect $modules_8h-source.html 141,600 224,627
+rect $globals_8h-source.html 145,423 220,449
diff --git a/docs/module-doc/typedefs_8h__incl.md5 b/docs/module-doc/typedefs_8h__incl.md5
index c9e951c43..8797dc7d4 100644
--- a/docs/module-doc/typedefs_8h__incl.md5
+++ b/docs/module-doc/typedefs_8h__incl.md5
@@ -1 +1 @@
-137043db2e87cae486cf9cf5c587f147 \ No newline at end of file
+74b3db4e6e9c4732328fa3d4f91f37f3 \ No newline at end of file
diff --git a/docs/module-doc/userprocess_8h-source.html b/docs/module-doc/userprocess_8h-source.html
index 7d8502961..d664aaf5b 100644
--- a/docs/module-doc/userprocess_8h-source.html
+++ b/docs/module-doc/userprocess_8h-source.html
@@ -11,16 +11,17 @@
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __USERPROCESS_H__</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a>();
-<a name="l00007"></a>00007 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#LoadAllModules_28_29">LoadAllModules</a>();
-<a name="l00008"></a>00008 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a>();
-<a name="l00009"></a>00009 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">OpenLog</a>(<span class="keywordtype">char</span>** argv, <span class="keywordtype">int</span> argc);
-<a name="l00010"></a>00010 <span class="keywordtype">bool</span> <a class="code" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">DoBackgroundUserStuff</a>(time_t TIME);
-<a name="l00011"></a>00011 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">ProcessUser</a>(<a class="code" href="classuserrec.html">userrec</a>* cu);
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="inspircd_8h.html">inspircd.h</a>"</span>
+<a name="l00006"></a>00006
+<a name="l00007"></a>00007 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a>();
+<a name="l00008"></a>00008 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">LoadAllModules</a>(<a class="code" href="classInspIRCd.html">InspIRCd</a>* ServerInstance);
+<a name="l00009"></a>00009 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a>();
+<a name="l00010"></a>00010 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#OpenLog_28char_20_2A_2Aargv_2C_20int_20argc_29">OpenLog</a>(<span class="keywordtype">char</span>** argv, <span class="keywordtype">int</span> argc);
+<a name="l00011"></a>00011 <span class="keywordtype">bool</span> <a class="code" href="userprocess_8h.html#DoBackgroundUserStuff_28time_5Ft_20TIME_29">DoBackgroundUserStuff</a>(time_t TIME);
+<a name="l00012"></a>00012 <span class="keywordtype">void</span> <a class="code" href="userprocess_8h.html#ProcessUser_28userrec_20_2Acu_29">ProcessUser</a>(<a class="code" href="classuserrec.html">userrec</a>* cu);
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/userprocess_8h.html b/docs/module-doc/userprocess_8h.html
index 2e6f0e710..e0a3ec873 100644
--- a/docs/module-doc/userprocess_8h.html
+++ b/docs/module-doc/userprocess_8h.html
@@ -8,13 +8,13 @@
<div class="nav">
<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_000004.html">include</a></div>
<h1>userprocess.h File Reference</h1><code>#include &quot;<a class="el" href="users_8h-source.html">users.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="inspircd_8h-source.html">inspircd.h</a>&quot;</code><br>
<p>
Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__incl.gif" border="0" usemap="#userprocess.h_map" alt=""></center>
<map name="userprocess.h_map">
-<area href="users_8h-source.html" shape="rect" coords="163,108,227,135" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="283,108,368,135" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="276,58,375,84" alt="">
+<area href="users_8h-source.html" shape="rect" coords="291,32,355,59" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="162,58,242,84" alt="">
</map>
<p>
@@ -23,7 +23,7 @@ Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#CheckDie_28_29">CheckDie</a> ()</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#LoadAllModules_28_29">LoadAllModules</a> ()</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#LoadAllModules_28InspIRCd_20_2AServerInstance_29">LoadAllModules</a> (<a class="el" href="classInspIRCd.html">InspIRCd</a> *<a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a>)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="userprocess_8h.html#CheckRoot_28_29">CheckRoot</a> ()</td></tr>
@@ -117,7 +117,7 @@ Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__
</td>
</tr>
</table>
-<a class="anchor" name="LoadAllModules_28_29"></a><!-- doxytag: member="userprocess.h::LoadAllModules" ref="LoadAllModules_28_29" args="()" --><p>
+<a class="anchor" name="LoadAllModules_28InspIRCd_20_2AServerInstance_29"></a><!-- doxytag: member="userprocess.h::LoadAllModules" ref="LoadAllModules_28InspIRCd_20_2AServerInstance_29" args="(InspIRCd *ServerInstance)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
@@ -125,7 +125,8 @@ Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__
<tr>
<td class="md" nowrap valign="top">void LoadAllModules </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ServerInstance</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -209,7 +210,7 @@ Include dependency graph for userprocess.h:<p><center><img src="userprocess_8h__
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/userprocess_8h__incl.map b/docs/module-doc/userprocess_8h__incl.map
index 597eed7b6..2c35162eb 100644
--- a/docs/module-doc/userprocess_8h__incl.map
+++ b/docs/module-doc/userprocess_8h__incl.map
@@ -1,4 +1,3 @@
base referer
-rect $users_8h-source.html 163,108 227,135
-rect $channels_8h-source.html 283,108 368,135
-rect $connection_8h-source.html 276,58 375,84
+rect $users_8h-source.html 291,32 355,59
+rect $inspircd_8h-source.html 162,58 242,84
diff --git a/docs/module-doc/userprocess_8h__incl.md5 b/docs/module-doc/userprocess_8h__incl.md5
index 3dc031b2d..d8ff2f5d6 100644
--- a/docs/module-doc/userprocess_8h__incl.md5
+++ b/docs/module-doc/userprocess_8h__incl.md5
@@ -1 +1 @@
-bd342784e8f38bb1e1aa5077552ba0a3 \ No newline at end of file
+1cd979ceea10e39121f05ee648f60ec5 \ No newline at end of file
diff --git a/docs/module-doc/users_8cpp-source.html b/docs/module-doc/users_8cpp-source.html
index 5cc9b05f2..d43be846f 100644
--- a/docs/module-doc/users_8cpp-source.html
+++ b/docs/module-doc/users_8cpp-source.html
@@ -38,279 +38,780 @@
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include "inspstring.h"</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "helperfuncs.h"</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a>* <a class="code" href="channels_8cpp.html#Config">Config</a>;
-<a name="l00034"></a>00034 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classuserrec.html#userrec_28_29">00036</a> <a class="code" href="classuserrec.html#userrec_28_29">userrec::userrec</a>()
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
-<a name="l00039"></a>00039 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
-<a name="l00040"></a>00040 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
-<a name="l00041"></a>00041 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
-<a name="l00042"></a>00042 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
-<a name="l00043"></a>00043 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
-<a name="l00044"></a>00044 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
-<a name="l00045"></a>00045 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
-<a name="l00046"></a>00046 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
-<a name="l00047"></a>00047 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
-<a name="l00048"></a>00048 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
-<a name="l00049"></a>00049 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
-<a name="l00050"></a>00050 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
-<a name="l00051"></a>00051 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
-<a name="l00052"></a>00052 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
-<a name="l00053"></a>00053 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
-<a name="l00054"></a>00054 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
-<a name="l00055"></a>00055 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
-<a name="l00056"></a>00056 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00057"></a>00057 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
-<a name="l00058"></a>00058 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
-<a name="l00059"></a>00059 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a><a class="code" href="classuserrec.html#_7Euserrec_28_29">00062</a> <a class="code" href="classuserrec.html#_7Euserrec_28_29">userrec::~userrec</a>()
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a><a class="code" href="classuserrec.html#CloseSocket_28_29">00066</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">userrec::CloseSocket</a>()
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 shutdown(this-&gt;fd,2);
-<a name="l00069"></a>00069 close(this-&gt;fd);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="classuserrec.html#GetFullHost_28_29">00072</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">userrec::GetFullHost</a>()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
-<a name="l00075"></a>00075 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> result;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a><a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">00079</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">userrec::ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (this-&gt;fd &gt; -1)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> read(this-&gt;fd, buffer, size);
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="typedefs_8h.html">typedefs.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="socketengine_8h.html">socketengine.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "wildcard.h"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span>
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">extern</span> <a class="code" href="classInspIRCd.html">InspIRCd</a>* <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>;
+<a name="l00040"></a>00040 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>;
+<a name="l00041"></a>00041 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>;
+<a name="l00042"></a>00042 <span class="keyword">extern</span> std::vector&lt;Module*&gt; <a class="code" href="channels_8cpp.html#modules">modules</a>;
+<a name="l00043"></a>00043 <span class="keyword">extern</span> std::vector&lt;ircd_module*&gt; <a class="code" href="channels_8cpp.html#factory">factory</a>;
+<a name="l00044"></a>00044 <span class="keyword">extern</span> std::vector&lt;InspSocket*&gt; <a class="code" href="modules_8cpp.html#module_5Fsockets">module_sockets</a>;
+<a name="l00045"></a>00045 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#MODCOUNT">MODCOUNT</a>;
+<a name="l00046"></a>00046 <span class="keyword">extern</span> <a class="code" href="classInspSocket.html">InspSocket</a>* <a class="code" href="socket_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535];
+<a name="l00047"></a>00047 <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00048"></a>00048 <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];
+<a name="l00049"></a>00049 <span class="keyword">extern</span> <a class="code" href="classServerConfig.html">ServerConfig</a> *<a class="code" href="channels_8cpp.html#Config">Config</a>;
+<a name="l00050"></a>00050 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>;
+<a name="l00051"></a>00051 <span class="keyword">extern</span> <a class="code" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a> <a class="code" href="users_8cpp.html#whowas">whowas</a>;
+<a name="l00052"></a><a class="code" href="users_8cpp.html#local_5Fusers">00052</a> std::vector&lt;userrec*&gt; <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>;
+<a name="l00053"></a>00053
+<a name="l00054"></a><a class="code" href="users_8cpp.html#all_5Fopers">00054</a> std::vector&lt;userrec*&gt; <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>;
+<a name="l00055"></a>00055
+<a name="l00056"></a><a class="code" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">00056</a> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">inline</span> <a class="code" href="namespaceirc.html#string">string</a> <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(<span class="keyword">const</span> T &amp;in)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp &lt;&lt; in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a><a class="code" href="classuserrec.html#userrec_28_29">00063</a> <a class="code" href="classuserrec.html#userrec_28_29">userrec::userrec</a>()
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// the PROPER way to do it, AVOID bzero at *ALL* costs</span>
+<a name="l00066"></a>00066 strcpy(<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<span class="stringliteral">""</span>);
+<a name="l00067"></a>00067 strcpy(<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>,<span class="stringliteral">"127.0.0.1"</span>);
+<a name="l00068"></a>00068 <a class="code" href="classuserrec.html#timeout">timeout</a> = 0;
+<a name="l00069"></a>00069 strcpy(<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<span class="stringliteral">""</span>);
+<a name="l00070"></a>00070 strcpy(<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,<span class="stringliteral">""</span>);
+<a name="l00071"></a>00071 strcpy(<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,<span class="stringliteral">""</span>);
+<a name="l00072"></a>00072 strcpy(<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,<span class="stringliteral">""</span>);
+<a name="l00073"></a>00073 strcpy(<a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>,<span class="stringliteral">""</span>);
+<a name="l00074"></a>00074 <a class="code" href="classuserrec.html#server">server</a> = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00075"></a>00075 strcpy(<a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>,<span class="stringliteral">""</span>);
+<a name="l00076"></a>00076 strcpy(<a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>,<span class="stringliteral">""</span>);
+<a name="l00077"></a>00077 <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00078"></a>00078 <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a> = 0;
+<a name="l00079"></a>00079 <a class="code" href="classconnection.html#fd">fd</a> = <a class="code" href="classconnection.html#lastping">lastping</a> = <a class="code" href="classconnection.html#signon">signon</a> = <a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="classconnection.html#nping">nping</a> = <a class="code" href="classconnection.html#registered">registered</a> = 0;
+<a name="l00080"></a>00080 <a class="code" href="classuserrec.html#flood">flood</a> = <a class="code" href="classconnection.html#port">port</a> = <a class="code" href="classconnection.html#bytes_5Fin">bytes_in</a> = <a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> = <a class="code" href="classconnection.html#cmds_5Fin">cmds_in</a> = <a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a> = 0;
+<a name="l00081"></a>00081 <a class="code" href="classconnection.html#haspassed">haspassed</a> = <span class="keyword">false</span>;
+<a name="l00082"></a>00082 <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a> = <span class="keyword">false</span>;
+<a name="l00083"></a>00083 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00084"></a>00084 <a class="code" href="classuserrec.html#sendq">sendq</a> = <span class="stringliteral">""</span>;
+<a name="l00085"></a>00085 <a class="code" href="classuserrec.html#chans">chans</a>.clear();
+<a name="l00086"></a>00086 <a class="code" href="classuserrec.html#invites">invites</a>.clear();
+<a name="l00087"></a>00087 }
<a name="l00088"></a>00088
-<a name="l00089"></a><a class="code" href="classuserrec.html#GetFullRealHost_28_29">00089</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">userrec::GetFullRealHost</a>()
+<a name="l00089"></a><a class="code" href="classuserrec.html#_7Euserrec_28_29">00089</a> <a class="code" href="classuserrec.html#_7Euserrec_28_29">userrec::~userrec</a>()
<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
-<a name="l00092"></a>00092 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> fresult;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a><a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">00096</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">userrec::IsInvited</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (i-&gt;channel) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a><a class="code" href="classuserrec.html#GetInviteList_28_29">00110</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">userrec::GetInviteList</a>()
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> &amp;<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a><a class="code" href="classuserrec.html#CloseSocket_28_29">00093</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">userrec::CloseSocket</a>()
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 shutdown(this-&gt;fd,2);
+<a name="l00096"></a>00096 close(this-&gt;fd);
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a><a class="code" href="classuserrec.html#GetFullHost_28_29">00099</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">userrec::GetFullHost</a>()
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">char</span> result[MAXBUF];
+<a name="l00102"></a>00102 snprintf(result,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>);
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> result;
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a><a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">00106</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">userrec::ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (this-&gt;fd &gt; -1)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> read(this-&gt;fd, buffer, size);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114
-<a name="l00115"></a><a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">00115</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">userrec::InviteTo</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <a class="code" href="classInvited.html">Invited</a> i;
-<a name="l00118"></a>00118 strlcpy(i.<a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>,channel,CHANMAX);
-<a name="l00119"></a>00119 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a><a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">00122</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">userrec::RemoveInvite</a>(<span class="keywordtype">char</span>* channel)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (channel)
+<a name="l00115"></a>00115
+<a name="l00116"></a><a class="code" href="classuserrec.html#GetFullRealHost_28_29">00116</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">userrec::GetFullRealHost</a>()
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keywordtype">char</span> fresult[MAXBUF];
+<a name="l00119"></a>00119 snprintf(fresult,MAXBUF,<span class="stringliteral">"%s!%s@%s"</span>,<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> fresult;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a><a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">00123</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">userrec::IsInvited</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (i-&gt;channel)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (!strcasecmp(i-&gt;channel,channel))
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a><a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">00144</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">userrec::HasPermission</a>(<span class="keywordtype">char</span>* command)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-<a name="l00147"></a>00147 <span class="keywordtype">char</span>* mycmd;
-<a name="l00148"></a>00148 <span class="keywordtype">char</span>* savept;
-<a name="l00149"></a>00149 <span class="keywordtype">char</span>* savept2;
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="comment">// users on u-lined servers can completely bypass</span>
-<a name="l00152"></a>00152 <span class="comment">// all permissions based checks.</span>
-<a name="l00153"></a>00153 <span class="comment">//</span>
-<a name="l00154"></a>00154 <span class="comment">// of course, if this is sent to a remote server and this</span>
-<a name="l00155"></a>00155 <span class="comment">// server is not ulined there, then that other server</span>
-<a name="l00156"></a>00156 <span class="comment">// silently drops the command.</span>
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this-&gt;server))
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">// are they even an oper at all?</span>
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00169"></a>00169 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (myclass)
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
-<a name="l00178"></a>00178 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
-<a name="l00179"></a>00179 <span class="keywordflow">while</span> (mycmd)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command)) || (*mycmd == <span class="charliteral">'*'</span>))
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197
-<a name="l00198"></a><a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">00198</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec::AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a)
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
-<a name="l00202"></a>00202 <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))
-<a name="l00203"></a>00203 b = b + a[i];
-<a name="l00204"></a>00204 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
-<a name="l00205"></a>00205 stream &lt;&lt; b;
-<a name="l00206"></a>00206 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
-<a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
-<a name="l00208"></a>00208 <span class="comment">// count the size of the first line in the buffer.</span>
-<a name="l00209"></a>00209 <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
-<a name="l00212"></a>00212 <span class="keywordflow">break</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
-<a name="l00217"></a>00217 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
-<a name="l00220"></a>00220 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> (i &lt; 600);
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223
-<a name="l00224"></a><a class="code" href="classuserrec.html#BufferIsReady_28_29">00224</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">userrec::BufferIsReady</a>()
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00229"></a>00229 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a><a class="code" href="classuserrec.html#ClearBuffer_28_29">00232</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">userrec::ClearBuffer</a>()
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00237"></a><a class="code" href="classuserrec.html#GetBuffer_28_29">00237</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">userrec::GetBuffer</a>()
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00241"></a>00241 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
-<a name="l00242"></a>00242 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
-<a name="l00243"></a>00243 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 ret = ret + *line;
-<a name="l00246"></a>00246 line++;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
-<a name="l00249"></a>00249 line++;
-<a name="l00250"></a>00250 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> ret;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a><a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">00254</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec::AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (this-&gt;GetWriteError() != <span class="stringliteral">""</span>)
-<a name="l00257"></a>00257 <span class="keywordflow">return</span>;
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
-<a name="l00261"></a>00261 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
-<a name="l00262"></a>00262 <span class="keywordflow">return</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 std::stringstream stream;
-<a name="l00265"></a>00265 stream &lt;&lt; <a class="code" href="classuserrec.html#sendq">sendq</a> &lt;&lt; data;
-<a name="l00266"></a>00266 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="comment">// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)</span>
-<a name="l00270"></a><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">00270</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">userrec::FlushWriteBuf</a>()
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
-<a name="l00275"></a>00275 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (n_sent == -1)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="keywordflow">else</span>
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="comment">// advance the queue</span>
-<a name="l00283"></a>00283 tb += n_sent;
-<a name="l00284"></a>00284 this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
-<a name="l00285"></a>00285 <span class="comment">// update the user's stats counters</span>
-<a name="l00286"></a>00286 this-&gt;<a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
-<a name="l00287"></a>00287 this-&gt;<a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00292"></a><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">00292</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec::SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error)
-<a name="l00293"></a>00293 {
-<a name="l00294"></a>00294 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
-<a name="l00295"></a>00295 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (this-&gt;WriteError == <span class="stringliteral">""</span>)
-<a name="l00297"></a>00297 this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a><a class="code" href="classuserrec.html#GetWriteError_28_29">00300</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">userrec::GetWriteError</a>()
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a>;
-<a name="l00303"></a>00303 }
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00127"></a>00127 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i-&gt;channel;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a><a class="code" href="classuserrec.html#GetInviteList_28_29">00136</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">userrec::GetInviteList</a>()
+<a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> &amp;<a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a><a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">00141</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">userrec::InviteTo</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <a class="code" href="classInvited.html">Invited</a> i;
+<a name="l00144"></a>00144 i.<a class="code" href="classInvited.html#channel">channel</a> = channel;
+<a name="l00145"></a>00145 <a class="code" href="classuserrec.html#invites">invites</a>.push_back(i);
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147
+<a name="l00148"></a><a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">00148</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">userrec::RemoveInvite</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel)
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Removing invites"</span>);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#invites">invites</a>.size())
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (InvitedList::iterator i = <a class="code" href="classuserrec.html#invites">invites</a>.begin(); i != <a class="code" href="classuserrec.html#invites">invites</a>.end(); i++)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <a class="code" href="namespaceirc.html#string">irc::string</a> compare = i-&gt;channel;
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (compare == channel)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <a class="code" href="classuserrec.html#invites">invites</a>.erase(i);
+<a name="l00159"></a>00159 <span class="keywordflow">return</span>;
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164
+<a name="l00165"></a><a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">00165</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">userrec::HasPermission</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;command)
+<a name="l00166"></a>00166 {
+<a name="l00167"></a>00167 <span class="keywordtype">char</span> TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+<a name="l00168"></a>00168 <span class="keywordtype">char</span>* mycmd;
+<a name="l00169"></a>00169 <span class="keywordtype">char</span>* savept;
+<a name="l00170"></a>00170 <span class="keywordtype">char</span>* savept2;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// users on u-lined servers can completely bypass</span>
+<a name="l00173"></a>00173 <span class="comment">// all permissions based checks.</span>
+<a name="l00174"></a>00174 <span class="comment">//</span>
+<a name="l00175"></a>00175 <span class="comment">// of course, if this is sent to a remote server and this</span>
+<a name="l00176"></a>00176 <span class="comment">// server is not ulined there, then that other server</span>
+<a name="l00177"></a>00177 <span class="comment">// silently drops the command.</span>
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="commands_8h.html#is_5Fuline_28const_20char_20_2Aserver_29">is_uline</a>(this-&gt;server))
+<a name="l00179"></a>00179 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// are they even an oper at all?</span>
+<a name="l00182"></a>00182 <span class="keywordflow">if</span> (strchr(this-&gt;modes,<span class="charliteral">'o'</span>))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =0; j &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"type"</span>,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); j++)
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"name"</span>,j,TypeName,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (!strcmp(TypeName,this-&gt;oper))
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"type"</span>,<span class="stringliteral">"classes"</span>,j,Classes,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00190"></a>00190 <span class="keywordtype">char</span>* myclass = strtok_r(Classes,<span class="stringliteral">" "</span>,&amp;savept);
+<a name="l00191"></a>00191 <span class="keywordflow">while</span> (myclass)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k =0; k &lt; Config-&gt;ConfValueEnum(<span class="stringliteral">"class"</span>,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>); k++)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"name"</span>,k,ClassName,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (!strcmp(ClassName,myclass))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 Config-&gt;<a class="code" href="classServerConfig.html#ConfValue_28char_20_2Atag_2C_20char_20_2Avar_2C_20int_20index_2C_20char_20_2Aresult_2C_20std_3A_3Astringstream_20_2Aconfig_29">ConfValue</a>(<span class="stringliteral">"class"</span>,<span class="stringliteral">"commands"</span>,k,CommandList,&amp;Config-&gt;<a class="code" href="classServerConfig.html#config_5Ff">config_f</a>);
+<a name="l00199"></a>00199 mycmd = strtok_r(CommandList,<span class="stringliteral">" "</span>,&amp;savept2);
+<a name="l00200"></a>00200 <span class="keywordflow">while</span> (mycmd)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == <span class="charliteral">'*'</span>))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 mycmd = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept2);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 myclass = strtok_r(NULL,<span class="stringliteral">" "</span>,&amp;savept);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218
+<a name="l00219"></a><a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">00219</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">userrec::AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <a class="code" href="namespaceirc.html#string">std::string</a> b = <span class="stringliteral">""</span>;
+<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; a.length(); i++)
+<a name="l00223"></a>00223 <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))
+<a name="l00224"></a>00224 b = b + a[i];
+<a name="l00225"></a>00225 std::stringstream stream(<a class="code" href="classuserrec.html#recvq">recvq</a>);
+<a name="l00226"></a>00226 stream &lt;&lt; b;
+<a name="l00227"></a>00227 <a class="code" href="classuserrec.html#recvq">recvq</a> = stream.str();
+<a name="l00228"></a>00228 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0;
+<a name="l00229"></a>00229 <span class="comment">// count the size of the first line in the buffer.</span>
+<a name="l00230"></a>00230 <span class="keywordflow">while</span> (i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length())
+<a name="l00231"></a>00231 {
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i++] == <span class="charliteral">'\n'</span>)
+<a name="l00233"></a>00233 <span class="keywordflow">break</span>;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>)
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"RecvQ exceeded"</span>);
+<a name="l00238"></a>00238 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s RecvQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#recvq">recvq</a>.length(),this-&gt;<a class="code" href="classuserrec.html#recvqmax">recvqmax</a>);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 <span class="comment">// return false if we've had more than 600 characters WITHOUT</span>
+<a name="l00241"></a>00241 <span class="comment">// a carriage return (this is BAD, drop the socket)</span>
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> (i &lt; 600);
+<a name="l00243"></a>00243 }
+<a name="l00244"></a>00244
+<a name="l00245"></a><a class="code" href="classuserrec.html#BufferIsReady_28_29">00245</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">userrec::BufferIsReady</a>()
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classuserrec.html#recvq">recvq</a>.length(); i++)
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a>[i] == <span class="charliteral">'\n'</span>)
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a><a class="code" href="classuserrec.html#ClearBuffer_28_29">00253</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">userrec::ClearBuffer</a>()
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <a class="code" href="classuserrec.html#recvq">recvq</a> = <span class="stringliteral">""</span>;
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a><a class="code" href="classuserrec.html#GetBuffer_28_29">00258</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">userrec::GetBuffer</a>()
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#recvq">recvq</a> == <span class="stringliteral">""</span>)
+<a name="l00261"></a>00261 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+<a name="l00262"></a>00262 <span class="keywordtype">char</span>* line = (<span class="keywordtype">char</span>*)<a class="code" href="classuserrec.html#recvq">recvq</a>.c_str();
+<a name="l00263"></a>00263 <a class="code" href="namespaceirc.html#string">std::string</a> ret = <span class="stringliteral">""</span>;
+<a name="l00264"></a>00264 <span class="keywordflow">while</span> ((*line != <span class="charliteral">'\n'</span>) &amp;&amp; (strlen(line)))
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 ret = ret + *line;
+<a name="l00267"></a>00267 line++;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> ((*line == <span class="charliteral">'\n'</span>) || (*line == <span class="charliteral">'\r'</span>))
+<a name="l00270"></a>00270 line++;
+<a name="l00271"></a>00271 <a class="code" href="classuserrec.html#recvq">recvq</a> = line;
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> ret;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a><a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">00275</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">userrec::AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (this-&gt;GetWriteError() != <span class="stringliteral">""</span>)
+<a name="l00278"></a>00278 <span class="keywordflow">return</span>;
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length() &gt; (unsigned)this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="comment">/* Fix by brain - Set the error text BEFORE calling writeopers, because</span>
+<a name="l00282"></a>00282 <span class="comment"> * if we dont it'll recursively call here over and over again trying</span>
+<a name="l00283"></a>00283 <span class="comment"> * to repeatedly add the text to the sendq!</span>
+<a name="l00284"></a>00284 <span class="comment"> */</span>
+<a name="l00285"></a>00285 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<span class="stringliteral">"SendQ exceeded"</span>);
+<a name="l00286"></a>00286 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** User %s SendQ of %d exceeds connect class maximum of %d"</span>,this-&gt;nick,<a class="code" href="classuserrec.html#sendq">sendq</a>.length() + data.length(),this-&gt;<a class="code" href="classuserrec.html#sendqmax">sendqmax</a>);
+<a name="l00287"></a>00287 <span class="keywordflow">return</span>;
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 std::stringstream stream;
+<a name="l00290"></a>00290 stream &lt;&lt; <a class="code" href="classuserrec.html#sendq">sendq</a> &lt;&lt; data;
+<a name="l00291"></a>00291 <a class="code" href="classuserrec.html#sendq">sendq</a> = stream.str();
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="comment">// send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it)</span>
+<a name="l00295"></a><a class="code" href="classuserrec.html#FlushWriteBuf_28_29">00295</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">userrec::FlushWriteBuf</a>()
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (<a class="code" href="classuserrec.html#sendq">sendq</a>.length())
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordtype">char</span>* tb = (<span class="keywordtype">char</span>*)this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a>.c_str();
+<a name="l00300"></a>00300 <span class="keywordtype">int</span> n_sent = write(this-&gt;fd,tb,this-&gt;sendq.length());
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (n_sent == -1)
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 this-&gt;<a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(strerror(errno));
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 <span class="keywordflow">else</span>
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="comment">// advance the queue</span>
+<a name="l00308"></a>00308 tb += n_sent;
+<a name="l00309"></a>00309 this-&gt;<a class="code" href="classuserrec.html#sendq">sendq</a> = tb;
+<a name="l00310"></a>00310 <span class="comment">// update the user's stats counters</span>
+<a name="l00311"></a>00311 this-&gt;<a class="code" href="classconnection.html#bytes_5Fout">bytes_out</a> += n_sent;
+<a name="l00312"></a>00312 this-&gt;<a class="code" href="classconnection.html#cmds_5Fout">cmds_out</a>++;
+<a name="l00313"></a>00313 }
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 }
+<a name="l00316"></a>00316
+<a name="l00317"></a><a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">00317</a> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">userrec::SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error)
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Setting error string for %s to '%s'"</span>,this-&gt;nick,error.c_str());
+<a name="l00320"></a>00320 <span class="comment">// don't try to set the error twice, its already set take the first string.</span>
+<a name="l00321"></a>00321 <span class="keywordflow">if</span> (this-&gt;WriteError == <span class="stringliteral">""</span>)
+<a name="l00322"></a>00322 this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a> = error;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324
+<a name="l00325"></a><a class="code" href="classuserrec.html#GetWriteError_28_29">00325</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">userrec::GetWriteError</a>()
+<a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 <span class="keywordflow">return</span> this-&gt;<a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329
+<a name="l00330"></a><a class="code" href="users_8h.html#AddOper_28userrec_20_2Auser_29">00330</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00336"></a><a class="code" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">00336</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector&lt;userrec*&gt;::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a &lt; <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348
+<a name="l00349"></a><a class="code" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">00349</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r)
+<a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (Config-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 Config-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user-&gt;fd &gt; -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 fd_ref_table[user-&gt;fd] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a><a class="code" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">00412</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r)
+<a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (Config-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 Config-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user-&gt;fd &gt; -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 fd_ref_table[user-&gt;fd] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+<a name="l00468"></a>00468
+<a name="l00469"></a>00469
+<a name="l00470"></a>00470 <span class="comment">/* adds or updates an entry in the whowas list */</span>
+<a name="l00471"></a><a class="code" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">00471</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u)
+<a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-&gt;<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-&gt;<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-&gt;<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-&gt;<a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-&gt;<a class="code" href="classWhoWasUser.html#signon">signon</a> = u-&gt;<a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() &gt;= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i-&gt;second-&gt;signon)&lt;(<a class="code" href="channels_8cpp.html#TIME">TIME</a>-(<a class="code" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i-&gt;second) <span class="keyword">delete</span> i-&gt;second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i-&gt;second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter-&gt;second) <span class="keyword">delete</span> iter-&gt;second;
+<a name="l00519"></a>00519 iter-&gt;second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522
+<a name="l00523"></a>00523 <span class="comment">/* add a client connection to the sockets list */</span>
+<a name="l00524"></a><a class="code" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">00524</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a>(<span class="keywordtype">int</span> socket, <span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> iscached, <span class="keywordtype">char</span>* ip)
+<a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter-&gt;second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;fd = socket;
+<a name="l00561"></a>00561 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;host, host,160);
+<a name="l00563"></a>00563 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + Config-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;port = port;
+<a name="l00570"></a>00570 strlcpy(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = Config-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != Config-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;host,i-&gt;host) &amp;&amp; (i-&gt;type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i-&gt;registration_timeout;
+<a name="l00584"></a>00584 class_flood = i-&gt;flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax = i-&gt;pingtime;
+<a name="l00586"></a>00586 class_threshold = i-&gt;threshold;
+<a name="l00587"></a>00587 class_sqmax = i-&gt;sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i-&gt;recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax + Config-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt; Config-&gt;<a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt;= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket &gt; 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 fd_ref_table[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]);
+<a name="l00644"></a>00644 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+<a name="l00646"></a>00646
+<a name="l00647"></a><a class="code" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">00647</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user)
+<a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-&gt;<a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) &amp;&amp; (!user-&gt;<a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%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>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,Config-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,Config-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v &lt;&lt; <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> &lt;&lt; MAXCHANS;
+<a name="l00696"></a>00696 v &lt;&lt; <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> &lt;&lt; NICKMAX;
+<a name="l00697"></a>00697 v &lt;&lt; <span class="stringliteral">" TOPICLEN="</span> &lt;&lt; MAXTOPIC &lt;&lt; <span class="stringliteral">" KICKLEN="</span> &lt;&lt; MAXKICK &lt;&lt; <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> &lt;&lt; MAXAWAY &lt;&lt; <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v &lt;&lt; Config-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out &gt;&gt; token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter &gt;= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-&gt;<a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#port">port</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,user-&gt;<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+<a name="l00728"></a>00728
+<a name="l00729"></a>00729
+<a name="l00730"></a>00730 <span class="comment">/* shows the message of the day, and any other on-logon stuff */</span>
+<a name="l00731"></a><a class="code" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">00731</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user)
+<a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-&gt;<a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) &amp;&amp; (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> &gt;= 3) &amp;&amp; (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+<a name="l00739"></a>00739
+<a name="l00740"></a>00740 <span class="comment">/* re-allocates a nick in the user_hash after they change nicknames,</span>
+<a name="l00741"></a>00741 <span class="comment"> * returns a pointer to the new user as it may have moved */</span>
+<a name="l00742"></a>00742
+<a name="l00743"></a><a class="code" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">00743</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New)
+<a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick-&gt;second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick-&gt;second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+<a name="l00768"></a>00768
+<a name="l00769"></a><a class="code" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">00769</a> <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick)
+<a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 ServerInstance-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+<a name="l00804"></a>00804
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/users_8cpp.html b/docs/module-doc/users_8cpp.html
index 46ef13e2c..15bd4cd46 100644
--- a/docs/module-doc/users_8cpp.html
+++ b/docs/module-doc/users_8cpp.html
@@ -16,27 +16,1042 @@
<code>#include &quot;inspstring.h&quot;</code><br>
<code>#include &quot;<a class="el" href="commands_8h-source.html">commands.h</a>&quot;</code><br>
<code>#include &quot;helperfuncs.h&quot;</code><br>
+<code>#include &quot;<a class="el" href="typedefs_8h-source.html">typedefs.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="socketengine_8h-source.html">socketengine.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="message_8h-source.html">message.h</a>&quot;</code><br>
+<code>#include &quot;wildcard.h&quot;</code><br>
+<code>#include &quot;<a class="el" href="xline_8h-source.html">xline.h</a>&quot;</code><br>
<p>
Include dependency graph for users.cpp:<p><center><img src="users_8cpp__incl.gif" border="0" usemap="#users.cpp_map" alt=""></center>
<map name="users.cpp_map">
-<area href="channels_8h-source.html" shape="rect" coords="408,159,493,185" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="401,108,500,135" alt="">
-<area href="users_8h-source.html" shape="rect" coords="288,209,352,236" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="147,260,227,287" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="137,159,236,185" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="600,640,685,667" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="593,260,692,287" alt="">
+<area href="users_8h-source.html" shape="rect" coords="457,564,521,591" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="596,438,689,464" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="296,210,376,236" alt="">
+<area href="socketengine_8h-source.html" shape="rect" coords="433,159,545,186" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="287,716,385,743" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="144,412,229,439" alt="">
+<area href="message_8h-source.html" shape="rect" coords="293,666,379,692" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="305,767,367,794" alt="">
</map>
<p>
<a href="users_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T&gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">string</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a> (const T &amp;in)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a> (int socket, char *host, int port, bool iscached, char *ip)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
+
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#Config">Config</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="classModule.html">Module</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#modules">modules</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#factory">factory</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="classInspSocket.html">InspSocket</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classInspSocket.html">InspSocket</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a> [65535]</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#TIME">TIME</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a> [65536]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classServerConfig.html">ServerConfig</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#Config">Config</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#clientlist">clientlist</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#whowas">whowas</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="classuserrec.html">userrec</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#local_5Fusers">local_users</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="classuserrec.html">userrec</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8cpp.html#all_5Fopers">all_opers</a></td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29"></a><!-- doxytag: member="users.cpp::AddClient" ref="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29" args="(int socket, char *host, int port, bool iscached, char *ip)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddClient </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>socket</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>host</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>iscached</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ip</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00524">524</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8h-source.html#l00036">CC_ALLOW</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00243">ServerConfig::Classes</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00056">ConvToStr()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00177">ServerConfig::dns_timeout</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd__io_8h-source.html#l00194">ServerConfig::SoftLimit</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, and <a class="el" href="socketengine_8h-source.html#l00043">X_ESTAB_CLIENT</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter-&gt;second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;fd = socket;
+<a name="l00561"></a>00561 strlcpy(clientlist[tempnick]-&gt;nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(clientlist[tempnick]-&gt;host, host,160);
+<a name="l00563"></a>00563 strlcpy(clientlist[tempnick]-&gt;dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(clientlist[tempnick]-&gt;ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;port = port;
+<a name="l00570"></a>00570 strlcpy(clientlist[tempnick]-&gt;ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(clientlist[tempnick]-&gt;host,i-&gt;host) &amp;&amp; (i-&gt;type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i-&gt;registration_timeout;
+<a name="l00584"></a>00584 class_flood = i-&gt;flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax = i-&gt;pingtime;
+<a name="l00586"></a>00586 class_threshold = i-&gt;threshold;
+<a name="l00587"></a>00587 class_sqmax = i-&gt;sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i-&gt;recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax + <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt; <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt;= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket &gt; 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(clientlist[tempnick]);
+<a name="l00644"></a>00644 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddOper </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00330">330</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="users.cpp::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddWhoWas </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00471">471</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00341">WhoWasUser::dhost</a>, <a class="el" href="users_8h-source.html#l00138">userrec::dhost</a>, <a class="el" href="users_8h-source.html#l00343">WhoWasUser::fullname</a>, <a class="el" href="users_8h-source.html#l00142">userrec::fullname</a>, <a class="el" href="users_8h-source.html#l00342">WhoWasUser::host</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00340">WhoWasUser::ident</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00339">WhoWasUser::nick</a>, <a class="el" href="users_8h-source.html#l00344">WhoWasUser::server</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00345">WhoWasUser::signon</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8cpp.html#whowas">whowas</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>, and <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-&gt;<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-&gt;<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-&gt;<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-&gt;<a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-&gt;<a class="code" href="classWhoWasUser.html#signon">signon</a> = u-&gt;<a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() &gt;= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i-&gt;second-&gt;signon)&lt;(TIME-(WHOWAS_STALE*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i-&gt;second) <span class="keyword">delete</span> i-&gt;second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i-&gt;second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter-&gt;second) <span class="keyword">delete</span> iter-&gt;second;
+<a name="l00519"></a>00519 iter-&gt;second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void ConnectUser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00731">731</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00185">userrec::dns_done</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>.<div class="fragment"><pre class="fragment"><a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-&gt;<a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) &amp;&amp; (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> &gt;= 3) &amp;&amp; (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConvToStr_28const_20T_20_26in_29"></a><!-- doxytag: member="users.cpp::ConvToStr" ref="ConvToStr_28const_20T_20_26in_29" args="(const T &amp;in)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="mdPrefix" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">string</a> ConvToStr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const T &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>in</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00056">56</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>.<div class="fragment"><pre class="fragment"><a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp &lt;&lt; in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void DeleteOper </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00336">336</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector&lt;userrec*&gt;::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a &lt; <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="users.cpp::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void force_nickchange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>newnick</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00769">769</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline()</a>, <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, and <a class="el" href="inspircd_8h-source.html#l00080">serverstats::statsCollisions</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00385">Server::ChangeUserNick()</a>.<div class="fragment"><pre class="fragment"><a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.cpp::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void FullConnectUser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00647">647</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline()</a>, <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline()</a>, <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, <a class="el" href="inspircd_8h-source.html#l00084">serverstats::statsConnects</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-&gt;<a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) &amp;&amp; (!user-&gt;<a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%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>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v &lt;&lt; <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> &lt;&lt; MAXCHANS;
+<a name="l00696"></a>00696 v &lt;&lt; <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> &lt;&lt; NICKMAX;
+<a name="l00697"></a>00697 v &lt;&lt; <span class="stringliteral">" TOPICLEN="</span> &lt;&lt; MAXTOPIC &lt;&lt; <span class="stringliteral">" KICKLEN="</span> &lt;&lt; MAXKICK &lt;&lt; <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> &lt;&lt; MAXAWAY &lt;&lt; <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v &lt;&lt; <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out &gt;&gt; token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter &gt;= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-&gt;<a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#port">port</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,user-&gt;<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.cpp::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00349">349</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00390">Server::QuitUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.cpp::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link_silent </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00412">412</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="users.cpp::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>Old</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>New</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00743">743</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick-&gt;second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick-&gt;second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+</pre></div>
+<p>
+ </td>
+ </tr>
</table>
<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="all_5Fopers"></a><!-- doxytag: member="users.cpp::all_opers" ref="all_5Fopers" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classuserrec.html">userrec</a>*&gt; <a class="el" href="users_8cpp.html#all_5Fopers">all_opers</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00054">54</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00330">AddOper()</a>, and <a class="el" href="users_8cpp-source.html#l00336">DeleteOper()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="clientlist"></a><!-- doxytag: member="users.cpp::clientlist" ref="clientlist" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#user_5Fhash">user_hash</a> <a class="el" href="users_8cpp.html#clientlist">clientlist</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
<a class="anchor" name="Config"></a><!-- doxytag: member="users.cpp::Config" ref="Config" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -60,6 +1075,196 @@ Include dependency graph for users.cpp:<p><center><img src="users_8cpp__incl.gif
</td>
</tr>
</table>
+<a class="anchor" name="factory"></a><!-- doxytag: member="users.cpp::factory" ref="factory" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="modules_8h.html#ircd_5Fmodule">ircd_module</a>*&gt; factory </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="fd_5Fref_5Ftable_5B_36_35_35_33_36_5D"></a><!-- doxytag: member="users.cpp::fd_ref_table" ref="fd_5Fref_5Ftable_5B_36_35_35_33_36_5D" args="[65536]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* <a class="el" href="users_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[65536] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="local_5Fusers"></a><!-- doxytag: member="users.cpp::local_users" ref="local_5Fusers" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classuserrec.html">userrec</a>*&gt; <a class="el" href="users_8cpp.html#local_5Fusers">local_users</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00052">52</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, and <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="MODCOUNT"></a><!-- doxytag: member="users.cpp::MODCOUNT" ref="MODCOUNT" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#MODCOUNT">MODCOUNT</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="module_5Fsockets"></a><!-- doxytag: member="users.cpp::module_sockets" ref="module_5Fsockets" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classInspSocket.html">InspSocket</a>*&gt; <a class="el" href="users_8cpp.html#module_5Fsockets">module_sockets</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="modules"></a><!-- doxytag: member="users.cpp::modules" ref="modules" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">std::vector&lt;<a class="el" href="classModule.html">Module</a>*&gt; modules </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ServerInstance"></a><!-- doxytag: member="users.cpp::ServerInstance" ref="ServerInstance" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspIRCd.html">InspIRCd</a>* <a class="el" href="users_8cpp.html#ServerInstance">ServerInstance</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="socket_5Fref_5B_36_35_35_33_35_5D"></a><!-- doxytag: member="users.cpp::socket_ref" ref="socket_5Fref_5B_36_35_35_33_35_5D" args="[65535]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classInspSocket.html">InspSocket</a>* <a class="el" href="users_8cpp.html#socket_5Fref_5B_36_35_35_33_35_5D">socket_ref</a>[65535] </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="socket_8cpp-source.html#l00043">43</a> of file <a class="el" href="socket_8cpp-source.html">socket.cpp</a>. </td>
+ </tr>
+</table>
<a class="anchor" name="TIME"></a><!-- doxytag: member="users.cpp::TIME" ref="TIME" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
@@ -83,7 +1288,78 @@ Include dependency graph for users.cpp:<p><center><img src="users_8cpp__incl.gif
</td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by&nbsp;
+<a class="anchor" name="whowas"></a><!-- doxytag: member="users.cpp::whowas" ref="whowas" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="typedefs_8h.html#whowas_5Fhash">whowas_hash</a> <a class="el" href="users_8cpp.html#whowas">whowas</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="WHOWAS_5FMAX"></a><!-- doxytag: member="users.cpp::WHOWAS_MAX" ref="WHOWAS_5FMAX" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="WHOWAS_5FSTALE"></a><!-- doxytag: member="users.cpp::WHOWAS_STALE" ref="WHOWAS_5FSTALE" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int <a class="el" href="users_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/users_8cpp__incl.map b/docs/module-doc/users_8cpp__incl.map
index 622bc529e..10b1319b3 100644
--- a/docs/module-doc/users_8cpp__incl.map
+++ b/docs/module-doc/users_8cpp__incl.map
@@ -1,6 +1,11 @@
base referer
-rect $channels_8h-source.html 408,159 493,185
-rect $connection_8h-source.html 401,108 500,135
-rect $users_8h-source.html 288,209 352,236
-rect $inspircd_8h-source.html 147,260 227,287
-rect $commands_8h-source.html 137,159 236,185
+rect $channels_8h-source.html 600,640 685,667
+rect $connection_8h-source.html 593,260 692,287
+rect $users_8h-source.html 457,564 521,591
+rect $hashcomp_8h-source.html 596,438 689,464
+rect $inspircd_8h-source.html 296,210 376,236
+rect $socketengine_8h-source.html 433,159 545,186
+rect $commands_8h-source.html 287,716 385,743
+rect $typedefs_8h-source.html 144,412 229,439
+rect $message_8h-source.html 293,666 379,692
+rect $xline_8h-source.html 305,767 367,794
diff --git a/docs/module-doc/users_8cpp__incl.md5 b/docs/module-doc/users_8cpp__incl.md5
index 024e4ea0f..b5702ddcc 100644
--- a/docs/module-doc/users_8cpp__incl.md5
+++ b/docs/module-doc/users_8cpp__incl.md5
@@ -1 +1 @@
-92d4da8a60e18559ac0cab66f6d1f6c6 \ No newline at end of file
+6b9b901afd1c7a5528dabf33f5a1687e \ No newline at end of file
diff --git a/docs/module-doc/users_8h-source.html b/docs/module-doc/users_8h-source.html
index 909efa35b..9cf815a35 100644
--- a/docs/module-doc/users_8h-source.html
+++ b/docs/module-doc/users_8h-source.html
@@ -34,165 +34,180 @@
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#ifndef __USERS_H__ </span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __USERS_H__ </span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a><a class="code" href="users_8h.html#STATUS_5FOP">00029</a> <span class="preprocessor">#define STATUS_OP 4</span>
-<a name="l00030"></a><a class="code" href="users_8h.html#STATUS_5FHOP">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_HOP 2</span>
-<a name="l00031"></a><a class="code" href="users_8h.html#STATUS_5FVOICE">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_VOICE 1</span>
-<a name="l00032"></a><a class="code" href="users_8h.html#STATUS_5FNORMAL">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_NORMAL 0</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a><a class="code" href="users_8h.html#CC_5FALLOW">00034</a> <span class="preprocessor">#define CC_ALLOW 0</span>
-<a name="l00035"></a><a class="code" href="users_8h.html#CC_5FDENY">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define CC_DENY 1</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>
-<a name="l00039"></a><a class="code" href="classInvited.html">00039</a> <span class="keyword">class </span><a class="code" href="classInvited.html">Invited</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">public</span>:
-<a name="l00042"></a><a class="code" href="classInvited.html#channel_5BCHANMAX_5D">00042</a> <span class="keywordtype">char</span> <a class="code" href="classInvited.html#channel_5BCHANMAX_5D">channel</a>[CHANMAX];
-<a name="l00043"></a>00043 };
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00048"></a><a class="code" href="classConnectClass.html">00048</a> <span class="keyword">class </span><a class="code" href="classConnectClass.html">ConnectClass</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keyword">public</span>:
-<a name="l00053"></a><a class="code" href="classConnectClass.html#type">00053</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#type">type</a>;
-<a name="l00056"></a><a class="code" href="classConnectClass.html#registration_5Ftimeout">00056</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a>;
-<a name="l00059"></a><a class="code" href="classConnectClass.html#flood">00059</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#flood">flood</a>;
-<a name="l00062"></a><a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">00062</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>[MAXBUF];
-<a name="l00065"></a><a class="code" href="classConnectClass.html#pingtime">00065</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#pingtime">pingtime</a>;
-<a name="l00068"></a><a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">00068</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>[MAXBUF];
-<a name="l00069"></a>00069
-<a name="l00072"></a><a class="code" href="classConnectClass.html#threshold">00072</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#threshold">threshold</a>;
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="hashcomp_8h.html">hashcomp.h</a>"</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a><a class="code" href="users_8h.html#STATUS_5FOP">00031</a> <span class="preprocessor">#define STATUS_OP 4</span>
+<a name="l00032"></a><a class="code" href="users_8h.html#STATUS_5FHOP">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_HOP 2</span>
+<a name="l00033"></a><a class="code" href="users_8h.html#STATUS_5FVOICE">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_VOICE 1</span>
+<a name="l00034"></a><a class="code" href="users_8h.html#STATUS_5FNORMAL">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define STATUS_NORMAL 0</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a><a class="code" href="users_8h.html#CC_5FALLOW">00036</a> <span class="preprocessor">#define CC_ALLOW 0</span>
+<a name="l00037"></a><a class="code" href="users_8h.html#CC_5FDENY">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define CC_DENY 1</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">inline</span> <a class="code" href="namespaceirc.html#string">string</a> <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(<span class="keyword">const</span> T &amp;in);
+<a name="l00040"></a>00040
+<a name="l00043"></a><a class="code" href="classInvited.html">00043</a> <span class="keyword">class </span><a class="code" href="classInvited.html">Invited</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">public</span>:
+<a name="l00046"></a><a class="code" href="classInvited.html#channel">00046</a> <a class="code" href="namespaceirc.html#string">irc::string</a> <a class="code" href="classInvited.html#channel">channel</a>;
+<a name="l00047"></a>00047 };
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049
+<a name="l00052"></a><a class="code" href="classConnectClass.html">00052</a> <span class="keyword">class </span><a class="code" href="classConnectClass.html">ConnectClass</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keyword">public</span>:
+<a name="l00057"></a><a class="code" href="classConnectClass.html#type">00057</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#type">type</a>;
+<a name="l00060"></a><a class="code" href="classConnectClass.html#registration_5Ftimeout">00060</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a>;
+<a name="l00063"></a><a class="code" href="classConnectClass.html#flood">00063</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#flood">flood</a>;
+<a name="l00066"></a><a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">00066</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>[MAXBUF];
+<a name="l00069"></a><a class="code" href="classConnectClass.html#pingtime">00069</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#pingtime">pingtime</a>;
+<a name="l00072"></a><a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">00072</a> <span class="keywordtype">char</span> <a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>[MAXBUF];
<a name="l00073"></a>00073
-<a name="l00076"></a><a class="code" href="classConnectClass.html#sendqmax">00076</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a>;
+<a name="l00076"></a><a class="code" href="classConnectClass.html#threshold">00076</a> <span class="keywordtype">int</span> <a class="code" href="classConnectClass.html#threshold">threshold</a>;
<a name="l00077"></a>00077
-<a name="l00080"></a><a class="code" href="classConnectClass.html#recvqmax">00080</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a>;
-<a name="l00081"></a>00081
-<a name="l00082"></a><a class="code" href="classConnectClass.html#ConnectClass_28_29">00082</a> <a class="code" href="classConnectClass.html#ConnectClass_28_29">ConnectClass</a>()
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
-<a name="l00085"></a>00085 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
-<a name="l00086"></a>00086 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
-<a name="l00087"></a>00087 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
-<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
-<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
-<a name="l00090"></a>00090 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00091"></a>00091 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 };
-<a name="l00094"></a>00094
-<a name="l00097"></a><a class="code" href="users_8h.html#InvitedList">00097</a> <span class="keyword">typedef</span> std::vector&lt;Invited&gt; <a class="code" href="users_8h.html#InvitedList">InvitedList</a>;
+<a name="l00080"></a><a class="code" href="classConnectClass.html#sendqmax">00080</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a>;
+<a name="l00081"></a>00081
+<a name="l00084"></a><a class="code" href="classConnectClass.html#recvqmax">00084</a> <span class="keywordtype">long</span> <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a>;
+<a name="l00085"></a>00085
+<a name="l00086"></a><a class="code" href="classConnectClass.html#ConnectClass_28_29">00086</a> <a class="code" href="classConnectClass.html#ConnectClass_28_29">ConnectClass</a>()
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <a class="code" href="classConnectClass.html#registration_5Ftimeout">registration_timeout</a> = 0;
+<a name="l00089"></a>00089 <a class="code" href="classConnectClass.html#flood">flood</a> = 0;
+<a name="l00090"></a>00090 <a class="code" href="classConnectClass.html#pingtime">pingtime</a> = 0;
+<a name="l00091"></a>00091 <a class="code" href="classConnectClass.html#threshold">threshold</a> = 0;
+<a name="l00092"></a>00092 <a class="code" href="classConnectClass.html#sendqmax">sendqmax</a> = 0;
+<a name="l00093"></a>00093 <a class="code" href="classConnectClass.html#recvqmax">recvqmax</a> = 0;
+<a name="l00094"></a>00094 strlcpy(<a class="code" href="classConnectClass.html#host_5BMAXBUF_5D">host</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00095"></a>00095 strlcpy(<a class="code" href="classConnectClass.html#pass_5BMAXBUF_5D">pass</a>,<span class="stringliteral">""</span>,MAXBUF);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 };
<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100
-<a name="l00103"></a><a class="code" href="users_8h.html#ClassVector">00103</a> <span class="keyword">typedef</span> std::vector&lt;ConnectClass&gt; <a class="code" href="users_8h.html#ClassVector">ClassVector</a>;
+<a name="l00101"></a><a class="code" href="users_8h.html#InvitedList">00101</a> <span class="keyword">typedef</span> std::vector&lt;Invited&gt; <a class="code" href="users_8h.html#InvitedList">InvitedList</a>;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103
<a name="l00104"></a>00104
-<a name="l00111"></a><a class="code" href="classuserrec.html">00111</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 <span class="keyword">private</span>:
-<a name="l00114"></a>00114
-<a name="l00117"></a><a class="code" href="classuserrec.html#invites">00117</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a> <a class="code" href="classuserrec.html#invites">invites</a>;
-<a name="l00118"></a>00118 <span class="keyword">public</span>:
-<a name="l00119"></a>00119
-<a name="l00124"></a><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">00124</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">00129</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>[IDENTMAX+2];
-<a name="l00130"></a>00130
-<a name="l00134"></a><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">00134</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>[160];
-<a name="l00135"></a>00135
-<a name="l00138"></a><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00107"></a><a class="code" href="users_8h.html#ClassVector">00107</a> <span class="keyword">typedef</span> std::vector&lt;ConnectClass&gt; <a class="code" href="users_8h.html#ClassVector">ClassVector</a>;
+<a name="l00108"></a>00108
+<a name="l00115"></a><a class="code" href="classuserrec.html">00115</a> <span class="keyword">class </span><a class="code" href="classuserrec.html">userrec</a> : <span class="keyword">public</span> <a class="code" href="classconnection.html">connection</a>
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">private</span>:
+<a name="l00118"></a>00118
+<a name="l00121"></a><a class="code" href="classuserrec.html#invites">00121</a> <a class="code" href="users_8h.html#InvitedList">InvitedList</a> <a class="code" href="classuserrec.html#invites">invites</a>;
+<a name="l00122"></a>00122 <span class="keyword">public</span>:
+<a name="l00123"></a>00123
+<a name="l00128"></a><a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">00128</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
+<a name="l00129"></a>00129
+<a name="l00133"></a><a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">00133</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>[IDENTMAX+2];
+<a name="l00134"></a>00134
+<a name="l00138"></a><a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">00138</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>[160];
<a name="l00139"></a>00139
-<a name="l00147"></a><a class="code" href="classuserrec.html#modes_5B_35_34_5D">00147</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>[54];
-<a name="l00148"></a>00148
-<a name="l00149"></a><a class="code" href="classuserrec.html#chans">00149</a> std::vector&lt;ucrec&gt; <a class="code" href="classuserrec.html#chans">chans</a>;
-<a name="l00150"></a>00150
-<a name="l00153"></a><a class="code" href="classuserrec.html#server">00153</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#server">server</a>;
+<a name="l00142"></a><a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">00142</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00143"></a>00143
+<a name="l00151"></a><a class="code" href="classuserrec.html#modes_5B_35_34_5D">00151</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#modes_5B_35_34_5D">modes</a>[54];
+<a name="l00152"></a>00152
+<a name="l00153"></a><a class="code" href="classuserrec.html#chans">00153</a> std::vector&lt;ucrec&gt; <a class="code" href="classuserrec.html#chans">chans</a>;
<a name="l00154"></a>00154
-<a name="l00158"></a><a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">00158</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>[MAXAWAY+1];
-<a name="l00159"></a>00159
-<a name="l00164"></a><a class="code" href="classuserrec.html#flood">00164</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#flood">flood</a>;
-<a name="l00165"></a>00165
-<a name="l00170"></a><a class="code" href="classuserrec.html#timeout">00170</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#timeout">timeout</a>;
-<a name="l00171"></a>00171
-<a name="l00177"></a><a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">00177</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>[NICKMAX];
-<a name="l00178"></a>00178
-<a name="l00181"></a><a class="code" href="classuserrec.html#dns_5Fdone">00181</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>;
+<a name="l00157"></a><a class="code" href="classuserrec.html#server">00157</a> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#server">server</a>;
+<a name="l00158"></a>00158
+<a name="l00162"></a><a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">00162</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#awaymsg_5BMAXAWAY_2B_31_5D">awaymsg</a>[MAXAWAY+1];
+<a name="l00163"></a>00163
+<a name="l00168"></a><a class="code" href="classuserrec.html#flood">00168</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#flood">flood</a>;
+<a name="l00169"></a>00169
+<a name="l00174"></a><a class="code" href="classuserrec.html#timeout">00174</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#timeout">timeout</a>;
+<a name="l00175"></a>00175
+<a name="l00181"></a><a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">00181</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#oper_5BNICKMAX_5D">oper</a>[NICKMAX];
<a name="l00182"></a>00182
-<a name="l00185"></a><a class="code" href="classuserrec.html#pingmax">00185</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#pingmax">pingmax</a>;
+<a name="l00185"></a><a class="code" href="classuserrec.html#dns_5Fdone">00185</a> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>;
<a name="l00186"></a>00186
-<a name="l00191"></a><a class="code" href="classuserrec.html#password_5BMAXBUF_5D">00191</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#password_5BMAXBUF_5D">password</a>[MAXBUF];
-<a name="l00192"></a>00192
-<a name="l00197"></a><a class="code" href="classuserrec.html#recvq">00197</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#recvq">recvq</a>;
-<a name="l00198"></a>00198
-<a name="l00202"></a><a class="code" href="classuserrec.html#sendq">00202</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#sendq">sendq</a>;
-<a name="l00203"></a>00203
-<a name="l00206"></a><a class="code" href="classuserrec.html#lines_5Fin">00206</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a>;
-<a name="l00207"></a><a class="code" href="classuserrec.html#reset_5Fdue">00207</a> time_t <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a>;
-<a name="l00208"></a><a class="code" href="classuserrec.html#threshold">00208</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#threshold">threshold</a>;
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">/* Write error string</span>
-<a name="l00211"></a>00211 <span class="comment"> */</span>
-<a name="l00212"></a><a class="code" href="classuserrec.html#WriteError">00212</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#WriteError">WriteError</a>;
+<a name="l00189"></a><a class="code" href="classuserrec.html#pingmax">00189</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#pingmax">pingmax</a>;
+<a name="l00190"></a>00190
+<a name="l00195"></a><a class="code" href="classuserrec.html#password_5BMAXBUF_5D">00195</a> <span class="keywordtype">char</span> <a class="code" href="classuserrec.html#password_5BMAXBUF_5D">password</a>[MAXBUF];
+<a name="l00196"></a>00196
+<a name="l00201"></a><a class="code" href="classuserrec.html#recvq">00201</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#recvq">recvq</a>;
+<a name="l00202"></a>00202
+<a name="l00206"></a><a class="code" href="classuserrec.html#sendq">00206</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#sendq">sendq</a>;
+<a name="l00207"></a>00207
+<a name="l00210"></a><a class="code" href="classuserrec.html#lines_5Fin">00210</a> <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#lines_5Fin">lines_in</a>;
+<a name="l00211"></a><a class="code" href="classuserrec.html#reset_5Fdue">00211</a> time_t <a class="code" href="classuserrec.html#reset_5Fdue">reset_due</a>;
+<a name="l00212"></a><a class="code" href="classuserrec.html#threshold">00212</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#threshold">threshold</a>;
<a name="l00213"></a>00213
-<a name="l00216"></a><a class="code" href="classuserrec.html#sendqmax">00216</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#sendqmax">sendqmax</a>;
+<a name="l00214"></a>00214 <span class="comment">/* Write error string</span>
+<a name="l00215"></a>00215 <span class="comment"> */</span>
+<a name="l00216"></a><a class="code" href="classuserrec.html#WriteError">00216</a> <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#WriteError">WriteError</a>;
<a name="l00217"></a>00217
-<a name="l00220"></a><a class="code" href="classuserrec.html#recvqmax">00220</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#recvqmax">recvqmax</a>;
+<a name="l00220"></a><a class="code" href="classuserrec.html#sendqmax">00220</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#sendqmax">sendqmax</a>;
<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <a class="code" href="classuserrec.html#userrec_28_29">userrec</a>();
-<a name="l00223"></a>00223
-<a name="l00228"></a>00228 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a>();
-<a name="l00229"></a>00229
-<a name="l00235"></a>00235 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a>();
-<a name="l00236"></a>00236
-<a name="l00239"></a>00239 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28char_20_2Achannel_29">IsInvited</a>(<span class="keywordtype">char</span>* channel);
+<a name="l00224"></a><a class="code" href="classuserrec.html#recvqmax">00224</a> <span class="keywordtype">long</span> <a class="code" href="classuserrec.html#recvqmax">recvqmax</a>;
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <a class="code" href="classuserrec.html#userrec_28_29">userrec</a>();
+<a name="l00227"></a>00227
+<a name="l00232"></a>00232 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullHost_28_29">GetFullHost</a>();
+<a name="l00233"></a>00233
+<a name="l00239"></a>00239 <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classuserrec.html#GetFullRealHost_28_29">GetFullRealHost</a>();
<a name="l00240"></a>00240
-<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28char_20_2Achannel_29">InviteTo</a>(<span class="keywordtype">char</span>* channel);
+<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#IsInvited_28irc_3A_3Astring_20_26channel_29">IsInvited</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel);
<a name="l00244"></a>00244
-<a name="l00249"></a>00249 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28char_20_2Achannel_29">RemoveInvite</a>(<span class="keywordtype">char</span>* channel);
-<a name="l00250"></a>00250
-<a name="l00255"></a>00255 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28char_20_2Acommand_29">HasPermission</a>(<span class="keywordtype">char</span>* command);
-<a name="l00256"></a>00256
-<a name="l00259"></a>00259 <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size);
+<a name="l00247"></a>00247 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#InviteTo_28irc_3A_3Astring_20_26channel_29">InviteTo</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel);
+<a name="l00248"></a>00248
+<a name="l00253"></a>00253 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#RemoveInvite_28irc_3A_3Astring_20_26channel_29">RemoveInvite</a>(<a class="code" href="namespaceirc.html#string">irc::string</a> &amp;channel);
+<a name="l00254"></a>00254
+<a name="l00259"></a>00259 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#HasPermission_28std_3A_3Astring_20_26command_29">HasPermission</a>(<a class="code" href="namespaceirc.html#string">std::string</a> &amp;command);
<a name="l00260"></a>00260
-<a name="l00268"></a>00268 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a);
-<a name="l00269"></a>00269
-<a name="l00273"></a>00273 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a>();
-<a name="l00274"></a>00274
-<a name="l00277"></a>00277 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00263"></a>00263 <span class="keywordtype">int</span> <a class="code" href="classuserrec.html#ReadData_28void_20_2Abuffer_2C_20size_5Ft_20size_29">ReadData</a>(<span class="keywordtype">void</span>* buffer, size_t size);
+<a name="l00264"></a>00264
+<a name="l00272"></a>00272 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#AddBuffer_28std_3A_3Astring_20a_29">AddBuffer</a>(<a class="code" href="namespaceirc.html#string">std::string</a> a);
+<a name="l00273"></a>00273
+<a name="l00277"></a>00277 <span class="keywordtype">bool</span> <a class="code" href="classuserrec.html#BufferIsReady_28_29">BufferIsReady</a>();
<a name="l00278"></a>00278
-<a name="l00286"></a>00286 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a>();
-<a name="l00287"></a>00287
-<a name="l00293"></a>00293 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error);
-<a name="l00294"></a>00294
-<a name="l00298"></a>00298 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>();
-<a name="l00299"></a>00299
-<a name="l00305"></a>00305 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
-<a name="l00306"></a>00306
-<a name="l00313"></a>00313 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
-<a name="l00314"></a>00314
-<a name="l00317"></a>00317 <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>();
+<a name="l00281"></a>00281 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#ClearBuffer_28_29">ClearBuffer</a>();
+<a name="l00282"></a>00282
+<a name="l00290"></a>00290 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetBuffer_28_29">GetBuffer</a>();
+<a name="l00291"></a>00291
+<a name="l00297"></a>00297 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#SetWriteError_28std_3A_3Astring_20error_29">SetWriteError</a>(<a class="code" href="namespaceirc.html#string">std::string</a> error);
+<a name="l00298"></a>00298
+<a name="l00302"></a>00302 <a class="code" href="namespaceirc.html#string">std::string</a> <a class="code" href="classuserrec.html#GetWriteError_28_29">GetWriteError</a>();
+<a name="l00303"></a>00303
+<a name="l00309"></a>00309 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#AddWriteBuf_28std_3A_3Astring_20data_29">AddWriteBuf</a>(<a class="code" href="namespaceirc.html#string">std::string</a> data);
+<a name="l00310"></a>00310
+<a name="l00317"></a>00317 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
<a name="l00318"></a>00318
-<a name="l00321"></a>00321 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00321"></a>00321 <a class="code" href="users_8h.html#InvitedList">InvitedList</a>* <a class="code" href="classuserrec.html#GetInviteList_28_29">GetInviteList</a>();
<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>();
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <span class="preprocessor">#ifdef THREADED_DNS</span>
-<a name="l00326"></a>00326 <span class="preprocessor"></span> pthread_t dnsthread;
-<a name="l00327"></a>00327 <span class="preprocessor">#endif</span>
-<a name="l00328"></a>00328 <span class="preprocessor"></span>};
-<a name="l00329"></a>00329
-<a name="l00332"></a><a class="code" href="classWhoWasUser.html">00332</a> <span class="keyword">class </span><a class="code" href="classWhoWasUser.html">WhoWasUser</a>
-<a name="l00333"></a>00333 {
-<a name="l00334"></a>00334 <span class="keyword">public</span>:
-<a name="l00335"></a><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">00335</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
-<a name="l00336"></a><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">00336</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>[IDENTMAX+1];
-<a name="l00337"></a><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">00337</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>[160];
-<a name="l00338"></a><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">00338</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>[160];
-<a name="l00339"></a><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">00339</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
-<a name="l00340"></a><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">00340</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>[256];
-<a name="l00341"></a><a class="code" href="classWhoWasUser.html#signon">00341</a> time_t <a class="code" href="classWhoWasUser.html#signon">signon</a>;
-<a name="l00342"></a>00342 };
-<a name="l00343"></a>00343
-<a name="l00344"></a>00344 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+<a name="l00325"></a>00325 <span class="keywordtype">void</span> <a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html#_7Euserrec_28_29">~userrec</a>();
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="preprocessor">#ifdef THREADED_DNS</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span> pthread_t dnsthread;
+<a name="l00331"></a>00331 <span class="preprocessor">#endif</span>
+<a name="l00332"></a>00332 <span class="preprocessor"></span>};
+<a name="l00333"></a>00333
+<a name="l00336"></a><a class="code" href="classWhoWasUser.html">00336</a> <span class="keyword">class </span><a class="code" href="classWhoWasUser.html">WhoWasUser</a>
+<a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keyword">public</span>:
+<a name="l00339"></a><a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">00339</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>[NICKMAX];
+<a name="l00340"></a><a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">00340</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>[IDENTMAX+1];
+<a name="l00341"></a><a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">00341</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>[160];
+<a name="l00342"></a><a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">00342</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>[160];
+<a name="l00343"></a><a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">00343</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>[MAXGECOS+1];
+<a name="l00344"></a><a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">00344</a> <span class="keywordtype">char</span> <a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>[256];
+<a name="l00345"></a><a class="code" href="classWhoWasUser.html#signon">00345</a> time_t <a class="code" href="classWhoWasUser.html#signon">signon</a>;
+<a name="l00346"></a>00346 };
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddOper_28userrec_20_2Auser_29">AddOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00349"></a>00349 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00350"></a>00350 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
+<a name="l00351"></a>00351 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(<a class="code" href="classuserrec.html">userrec</a> *user,<span class="keyword">const</span> <span class="keywordtype">char</span>* r);
+<a name="l00352"></a>00352 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(<a class="code" href="classuserrec.html">userrec</a>* u);
+<a name="l00353"></a>00353 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a>(<span class="keywordtype">int</span> socket, <span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port, <span class="keywordtype">bool</span> iscached, <span class="keywordtype">char</span>* ip);
+<a name="l00354"></a>00354 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+<a name="l00355"></a>00355 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a>(<a class="code" href="classuserrec.html">userrec</a> *user);
+<a name="l00356"></a>00356 <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="users_8cpp.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a>(<span class="keywordtype">char</span>* Old, <span class="keywordtype">char</span>* New);
+<a name="l00357"></a>00357 <span class="keywordtype">void</span> <a class="code" href="users_8cpp.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keyword">const</span> <span class="keywordtype">char</span>* newnick);
+<a name="l00358"></a>00358
+<a name="l00359"></a>00359 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/users_8h.html b/docs/module-doc/users_8h.html
index 62402d7cb..4dac0e456 100644
--- a/docs/module-doc/users_8h.html
+++ b/docs/module-doc/users_8h.html
@@ -12,29 +12,31 @@
<code>#include &quot;inspstring.h&quot;</code><br>
<code>#include &quot;<a class="el" href="connection_8h-source.html">connection.h</a>&quot;</code><br>
<code>#include &lt;string&gt;</code><br>
+<code>#include &quot;<a class="el" href="hashcomp_8h-source.html">hashcomp.h</a>&quot;</code><br>
<p>
Include dependency graph for users.h:<p><center><img src="users_8h__incl.gif" border="0" usemap="#users.h_map" alt=""></center>
<map name="users.h_map">
<area href="channels_8h-source.html" shape="rect" coords="128,108,213,135" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="121,58,220,84" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="121,159,220,185" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="124,57,217,84" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="users_8h__dep__incl.gif" border="0" usemap="#users.hdep_map" alt=""></center>
<map name="users.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="413,412,512,439" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="413,311,512,337" alt="">
-<area href="users_8cpp-source.html" shape="rect" coords="280,159,360,185" alt="">
-<area href="commands_8h-source.html" shape="rect" coords="125,108,224,135" alt="">
-<area href="globals_8h-source.html" shape="rect" coords="137,361,212,388" alt="">
-<area href="typedefs_8h-source.html" shape="rect" coords="277,361,363,388" alt="">
-<area href="inspircd_8h-source.html" shape="rect" coords="135,209,215,236" alt="">
-<area href="cull__list_8h-source.html" shape="rect" coords="136,412,213,439" alt="">
-<area href="message_8h-source.html" shape="rect" coords="277,564,363,591" alt="">
-<area href="mode_8h-source.html" shape="rect" coords="287,260,353,287" alt="">
-<area href="userprocess_8h-source.html" shape="rect" coords="123,564,227,591" alt="">
-<area href="xline_8h-source.html" shape="rect" coords="289,463,351,489" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="531,235,629,261" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="531,387,629,413" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="540,564,620,591" alt="">
+<area href="commands_8h-source.html" shape="rect" coords="379,615,477,641" alt="">
+<area href="cull__list_8h-source.html" shape="rect" coords="121,311,199,337" alt="">
+<area href="globals_8h-source.html" shape="rect" coords="249,159,324,185" alt="">
+<area href="typedefs_8h-source.html" shape="rect" coords="385,260,471,287" alt="">
+<area href="inspircd_8h-source.html" shape="rect" coords="247,412,327,439" alt="">
+<area href="userprocess_8h-source.html" shape="rect" coords="376,463,480,489" alt="">
+<area href="mode_8h-source.html" shape="rect" coords="127,361,193,388" alt="">
+<area href="message_8h-source.html" shape="rect" coords="385,311,471,337" alt="">
+<area href="xline_8h-source.html" shape="rect" coords="397,513,459,540" alt="">
</map>
<p>
@@ -73,6 +75,30 @@ This graph shows which files directly or indirectly include this file:<p><center
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="classConnectClass.html">ConnectClass</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ClassVector">ClassVector</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Holds a complete list of all allow and deny tags from the configuration file (connection classes). <a href="#ClassVector"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T&gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceirc.html#string">string</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="users_8h.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a> (const T &amp;in)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddOper_28userrec_20_2Auser_29">AddOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#DeleteOper_28userrec_20_2Auser_29">DeleteOper</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a> (<a class="el" href="classuserrec.html">userrec</a> *u)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29">AddClient</a> (int socket, char *host, int port, bool iscached, char *ip)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ConnectUser_28userrec_20_2Auser_29">ConnectUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29">ReHashNick</a> (char *Old, char *New)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="users_8h.html#force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29">force_nickchange</a> (<a class="el" href="classuserrec.html">userrec</a> *user, const char *newnick)</td></tr>
+
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="CC_5FALLOW"></a><!-- doxytag: member="users.h::CC_ALLOW" ref="CC_5FALLOW" args="" --><p>
@@ -97,7 +123,9 @@ This graph shows which files directly or indirectly include this file:<p><center
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00036">36</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="CC_5FDENY"></a><!-- doxytag: member="users.h::CC_DENY" ref="CC_5FDENY" args="" --><p>
@@ -122,7 +150,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00035">35</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00037">37</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FHOP"></a><!-- doxytag: member="users.h::STATUS_HOP" ref="STATUS_5FHOP" args="" --><p>
@@ -147,7 +175,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00035">35</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00030">30</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
+Definition at line <a class="el" href="users_8h-source.html#l00032">32</a> of file <a class="el" href="users_8h-source.html">users.h</a>.
<p>
Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel()</a>. </td>
</tr>
@@ -174,7 +202,7 @@ Referenced by <a class="el" href="channels_8cpp-source.html#l00459">kick_channel
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00032">32</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00034">34</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FOP"></a><!-- doxytag: member="users.h::STATUS_OP" ref="STATUS_5FOP" args="" --><p>
@@ -199,7 +227,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00032">32</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00029">29</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00031">31</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="STATUS_5FVOICE"></a><!-- doxytag: member="users.h::STATUS_VOICE" ref="STATUS_5FVOICE" args="" --><p>
@@ -224,7 +252,7 @@ Definition at line <a class="el" href="users_8h-source.html#l00029">29</a> of fi
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00031">31</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00033">33</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<hr><h2>Typedef Documentation</h2>
@@ -252,7 +280,7 @@ Holds a complete list of all allow and deny tags from the configuration file (co
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00103">103</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00107">107</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
<a class="anchor" name="InvitedList"></a><!-- doxytag: member="users.h::InvitedList" ref="InvitedList" args="" --><p>
@@ -279,10 +307,914 @@ Holds a complete list of all channels to which a user has been invited and has n
<p>
<p>
-Definition at line <a class="el" href="users_8h-source.html#l00097">97</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+Definition at line <a class="el" href="users_8h-source.html#l00101">101</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29"></a><!-- doxytag: member="users.h::AddClient" ref="AddClient_28int_20socket_2C_20char_20_2Ahost_2C_20int_20port_2C_20bool_20iscached_2C_20char_20_2Aip_29" args="(int socket, char *host, int port, bool iscached, char *ip)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddClient </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>socket</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>host</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>port</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>iscached</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ip</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00524">524</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="socketengine_8cpp-source.html#l00065">SocketEngine::AddFd()</a>, <a class="el" href="users_8h-source.html#l00036">CC_ALLOW</a>, <a class="el" href="channels_8h-source.html#l00254">ucrec::channel</a>, <a class="el" href="inspircd__io_8h-source.html#l00243">ServerConfig::Classes</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00056">ConvToStr()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="inspircd__io_8h-source.html#l00177">ServerConfig::dns_timeout</a>, <a class="el" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr()</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline()</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd__io_8h-source.html#l00194">ServerConfig::SoftLimit</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="channels_8h-source.html#l00249">ucrec::uc_modes</a>, and <a class="el" href="socketengine_8h-source.html#l00043">X_ESTAB_CLIENT</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="namespaceirc.html#string">string</a> tempnick;
+<a name="l00527"></a>00527 <span class="keywordtype">char</span> tn2[MAXBUF];
+<a name="l00528"></a>00528 user_hash::iterator iter;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 tempnick = <a class="code" href="users_8cpp.html#ConvToStr_28const_20T_20_26in_29">ConvToStr</a>(socket) + <span class="stringliteral">"-unknown"</span>;
+<a name="l00531"></a>00531 sprintf(tn2,<span class="stringliteral">"%lu-unknown"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(tempnick);
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 <span class="comment">// fix by brain.</span>
+<a name="l00536"></a>00536 <span class="comment">// as these nicknames are 'RFC impossible', we can be sure nobody is going to be</span>
+<a name="l00537"></a>00537 <span class="comment">// using one as a registered connection. As theyre per fd, we can also safely assume</span>
+<a name="l00538"></a>00538 <span class="comment">// that we wont have collisions. Therefore, if the nick exists in the list, its only</span>
+<a name="l00539"></a>00539 <span class="comment">// used by a dead socket, erase the iterator so that the new client may reclaim it.</span>
+<a name="l00540"></a>00540 <span class="comment">// this was probably the cause of 'server ignores me when i hammer it with reconnects'</span>
+<a name="l00541"></a>00541 <span class="comment">// issue in earlier alphas/betas</span>
+<a name="l00542"></a>00542 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00543"></a>00543 {
+<a name="l00544"></a>00544 <a class="code" href="classuserrec.html">userrec</a>* goner = iter-&gt;second;
+<a name="l00545"></a>00545 <span class="keyword">delete</span> goner;
+<a name="l00546"></a>00546 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">/*</span>
+<a name="l00550"></a>00550 <span class="comment"> * It is OK to access the value here this way since we know</span>
+<a name="l00551"></a>00551 <span class="comment"> * it exists, we just created it above.</span>
+<a name="l00552"></a>00552 <span class="comment"> *</span>
+<a name="l00553"></a>00553 <span class="comment"> * At NO other time should you access a value in a map or a</span>
+<a name="l00554"></a>00554 <span class="comment"> * hash_map this way.</span>
+<a name="l00555"></a>00555 <span class="comment"> */</span>
+<a name="l00556"></a>00556 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick] = <span class="keyword">new</span> <a class="code" href="classuserrec.html">userrec</a>();
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"AddClient: %lu %s %d %s"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)socket,host,port,ip);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;fd = socket;
+<a name="l00561"></a>00561 strlcpy(clientlist[tempnick]-&gt;nick, tn2,NICKMAX);
+<a name="l00562"></a>00562 strlcpy(clientlist[tempnick]-&gt;host, host,160);
+<a name="l00563"></a>00563 strlcpy(clientlist[tempnick]-&gt;dhost, host,160);
+<a name="l00564"></a>00564 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;server = (<span class="keywordtype">char</span>*)<a class="code" href="inspircd_8h.html#FindServerNamePtr_28std_3A_3Astring_20servername_29">FindServerNamePtr</a>(<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>);
+<a name="l00565"></a>00565 strlcpy(clientlist[tempnick]-&gt;ident, <span class="stringliteral">"unknown"</span>,IDENTMAX);
+<a name="l00566"></a>00566 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;registered = 0;
+<a name="l00567"></a>00567 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;signon = <a class="code" href="channels_8cpp.html#TIME">TIME</a> + <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00568"></a>00568 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;lastping = 1;
+<a name="l00569"></a>00569 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;port = port;
+<a name="l00570"></a>00570 strlcpy(clientlist[tempnick]-&gt;ip,ip,16);
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="comment">// set the registration timeout for this user</span>
+<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> class_regtimeout = 90;
+<a name="l00574"></a>00574 <span class="keywordtype">int</span> class_flood = 0;
+<a name="l00575"></a>00575 <span class="keywordtype">long</span> class_threshold = 5;
+<a name="l00576"></a>00576 <span class="keywordtype">long</span> class_sqmax = 262144; <span class="comment">// 256kb</span>
+<a name="l00577"></a>00577 <span class="keywordtype">long</span> class_rqmax = 4096; <span class="comment">// 4k</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="keywordflow">for</span> (ClassVector::iterator i = <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.begin(); i != <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Classes">Classes</a>.end(); i++)
+<a name="l00580"></a>00580 {
+<a name="l00581"></a>00581 <span class="keywordflow">if</span> (match(clientlist[tempnick]-&gt;host,i-&gt;host) &amp;&amp; (i-&gt;type == <a class="code" href="users_8h.html#CC_5FALLOW">CC_ALLOW</a>))
+<a name="l00582"></a>00582 {
+<a name="l00583"></a>00583 class_regtimeout = (<span class="keywordtype">unsigned</span> long)i-&gt;registration_timeout;
+<a name="l00584"></a>00584 class_flood = i-&gt;flood;
+<a name="l00585"></a>00585 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax = i-&gt;pingtime;
+<a name="l00586"></a>00586 class_threshold = i-&gt;threshold;
+<a name="l00587"></a>00587 class_sqmax = i-&gt;sendqmax;
+<a name="l00588"></a>00588 class_rqmax = i-&gt;recvqmax;
+<a name="l00589"></a>00589 <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591 }
+<a name="l00592"></a>00592
+<a name="l00593"></a>00593 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;nping = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;pingmax + <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#dns_5Ftimeout">dns_timeout</a>;
+<a name="l00594"></a>00594 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;timeout = <a class="code" href="channels_8cpp.html#TIME">TIME</a>+class_regtimeout;
+<a name="l00595"></a>00595 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;flood = class_flood;
+<a name="l00596"></a>00596 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;threshold = class_threshold;
+<a name="l00597"></a>00597 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;sendqmax = class_sqmax;
+<a name="l00598"></a>00598 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;recvqmax = class_rqmax;
+<a name="l00599"></a>00599
+<a name="l00600"></a>00600 <a class="code" href="classucrec.html">ucrec</a> a;
+<a name="l00601"></a>00601 a.<a class="code" href="classucrec.html#channel">channel</a> = NULL;
+<a name="l00602"></a>00602 a.<a class="code" href="classucrec.html#uc_5Fmodes">uc_modes</a> = 0;
+<a name="l00603"></a>00603 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; MAXCHANS; i++)
+<a name="l00604"></a>00604 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick]-&gt;chans.push_back(a);
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt; <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#SoftLimit">SoftLimit</a>)
+<a name="l00607"></a>00607 {
+<a name="l00608"></a>00608 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.size() &gt;= MAXCLIENTS)
+<a name="l00613"></a>00613 {
+<a name="l00614"></a>00614 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"No more connections allowed"</span>);
+<a name="l00615"></a>00615 <span class="keywordflow">return</span>;
+<a name="l00616"></a>00616 }
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// this is done as a safety check to keep the file descriptors within range of fd_ref_table.</span>
+<a name="l00619"></a>00619 <span class="comment">// its a pretty big but for the moment valid assumption:</span>
+<a name="l00620"></a>00620 <span class="comment">// file descriptors are handed out starting at 0, and are recycled as theyre freed.</span>
+<a name="l00621"></a>00621 <span class="comment">// therefore if there is ever an fd over 65535, 65536 clients must be connected to the</span>
+<a name="l00622"></a>00622 <span class="comment">// irc server at once (or the irc server otherwise initiating this many connections, files etc)</span>
+<a name="l00623"></a>00623 <span class="comment">// which for the time being is a physical impossibility (even the largest networks dont have more</span>
+<a name="l00624"></a>00624 <span class="comment">// than about 10,000 users on ONE server!)</span>
+<a name="l00625"></a>00625 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)socket &gt; 65534)
+<a name="l00626"></a>00626 {
+<a name="l00627"></a>00627 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],<span class="stringliteral">"Server is full"</span>);
+<a name="l00628"></a>00628 <span class="keywordflow">return</span>;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(ip);
+<a name="l00631"></a>00631 <span class="keywordflow">if</span> (!e)
+<a name="l00632"></a>00632 {
+<a name="l00633"></a>00633 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fzline_28const_20char_20_2Aipaddr_29">matches_zline</a>(ip);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (r)
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00637"></a>00637 snprintf(reason,MAXBUF,<span class="stringliteral">"Z-Lined: %s"</span>,r);
+<a name="l00638"></a>00638 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(clientlist[tempnick],reason);
+<a name="l00639"></a>00639 <span class="keywordflow">return</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[socket] = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[tempnick];
+<a name="l00643"></a>00643 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.push_back(clientlist[tempnick]);
+<a name="l00644"></a>00644 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#AddFd_28int_20fd_2C_20bool_20readable_2C_20char_20type_29">AddFd</a>(socket,<span class="keyword">true</span>,<a class="code" href="socketengine_8h.html#X_5FESTAB_5FCLIENT">X_ESTAB_CLIENT</a>);
+<a name="l00645"></a>00645 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::AddOper" ref="AddOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddOper </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00330">330</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper added to optimization list"</span>);
+<a name="l00333"></a>00333 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.push_back(user);
+<a name="l00334"></a>00334 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="AddWhoWas_28userrec_20_2Au_29"></a><!-- doxytag: member="users.h::AddWhoWas" ref="AddWhoWas_28userrec_20_2Au_29" args="(userrec *u)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void AddWhoWas </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>u</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00471">471</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="users_8h-source.html#l00138">userrec::dhost</a>, <a class="el" href="users_8h-source.html#l00341">WhoWasUser::dhost</a>, <a class="el" href="users_8h-source.html#l00142">userrec::fullname</a>, <a class="el" href="users_8h-source.html#l00343">WhoWasUser::fullname</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00342">WhoWasUser::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8h-source.html#l00340">WhoWasUser::ident</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00339">WhoWasUser::nick</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="users_8h-source.html#l00157">userrec::server</a>, <a class="el" href="users_8h-source.html#l00344">WhoWasUser::server</a>, <a class="el" href="connection_8h-source.html#l00088">connection::signon</a>, <a class="el" href="users_8h-source.html#l00345">WhoWasUser::signon</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="users_8cpp.html#whowas">whowas</a>, <a class="el" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>, and <a class="el" href="channels_8cpp.html#WHOWAS_5FSTALE">WHOWAS_STALE</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>.<div class="fragment"><pre class="fragment"><a name="l00472"></a>00472 {
+<a name="l00473"></a>00473 whowas_hash::iterator iter = <a class="code" href="users_8cpp.html#whowas">whowas</a>.find(u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00474"></a>00474 <a class="code" href="classWhoWasUser.html">WhoWasUser</a> *a = <span class="keyword">new</span> <a class="code" href="classWhoWasUser.html">WhoWasUser</a>();
+<a name="l00475"></a>00475 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>,u-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,NICKMAX);
+<a name="l00476"></a>00476 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#ident_5BIDENTMAX_2B_31_5D">ident</a>,u-&gt;<a class="code" href="classuserrec.html#ident_5BIDENTMAX_2B_32_5D">ident</a>,IDENTMAX);
+<a name="l00477"></a>00477 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#dhost_5B_31_36_30_5D">dhost</a>,u-&gt;<a class="code" href="classuserrec.html#dhost_5B_31_36_30_5D">dhost</a>,160);
+<a name="l00478"></a>00478 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#host_5B_31_36_30_5D">host</a>,u-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>,160);
+<a name="l00479"></a>00479 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,u-&gt;<a class="code" href="classuserrec.html#fullname_5BMAXGECOS_2B_31_5D">fullname</a>,MAXGECOS);
+<a name="l00480"></a>00480 strlcpy(a-&gt;<a class="code" href="classWhoWasUser.html#server_5B_32_35_36_5D">server</a>,u-&gt;<a class="code" href="classuserrec.html#server">server</a>,256);
+<a name="l00481"></a>00481 a-&gt;<a class="code" href="classWhoWasUser.html#signon">signon</a> = u-&gt;<a class="code" href="classconnection.html#signon">signon</a>;
+<a name="l00482"></a>00482
+<a name="l00483"></a>00483 <span class="comment">/* MAX_WHOWAS: max number of /WHOWAS items</span>
+<a name="l00484"></a>00484 <span class="comment"> * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and</span>
+<a name="l00485"></a>00485 <span class="comment"> * can be replaced by a newer one</span>
+<a name="l00486"></a>00486 <span class="comment"> */</span>
+<a name="l00487"></a>00487
+<a name="l00488"></a>00488 <span class="keywordflow">if</span> (iter == <a class="code" href="users_8cpp.html#whowas">whowas</a>.end())
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (<a class="code" href="users_8cpp.html#whowas">whowas</a>.size() &gt;= (unsigned)<a class="code" href="channels_8cpp.html#WHOWAS_5FMAX">WHOWAS_MAX</a>)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (whowas_hash::iterator i = <a class="code" href="users_8cpp.html#whowas">whowas</a>.begin(); i != <a class="code" href="users_8cpp.html#whowas">whowas</a>.end(); i++)
+<a name="l00493"></a>00493 {
+<a name="l00494"></a>00494 <span class="comment">// 3600 seconds in an hour ;)</span>
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> ((i-&gt;second-&gt;signon)&lt;(TIME-(WHOWAS_STALE*3600)))
+<a name="l00496"></a>00496 {
+<a name="l00497"></a>00497 <span class="comment">// delete the old one</span>
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (i-&gt;second) <span class="keyword">delete</span> i-&gt;second;
+<a name="l00499"></a>00499 <span class="comment">// replace with new one</span>
+<a name="l00500"></a>00500 i-&gt;second = a;
+<a name="l00501"></a>00501 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added WHOWAS entry, purged an old record"</span>);
+<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 <span class="comment">// no space left and user doesnt exist. Don't leave ram in use!</span>
+<a name="l00506"></a>00506 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"</span>);
+<a name="l00507"></a>00507 <span class="keyword">delete</span> a;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 <span class="keywordflow">else</span>
+<a name="l00510"></a>00510 {
+<a name="l00511"></a>00511 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"added fresh WHOWAS entry"</span>);
+<a name="l00512"></a>00512 <a class="code" href="users_8cpp.html#whowas">whowas</a>[a-&gt;<a class="code" href="classWhoWasUser.html#nick_5BNICKMAX_5D">nick</a>] = a;
+<a name="l00513"></a>00513 }
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515 <span class="keywordflow">else</span>
+<a name="l00516"></a>00516 {
+<a name="l00517"></a>00517 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"updated WHOWAS entry"</span>);
+<a name="l00518"></a>00518 <span class="keywordflow">if</span> (iter-&gt;second) <span class="keyword">delete</span> iter-&gt;second;
+<a name="l00519"></a>00519 iter-&gt;second = a;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::ConnectUser" ref="ConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void ConnectUser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00731">731</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8h-source.html#l00185">userrec::dns_done</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, and <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>.<div class="fragment"><pre class="fragment"><a name="l00732"></a>00732 {
+<a name="l00733"></a>00733 <span class="comment">// dns is already done, things are fast. no need to wait for dns to complete just pass them straight on</span>
+<a name="l00734"></a>00734 <span class="keywordflow">if</span> ((user-&gt;<a class="code" href="classuserrec.html#dns_5Fdone">dns_done</a>) &amp;&amp; (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> &gt;= 3) &amp;&amp; (AllModulesReportReady(user)))
+<a name="l00735"></a>00735 {
+<a name="l00736"></a>00736 <a class="code" href="users_8cpp.html#FullConnectUser_28userrec_20_2Auser_29">FullConnectUser</a>(user);
+<a name="l00737"></a>00737 }
+<a name="l00738"></a>00738 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ConvToStr_28const_20T_20_26in_29"></a><!-- doxytag: member="users.h::ConvToStr" ref="ConvToStr_28const_20T_20_26in_29" args="(const T &amp;in)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="mdPrefix" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="namespaceirc.html#string">string</a> ConvToStr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const T &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>in</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00056">56</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>.<div class="fragment"><pre class="fragment"><a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 stringstream tmp;
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!(tmp &lt;&lt; in)) <span class="keywordflow">return</span> <a class="code" href="namespaceirc.html#string">string</a>();
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> tmp.str();
+<a name="l00061"></a>00061 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="DeleteOper_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::DeleteOper" ref="DeleteOper_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void DeleteOper </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00336">336</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00054">all_opers</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 <span class="keywordflow">for</span> (std::vector&lt;userrec*&gt;::iterator a = <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.begin(); a &lt; <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.end(); a++)
+<a name="l00339"></a>00339 {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (*a == user)
+<a name="l00341"></a>00341 {
+<a name="l00342"></a>00342 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Oper removed from optimization list"</span>);
+<a name="l00343"></a>00343 <a class="code" href="users_8cpp.html#all_5Fopers">all_opers</a>.erase(a);
+<a name="l00344"></a>00344 <span class="keywordflow">return</span>;
+<a name="l00345"></a>00345 }
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29"></a><!-- doxytag: member="users.h::force_nickchange" ref="force_5Fnickchange_28userrec_20_2Auser_2C_20const_20char_20_2Anewnick_29" args="(userrec *user, const char *newnick)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void force_nickchange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>newnick</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00769">769</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00090">FOREACH_RESULT</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline()</a>, <a class="el" href="inspircd_8h-source.html#l00110">InspIRCd::Parser</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, and <a class="el" href="inspircd_8h-source.html#l00080">serverstats::statsCollisions</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00385">Server::ChangeUserNick()</a>.<div class="fragment"><pre class="fragment"><a name="l00770"></a>00770 {
+<a name="l00771"></a>00771 <span class="keywordtype">char</span> nick[MAXBUF];
+<a name="l00772"></a>00772 <span class="keywordtype">int</span> MOD_RESULT = 0;
+<a name="l00773"></a>00773
+<a name="l00774"></a>00774 strcpy(nick,<span class="stringliteral">""</span>);
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <a class="code" href="modules_8h.html#FOREACH_5FRESULT_28x_29">FOREACH_RESULT</a>(OnUserPreNick(user,newnick));
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (MOD_RESULT) {
+<a name="l00778"></a>00778 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00779"></a>00779 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00780"></a>00780 <span class="keywordflow">return</span>;
+<a name="l00781"></a>00781 }
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (<a class="code" href="xline_8h.html#matches_5Fqline_28const_20char_20_2Anick_29">matches_qline</a>(newnick))
+<a name="l00783"></a>00783 {
+<a name="l00784"></a>00784 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsCollisions">statsCollisions</a>++;
+<a name="l00785"></a>00785 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Nickname collision"</span>);
+<a name="l00786"></a>00786 <span class="keywordflow">return</span>;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (user)
+<a name="l00790"></a>00790 {
+<a name="l00791"></a>00791 <span class="keywordflow">if</span> (newnick)
+<a name="l00792"></a>00792 {
+<a name="l00793"></a>00793 strncpy(nick,newnick,MAXBUF);
+<a name="l00794"></a>00794 }
+<a name="l00795"></a>00795 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7)
+<a name="l00796"></a>00796 {
+<a name="l00797"></a>00797 <span class="keywordtype">char</span>* pars[1];
+<a name="l00798"></a>00798 pars[0] = nick;
+<a name="l00799"></a>00799 <a class="code" href="namespaceirc.html#string">std::string</a> cmd = <span class="stringliteral">"NICK"</span>;
+<a name="l00800"></a>00800 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#Parser">Parser</a>-&gt;CallHandler(cmd,pars,1,user);
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 }
+<a name="l00803"></a>00803 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="FullConnectUser_28userrec_20_2Auser_29"></a><!-- doxytag: member="users.h::FullConnectUser" ref="FullConnectUser_28userrec_20_2Auser_29" args="(userrec *user)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void FullConnectUser </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>user</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00647">647</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="connection_8h-source.html#l00070">connection::haspassed</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="connection_8h-source.html#l00092">connection::idle_lastmsg</a>, <a class="el" href="connection_8h-source.html#l00050">connection::ip</a>, <a class="el" href="users_8cpp-source.html#l00349">kill_link()</a>, <a class="el" href="users_8cpp-source.html#l00412">kill_link_silent()</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception()</a>, <a class="el" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline()</a>, <a class="el" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline()</a>, <a class="el" href="inspircd__io_8h-source.html#l00075">ServerConfig::Network</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd__io_8h-source.html#l00069">ServerConfig::ServerName</a>, <a class="el" href="inspircd_8h-source.html#l00112">InspIRCd::stats</a>, <a class="el" href="inspircd_8h-source.html#l00084">serverstats::statsConnects</a>, <a class="el" href="channels_8cpp.html#TIME">TIME</a>, <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>, and <a class="el" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00731">ConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00648"></a>00648 {
+<a name="l00649"></a>00649 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#stats">stats</a>-&gt;<a class="code" href="classserverstats.html#statsConnects">statsConnects</a>++;
+<a name="l00650"></a>00650 user-&gt;<a class="code" href="classconnection.html#idle_5Flastmsg">idle_lastmsg</a> = <a class="code" href="channels_8cpp.html#TIME">TIME</a>;
+<a name="l00651"></a>00651 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ConnectUser: %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keywordflow">if</span> ((strcmp(Passwd(user),<span class="stringliteral">""</span>)) &amp;&amp; (!user-&gt;<a class="code" href="classconnection.html#haspassed">haspassed</a>))
+<a name="l00654"></a>00654 {
+<a name="l00655"></a>00655 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Invalid password"</span>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span>;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 <span class="keywordflow">if</span> (IsDenied(user))
+<a name="l00659"></a>00659 {
+<a name="l00660"></a>00660 <a class="code" href="users_8cpp.html#kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link</a>(user,<span class="stringliteral">"Unauthorised connection"</span>);
+<a name="l00661"></a>00661 <span class="keywordflow">return</span>;
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663
+<a name="l00664"></a>00664 <span class="keywordtype">char</span> match_against[MAXBUF];
+<a name="l00665"></a>00665 snprintf(match_against,MAXBUF,<span class="stringliteral">"%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>);
+<a name="l00666"></a>00666 <span class="keywordtype">char</span>* e = <a class="code" href="xline_8h.html#matches_5Fexception_28const_20char_20_2Ahost_29">matches_exception</a>(match_against);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (!e)
+<a name="l00668"></a>00668 {
+<a name="l00669"></a>00669 <span class="keywordtype">char</span>* r = <a class="code" href="xline_8h.html#matches_5Fgline_28const_20char_20_2Ahost_29">matches_gline</a>(match_against);
+<a name="l00670"></a>00670 <span class="keywordflow">if</span> (r)
+<a name="l00671"></a>00671 {
+<a name="l00672"></a>00672 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00673"></a>00673 snprintf(reason,MAXBUF,<span class="stringliteral">"G-Lined: %s"</span>,r);
+<a name="l00674"></a>00674 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00675"></a>00675 <span class="keywordflow">return</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 r = <a class="code" href="xline_8h.html#matches_5Fkline_28const_20char_20_2Ahost_29">matches_kline</a>(user-&gt;<a class="code" href="classconnection.html#host_5B_31_36_30_5D">host</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r)
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00681"></a>00681 snprintf(reason,MAXBUF,<span class="stringliteral">"K-Lined: %s"</span>,r);
+<a name="l00682"></a>00682 <a class="code" href="users_8cpp.html#kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29">kill_link_silent</a>(user,reason);
+<a name="l00683"></a>00683 <span class="keywordflow">return</span>;
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 }
+<a name="l00686"></a>00686
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"NOTICE Auth :Welcome to \002%s\002!"</span>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>);
+<a name="l00689"></a>00689 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"001 %s :Welcome to the %s IRC Network %s!%s@%s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>);
+<a name="l00690"></a>00690 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"002 %s :Your host is %s, running version %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00691"></a>00691 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"003 %s :This server was created %s %s"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,__TIME__,__DATE__);
+<a name="l00692"></a>00692 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#ServerName_5BMAXBUF_5D">ServerName</a>,VERSION);
+<a name="l00693"></a>00693 <span class="comment">// the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...</span>
+<a name="l00694"></a>00694 std::stringstream v;
+<a name="l00695"></a>00695 v &lt;&lt; <span class="stringliteral">"WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS="</span> &lt;&lt; MAXCHANS;
+<a name="l00696"></a>00696 v &lt;&lt; <span class="stringliteral">" MAXBANS=60 NICKLEN="</span> &lt;&lt; NICKMAX;
+<a name="l00697"></a>00697 v &lt;&lt; <span class="stringliteral">" TOPICLEN="</span> &lt;&lt; MAXTOPIC &lt;&lt; <span class="stringliteral">" KICKLEN="</span> &lt;&lt; MAXKICK &lt;&lt; <span class="stringliteral">" MAXTARGETS=20 AWAYLEN="</span> &lt;&lt; MAXAWAY &lt;&lt; <span class="stringliteral">" CHANMODES=ohvb,k,l,psmnti NETWORK="</span>;
+<a name="l00698"></a>00698 v &lt;&lt; <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#Network_5BMAXBUF_5D">Network</a>;
+<a name="l00699"></a>00699 <a class="code" href="namespaceirc.html#string">std::string</a> data005 = v.str();
+<a name="l00700"></a>00700 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> On005Numeric(data005);
+<a name="l00701"></a>00701 <span class="comment">// anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...</span>
+<a name="l00702"></a>00702 <span class="comment">// so i'd better split it :)</span>
+<a name="l00703"></a>00703 std::stringstream out(data005);
+<a name="l00704"></a>00704 <a class="code" href="namespaceirc.html#string">std::string</a> token = <span class="stringliteral">""</span>;
+<a name="l00705"></a>00705 <a class="code" href="namespaceirc.html#string">std::string</a> line5 = <span class="stringliteral">""</span>;
+<a name="l00706"></a>00706 <span class="keywordtype">int</span> token_counter = 0;
+<a name="l00707"></a>00707 <span class="keywordflow">while</span> (!out.eof())
+<a name="l00708"></a>00708 {
+<a name="l00709"></a>00709 out &gt;&gt; token;
+<a name="l00710"></a>00710 line5 = line5 + token + <span class="stringliteral">" "</span>;
+<a name="l00711"></a>00711 token_counter++;
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> ((token_counter &gt;= 13) || (out.eof() == <span class="keyword">true</span>))
+<a name="l00713"></a>00713 {
+<a name="l00714"></a>00714 <a class="code" href="globals_8h.html#WriteServ_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteServ</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<span class="stringliteral">"005 %s %s:are supported by this server"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,line5.c_str());
+<a name="l00715"></a>00715 line5 = <span class="stringliteral">""</span>;
+<a name="l00716"></a>00716 token_counter = 0;
+<a name="l00717"></a>00717 }
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 ShowMOTD(user);
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="comment">// fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out</span>
+<a name="l00722"></a>00722 <span class="comment">// onto the network and produce 'fake direction'</span>
+<a name="l00723"></a>00723 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserConnect(user);
+<a name="l00724"></a>00724 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnGlobalConnect(user);
+<a name="l00725"></a>00725 user-&gt;<a class="code" href="classconnection.html#registered">registered</a> = 7;
+<a name="l00726"></a>00726 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client connecting on port %lu: %s!%s@%s [%s]"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#port">port</a>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,user-&gt;<a class="code" href="classconnection.html#ip_5B_31_36_5D">ip</a>);
+<a name="l00727"></a>00727 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.h::kill_link" ref="kill_5Flink_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00349">349</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="users_8cpp-source.html#l00471">AddWhoWas()</a>, <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>, and <a class="el" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>, <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>, <a class="el" href="modules_8cpp-source.html#l00609">Server::PseudoToUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00390">Server::QuitUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00350"></a>00350 {
+<a name="l00351"></a>00351 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 strncpy(reason,r,MAXBUF);
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00358"></a>00358 {
+<a name="l00359"></a>00359 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00363"></a>00363 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00364"></a>00364 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00367"></a>00367 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00368"></a>00368 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00382"></a>00382 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="comment">// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything</span>
+<a name="l00386"></a>00386 <span class="comment">// if they were an oper with +s.</span>
+<a name="l00387"></a>00387 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00388"></a>00388 purge_empty_chans(user);
+<a name="l00389"></a>00389 <span class="comment">// fix by brain: only show local quits because we only show local connects (it just makes SENSE)</span>
+<a name="l00390"></a>00390 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00391"></a>00391 <a class="code" href="globals_8h.html#WriteOpers_28char_20_2Atext_2C_2E_2E_2E_29">WriteOpers</a>(<span class="stringliteral">"*** Client exiting: %s!%s@%s [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,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>,reason);
+<a name="l00392"></a>00392 <a class="code" href="users_8cpp.html#AddWhoWas_28userrec_20_2Au_29">AddWhoWas</a>(user);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00398"></a>00398 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00404"></a>00404 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keyword">delete</span> user;
+<a name="l00410"></a>00410 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29"></a><!-- doxytag: member="users.h::kill_link_silent" ref="kill_5Flink_5Fsilent_28userrec_20_2Auser_2C_20const_20char_20_2Ar_29" args="(userrec *user, const char *r)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void kill_link_silent </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>r</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00412">412</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="users_8cpp-source.html#l00093">userrec::CloseSocket()</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, <a class="el" href="socketengine_8cpp-source.html#l00103">SocketEngine::DelFd()</a>, <a class="el" href="connection_8h-source.html#l00042">connection::fd</a>, <a class="el" href="users_8cpp-source.html#l00295">userrec::FlushWriteBuf()</a>, <a class="el" href="modules_8h-source.html#l00082">FOREACH_MOD</a>, <a class="el" href="classServerConfig.html#GetIOHook_28int_20port_29">ServerConfig::GetIOHook()</a>, <a class="el" href="connection_8h-source.html#l00046">connection::host</a>, <a class="el" href="users_8h-source.html#l00133">userrec::ident</a>, <a class="el" href="users_8cpp-source.html#l00052">local_users</a>, <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>, <a class="el" href="users_8h-source.html#l00128">userrec::nick</a>, <a class="el" href="modules_8cpp-source.html#l00270">Module::OnRawSocketClose()</a>, <a class="el" href="connection_8h-source.html#l00076">connection::port</a>, <a class="el" href="connection_8h-source.html#l00080">connection::registered</a>, <a class="el" href="inspircd_8h-source.html#l00111">InspIRCd::SE</a>, <a class="el" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write()</a>, and <a class="el" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept()</a>.
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>.<div class="fragment"><pre class="fragment"><a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 user_hash::iterator iter = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>);
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="keywordtype">char</span> reason[MAXBUF];
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 strncpy(reason,r,MAXBUF);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (strlen(reason)&gt;MAXQUIT)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 reason[MAXQUIT-1] = <span class="charliteral">'\0'</span>;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"kill_link: %s '%s'"</span>,user-&gt;<a class="code" href="classuserrec.html#nick_5BNICKMAX_5D">nick</a>,reason);
+<a name="l00426"></a>00426 <a class="code" href="globals_8h.html#Write_28int_20sock_2C_20char_20_2Atext_2C_2E_2E_2E_29">Write</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>,<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>,reason);
+<a name="l00427"></a>00427 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"closing fd %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 user-&gt;<a class="code" href="classuserrec.html#FlushWriteBuf_28_29">FlushWriteBuf</a>();
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00432"></a>00432 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserQuit(user,reason);
+<a name="l00433"></a>00433 <a class="code" href="globals_8h.html#WriteCommonExcept_28userrec_20_2Au_2C_20char_20_2Atext_2C_2E_2E_2E_29">WriteCommonExcept</a>(user,<span class="stringliteral">"QUIT :%s"</span>,reason);
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <a class="code" href="modules_8h.html#FOREACH_5FMOD">FOREACH_MOD</a> OnUserDisconnect(user);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>))
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <a class="code" href="channels_8cpp.html#Config">Config</a>-&gt;<a class="code" href="classServerConfig.html#GetIOHook_28int_20port_29">GetIOHook</a>(user-&gt;<a class="code" href="classconnection.html#port">port</a>)-&gt;<a class="code" href="classModule.html#OnRawSocketClose_28int_20fd_29">OnRawSocketClose</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 <a class="code" href="modules_8cpp.html#ServerInstance">ServerInstance</a>-&gt;<a class="code" href="classInspIRCd.html#SE">SE</a>-&gt;<a class="code" href="classSocketEngine.html#DelFd_28int_20fd_29">DelFd</a>(user-&gt;<a class="code" href="classconnection.html#fd">fd</a>);
+<a name="l00445"></a>00445 user-&gt;<a class="code" href="classuserrec.html#CloseSocket_28_29">CloseSocket</a>();
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#registered">registered</a> == 7) {
+<a name="l00449"></a>00449 purge_empty_chans(user);
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (iter != <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end())
+<a name="l00453"></a>00453 {
+<a name="l00454"></a>00454 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"deleting user hash value %lu"</span>,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)user);
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (user-&gt;<a class="code" href="classconnection.html#fd">fd</a> &gt; -1)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 <a class="code" href="modules_8cpp.html#fd_5Fref_5Ftable_5B_36_35_35_33_36_5D">fd_ref_table</a>[user-&gt;<a class="code" href="classconnection.html#fd">fd</a>] = NULL;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user) != <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end())
+<a name="l00459"></a>00459 {
+<a name="l00460"></a>00460 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"Delete local user"</span>);
+<a name="l00461"></a>00461 <a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.erase(find(<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.begin(),<a class="code" href="users_8cpp.html#local_5Fusers">local_users</a>.end(),user));
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(iter);
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 <span class="keyword">delete</span> user;
+<a name="l00467"></a>00467 }
+</pre></div>
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29"></a><!-- doxytag: member="users.h::ReHashNick" ref="ReHashNick_28char_20_2AOld_2C_20char_20_2ANew_29" args="(char *Old, char *New)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a>* ReHashNick </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>Old</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>New</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="users_8cpp-source.html#l00743">743</a> of file <a class="el" href="users_8cpp-source.html">users.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp.html#clientlist">clientlist</a>, <a class="el" href="inspircd__io_8h-source.html#l00029">DEBUG</a>, and <a class="el" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log()</a>.<div class="fragment"><pre class="fragment"><a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="comment">//user_hash::iterator newnick;</span>
+<a name="l00746"></a>00746 user_hash::iterator oldnick = <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.find(Old);
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: %s %s"</span>,Old,New);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">if</span> (!strcasecmp(Old,New))
+<a name="l00751"></a>00751 {
+<a name="l00752"></a>00752 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"old nick is new nick, skipping"</span>);
+<a name="l00753"></a>00753 <span class="keywordflow">return</span> oldnick-&gt;second;
+<a name="l00754"></a>00754 }
+<a name="l00755"></a>00755
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (oldnick == <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.end()) <span class="keywordflow">return</span> NULL; <span class="comment">/* doesnt exist */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Found hashed nick %s"</span>,Old);
+<a name="l00759"></a>00759
+<a name="l00760"></a>00760 <a class="code" href="classuserrec.html">userrec</a>* olduser = oldnick-&gt;second;
+<a name="l00761"></a>00761 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New] = olduser;
+<a name="l00762"></a>00762 <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>.erase(oldnick);
+<a name="l00763"></a>00763
+<a name="l00764"></a>00764 <a class="code" href="globals_8h.html#log_28int_20level_2C_20char_20_2Atext_2C_2E_2E_2E_29">log</a>(<a class="code" href="inspircd__io_8h.html#DEBUG">DEBUG</a>,<span class="stringliteral">"ReHashNick: Nick rehashed as %s"</span>,New);
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#clientlist">clientlist</a>[New];
+<a name="l00767"></a>00767 }
+</pre></div>
+<p>
+ </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/users_8h__dep__incl.map b/docs/module-doc/users_8h__dep__incl.map
index 26ba17778..8d3acb66f 100644
--- a/docs/module-doc/users_8h__dep__incl.map
+++ b/docs/module-doc/users_8h__dep__incl.map
@@ -1,13 +1,13 @@
base referer
-rect $channels_8cpp-source.html 413,412 512,439
-rect $modules_8cpp-source.html 413,311 512,337
-rect $users_8cpp-source.html 280,159 360,185
-rect $commands_8h-source.html 125,108 224,135
-rect $globals_8h-source.html 137,361 212,388
-rect $typedefs_8h-source.html 277,361 363,388
-rect $inspircd_8h-source.html 135,209 215,236
-rect $cull__list_8h-source.html 136,412 213,439
-rect $message_8h-source.html 277,564 363,591
-rect $mode_8h-source.html 287,260 353,287
-rect $userprocess_8h-source.html 123,564 227,591
-rect $xline_8h-source.html 289,463 351,489
+rect $channels_8cpp-source.html 531,235 629,261
+rect $modules_8cpp-source.html 531,387 629,413
+rect $users_8cpp-source.html 540,564 620,591
+rect $commands_8h-source.html 379,615 477,641
+rect $cull__list_8h-source.html 121,311 199,337
+rect $globals_8h-source.html 249,159 324,185
+rect $typedefs_8h-source.html 385,260 471,287
+rect $inspircd_8h-source.html 247,412 327,439
+rect $userprocess_8h-source.html 376,463 480,489
+rect $mode_8h-source.html 127,361 193,388
+rect $message_8h-source.html 385,311 471,337
+rect $xline_8h-source.html 397,513 459,540
diff --git a/docs/module-doc/users_8h__dep__incl.md5 b/docs/module-doc/users_8h__dep__incl.md5
index 77a2c3cd3..9619fc58f 100644
--- a/docs/module-doc/users_8h__dep__incl.md5
+++ b/docs/module-doc/users_8h__dep__incl.md5
@@ -1 +1 @@
-c6314acd91a09c69378b916056cacc46 \ No newline at end of file
+b1eec238e42f7d91bc0d7f5a3b91a235 \ No newline at end of file
diff --git a/docs/module-doc/users_8h__incl.map b/docs/module-doc/users_8h__incl.map
index a05768f57..de04ab43e 100644
--- a/docs/module-doc/users_8h__incl.map
+++ b/docs/module-doc/users_8h__incl.map
@@ -1,3 +1,4 @@
base referer
rect $channels_8h-source.html 128,108 213,135
-rect $connection_8h-source.html 121,58 220,84
+rect $connection_8h-source.html 121,159 220,185
+rect $hashcomp_8h-source.html 124,57 217,84
diff --git a/docs/module-doc/users_8h__incl.md5 b/docs/module-doc/users_8h__incl.md5
index 0182762ef..da43ba319 100644
--- a/docs/module-doc/users_8h__incl.md5
+++ b/docs/module-doc/users_8h__incl.md5
@@ -1 +1 @@
-8a804bf9eb838d5cc63aad0c666de3ab \ No newline at end of file
+24445b415c7267f43aad5464edd11467 \ No newline at end of file
diff --git a/docs/module-doc/xline_8h-source.html b/docs/module-doc/xline_8h-source.html
index 9d4e52ad3..bacb63213 100644
--- a/docs/module-doc/xline_8h-source.html
+++ b/docs/module-doc/xline_8h-source.html
@@ -129,7 +129,7 @@
<a name="l00161"></a>00161 <span class="keywordtype">bool</span> <a class="code" href="xline_8h.html#qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29">qline_make_global</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* nickname);
<a name="l00162"></a>00162
<a name="l00163"></a>00163 <span class="preprocessor">#endif</span>
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by&nbsp;
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/xline_8h.html b/docs/module-doc/xline_8h.html
index 7f39624d3..0785c9614 100644
--- a/docs/module-doc/xline_8h.html
+++ b/docs/module-doc/xline_8h.html
@@ -20,15 +20,17 @@
Include dependency graph for xline.h:<p><center><img src="xline_8h__incl.gif" border="0" usemap="#xline.h_map" alt=""></center>
<map name="xline.h_map">
<area href="users_8h-source.html" shape="rect" coords="124,260,188,287" alt="">
-<area href="channels_8h-source.html" shape="rect" coords="248,210,333,236" alt="">
-<area href="connection_8h-source.html" shape="rect" coords="241,362,340,388" alt="">
+<area href="channels_8h-source.html" shape="rect" coords="248,209,333,236" alt="">
+<area href="connection_8h-source.html" shape="rect" coords="241,412,340,439" alt="">
+<area href="hashcomp_8h-source.html" shape="rect" coords="244,311,337,337" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="xline_8h__dep__incl.gif" border="0" usemap="#xline.hdep_map" alt=""></center>
<map name="xline.hdep_map">
-<area href="channels_8cpp-source.html" shape="rect" coords="120,7,219,34" alt="">
-<area href="modules_8cpp-source.html" shape="rect" coords="120,58,219,84" alt="">
+<area href="channels_8cpp-source.html" shape="rect" coords="120,7,219,33" alt="">
+<area href="modules_8cpp-source.html" shape="rect" coords="120,57,219,84" alt="">
+<area href="users_8cpp-source.html" shape="rect" coords="130,108,210,135" alt="">
</map>
<p>
@@ -172,7 +174,7 @@ This graph shows which files directly or indirectly include this file:<p><center
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00660">Server::AddELine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00659">Server::AddELine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::add_gline" ref="add_5Fgline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29" args="(long duration, const char *source, const char *reason, const char *hostmask)" --><p>
@@ -223,7 +225,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00660">Server::AddEL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00640">Server::AddGLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00639">Server::AddGLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::add_kline" ref="add_5Fkline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Ahostmask_29" args="(long duration, const char *source, const char *reason, const char *hostmask)" --><p>
@@ -274,7 +276,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00640">Server::AddGL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00655">Server::AddKLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00654">Server::AddKLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::add_qline" ref="add_5Fqline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Anickname_29" args="(long duration, const char *source, const char *reason, const char *nickname)" --><p>
@@ -325,7 +327,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00655">Server::AddKL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00645">Server::AddQLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00644">Server::AddQLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::add_zline" ref="add_5Fzline_28long_20duration_2C_20const_20char_20_2Asource_2C_20const_20char_20_2Areason_2C_20const_20char_20_2Aipaddr_29" args="(long duration, const char *source, const char *reason, const char *ipaddr)" --><p>
@@ -376,7 +378,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00645">Server::AddQL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00650">Server::AddZLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00649">Server::AddZLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="apply_5Flines_28const_20int_20What_29"></a><!-- doxytag: member="xline.h::apply_lines" ref="apply_5Flines_28const_20int_20What_29" args="(const int What)" --><p>
@@ -434,7 +436,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00650">Server::AddZL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00685">Server::DelELine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00684">Server::DelELine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fgline_28const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::del_gline" ref="del_5Fgline_28const_20char_20_2Ahostmask_29" args="(const char *hostmask)" --><p>
@@ -464,7 +466,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00685">Server::DelEL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00665">Server::DelGLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00664">Server::DelGLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fkline_28const_20char_20_2Ahostmask_29"></a><!-- doxytag: member="xline.h::del_kline" ref="del_5Fkline_28const_20char_20_2Ahostmask_29" args="(const char *hostmask)" --><p>
@@ -494,7 +496,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00665">Server::DelGL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00680">Server::DelKLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00679">Server::DelKLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fqline_28const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::del_qline" ref="del_5Fqline_28const_20char_20_2Anickname_29" args="(const char *nickname)" --><p>
@@ -524,7 +526,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00680">Server::DelKL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::DelQLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00669">Server::DelQLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="del_5Fzline_28const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::del_zline" ref="del_5Fzline_28const_20char_20_2Aipaddr_29" args="(const char *ipaddr)" --><p>
@@ -554,7 +556,7 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00670">Server::DelQL
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZLine()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00674">Server::DelZLine()</a>. </td>
</tr>
</table>
<a class="anchor" name="eline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29"></a><!-- doxytag: member="xline.h::eline_set_creation_time" ref="eline_5Fset_5Fcreation_5Ftime_28char_20_2Ahost_2C_20time_5Ft_20create_5Ftime_29" args="(char *host, time_t create_time)" --><p>
@@ -683,7 +685,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZL
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>, and <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fgline_28const_20char_20_2Ahost_29"></a><!-- doxytag: member="xline.h::matches_gline" ref="matches_5Fgline_28const_20char_20_2Ahost_29" args="(const char *host)" --><p>
@@ -711,7 +715,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZL
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fkline_28const_20char_20_2Ahost_29"></a><!-- doxytag: member="xline.h::matches_kline" ref="matches_5Fkline_28const_20char_20_2Ahost_29" args="(const char *host)" --><p>
@@ -739,7 +745,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZL
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00647">FullConnectUser()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fqline_28const_20char_20_2Anick_29"></a><!-- doxytag: member="xline.h::matches_qline" ref="matches_5Fqline_28const_20char_20_2Anick_29" args="(const char *nick)" --><p>
@@ -767,7 +775,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZL
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00769">force_nickchange()</a>. </td>
</tr>
</table>
<a class="anchor" name="matches_5Fzline_28const_20char_20_2Aipaddr_29"></a><!-- doxytag: member="xline.h::matches_zline" ref="matches_5Fzline_28const_20char_20_2Aipaddr_29" args="(const char *ipaddr)" --><p>
@@ -795,7 +805,9 @@ Referenced by <a class="el" href="modules_8cpp-source.html#l00675">Server::DelZL
<td>
<p>
- </td>
+
+<p>
+Referenced by <a class="el" href="users_8cpp-source.html#l00524">AddClient()</a>. </td>
</tr>
</table>
<a class="anchor" name="qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29"></a><!-- doxytag: member="xline.h::qline_make_global" ref="qline_5Fmake_5Fglobal_28const_20char_20_2Anickname_29" args="(const char *nickname)" --><p>
@@ -1221,7 +1233,7 @@ Definition at line <a class="el" href="xline_8h-source.html#l00033">33</a> of fi
Definition at line <a class="el" href="xline_8h-source.html#l00034">34</a> of file <a class="el" href="xline_8h-source.html">xline.h</a>. </td>
</tr>
</table>
-<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by&nbsp;
+<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4-20050815 </small></address>
</body>
diff --git a/docs/module-doc/xline_8h__dep__incl.map b/docs/module-doc/xline_8h__dep__incl.map
index f174ea10d..3000d3ddf 100644
--- a/docs/module-doc/xline_8h__dep__incl.map
+++ b/docs/module-doc/xline_8h__dep__incl.map
@@ -1,3 +1,4 @@
base referer
-rect $channels_8cpp-source.html 120,7 219,34
-rect $modules_8cpp-source.html 120,58 219,84
+rect $channels_8cpp-source.html 120,7 219,33
+rect $modules_8cpp-source.html 120,57 219,84
+rect $users_8cpp-source.html 130,108 210,135
diff --git a/docs/module-doc/xline_8h__dep__incl.md5 b/docs/module-doc/xline_8h__dep__incl.md5
index 6d471411b..842472c9b 100644
--- a/docs/module-doc/xline_8h__dep__incl.md5
+++ b/docs/module-doc/xline_8h__dep__incl.md5
@@ -1 +1 @@
-94b61de8eaa885e874543fc93fa71194 \ No newline at end of file
+c8590565d44b3716ffcd0bac63383582 \ No newline at end of file
diff --git a/docs/module-doc/xline_8h__incl.map b/docs/module-doc/xline_8h__incl.map
index 48d749ff5..a0ec2f1b6 100644
--- a/docs/module-doc/xline_8h__incl.map
+++ b/docs/module-doc/xline_8h__incl.map
@@ -1,4 +1,5 @@
base referer
rect $users_8h-source.html 124,260 188,287
-rect $channels_8h-source.html 248,210 333,236
-rect $connection_8h-source.html 241,362 340,388
+rect $channels_8h-source.html 248,209 333,236
+rect $connection_8h-source.html 241,412 340,439
+rect $hashcomp_8h-source.html 244,311 337,337
diff --git a/docs/module-doc/xline_8h__incl.md5 b/docs/module-doc/xline_8h__incl.md5
index 19d6c530a..db8dff57e 100644
--- a/docs/module-doc/xline_8h__incl.md5
+++ b/docs/module-doc/xline_8h__incl.md5
@@ -1 +1 @@
-c19192f2db3c2ad86cf37af32b2260b3 \ No newline at end of file
+923f635ea1c21953bb7135ac47173dce \ No newline at end of file