Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[svn] - the new plan:

  + branches/release-2.1 -> 2.2 base
  + 3.0 -> branches/cxxconversion
  + backport some immediate 3.0 functionality for 2.2
  + other stuff
  • Loading branch information...
commit 212380e3f42f585dc1ea927402252eb943f91f7b 0 parents
nenolod authored
Showing with 63,452 additions and 0 deletions.
  1. +8 −0 .cvsignore
  2. +49 −0 .indent.pro
  3. +27 −0 BUGS
  4. +24 −0 CREDITS
  5. +13,271 −0 ChangeLog
  6. +266 −0 INSTALL
  7. +341 −0 LICENSE
  8. +147 −0 Makefile.in
  9. +336 −0 NEWS
  10. +102 −0 README.FIRST
  11. +5 −0 SVN-Access
  12. +50 −0 aclocal.m4
  13. +15,592 −0 configure
  14. +1,312 −0 configure.ac
  15. +1 −0  doc/.cvsignore
  16. +316 −0 doc/CIDR.txt
  17. +61 −0 doc/Hybrid-team
  18. +96 −0 doc/Makefile.in
  19. +17 −0 doc/README.cidr_bans
  20. +18 −0 doc/Ratbox-team
  21. +272 −0 doc/Tao-of-IRC.940110
  22. +86 −0 doc/challenge.txt
  23. +41 −0 doc/collision_fnc.txt
  24. +422 −0 doc/example.conf
  25. +92 −0 doc/extban.txt
  26. +122 −0 doc/hooks.txt
  27. +29 −0 doc/index.txt
  28. +122 −0 doc/ircd.8
  29. +2 −0  doc/ircd.motd
  30. +36 −0 doc/logfiles.txt
  31. +140 −0 doc/modeg.txt
  32. +10 −0 doc/modes.txt
  33. +111 −0 doc/monitor.txt
  34. +137 −0 doc/old/Authors
  35. +368 −0 doc/operguide.txt
  36. +137 −0 doc/opermyth.txt
  37. +1,122 −0 doc/reference.conf
  38. +51 −0 doc/server-version-info
  39. +55 −0 doc/services.txt
  40. +57 −0 doc/sgml/oper-guide/charybdis-oper-guide.sgml
  41. +314 −0 doc/sgml/oper-guide/cmodes.sgml
  42. +1,095 −0 doc/sgml/oper-guide/commands.sgml
  43. +1,101 −0 doc/sgml/oper-guide/config.sgml
  44. +41 −0 doc/sgml/oper-guide/intro.sgml
  45. +169 −0 doc/sgml/oper-guide/oprivs.sgml
  46. +33 −0 doc/sgml/oper-guide/stylesheet.dsl
  47. +188 −0 doc/sgml/oper-guide/ucommands.sgml
  48. +333 −0 doc/sgml/oper-guide/umodes.sgml
  49. +330 −0 doc/technical/README.TSora
  50. +34 −0 doc/technical/capab.txt
  51. +26 −0 doc/technical/cluster.txt
  52. +71 −0 doc/technical/euid.txt
  53. +84 −0 doc/technical/event.txt
  54. +81 −0 doc/technical/fd-management.txt
  55. +37 −0 doc/technical/file-management.txt
  56. +115 −0 doc/technical/hostmask.txt
  57. +19 −0 doc/technical/index.txt
  58. +139 −0 doc/technical/linebuf.txt
  59. +105 −0 doc/technical/network.txt
  60. +3,643 −0 doc/technical/rfc1459.txt
  61. +253 −0 doc/technical/send.txt
  62. +151 −0 doc/technical/ts5.txt
  63. +269 −0 doc/technical/ts6.txt
  64. +38 −0 doc/tgchange.txt
  65. +113 −0 doc/whats-new-2.0.txt
  66. +69 −0 doc/whats-new-2.1.txt
  67. +1 −0  extensions/.cvsignore
  68. +1 −0  extensions/.indent.pro
  69. +101 −0 extensions/Makefile.in
  70. +68 −0 extensions/README
  71. +37 −0 extensions/createauthonly.c
  72. +280 −0 extensions/example_module.c
  73. +43 −0 extensions/extb_account.c
  74. +67 −0 extensions/extb_canjoin.c
  75. +54 −0 extensions/extb_channel.c
  76. +59 −0 extensions/extb_extgecos.c
  77. +42 −0 extensions/extb_oper.c
  78. +44 −0 extensions/extb_realname.c
  79. +44 −0 extensions/extb_server.c
  80. +669 −0 extensions/hurt.c
  81. +176 −0 extensions/ip_cloaking.c
  82. +36 −0 extensions/m_42.c
  83. +117 −0 extensions/m_findforwards.c
  84. +101 −0 extensions/m_identify.c
  85. +169 −0 extensions/m_mkpasswd.c
  86. +155 −0 extensions/m_ojoin.c
  87. +142 −0 extensions/m_okick.c
  88. +152 −0 extensions/m_olist.c
  89. +171 −0 extensions/m_omode.c
  90. +119 −0 extensions/m_opme.c
  91. +143 −0 extensions/m_webirc.c
  92. +41 −0 extensions/no_oper_invis.c
  93. +81 −0 extensions/sno_farconnect.c
  94. +51 −0 extensions/sno_globalkline.c
  95. +38 −0 extensions/sno_globaloper.c
  96. +47 −0 extensions/spy_admin_notice.c
  97. +47 −0 extensions/spy_info_notice.c
  98. +49 −0 extensions/spy_links_notice.c
  99. +47 −0 extensions/spy_motd_notice.c
  100. +70 −0 extensions/spy_stats_notice.c
  101. +47 −0 extensions/spy_stats_p_notice.c
  102. +54 −0 extensions/spy_trace_notice.c
  103. +56 −0 extensions/spy_whois_notice.c
  104. +56 −0 extensions/spy_whois_notice_global.c
  105. +1 −0  help/.cvsignore
  106. +98 −0 help/Makefile.in
  107. +8 −0 help/opers/accept
  108. +11 −0 help/opers/admin
  109. +4 −0 help/opers/away
  110. +1 −0  help/opers/capab
  111. +10 −0 help/opers/challenge
  112. +6 −0 help/opers/chantrace
  113. +4 −0 help/opers/close
  114. +55 −0 help/opers/cmode
  115. +5 −0 help/opers/cnotice
  116. +16 −0 help/opers/connect
  117. +5 −0 help/opers/cprivmsg
  118. +10 −0 help/opers/credits
  119. +5 −0 help/opers/die
  120. +10 −0 help/opers/dline
  121. +8 −0 help/opers/error
  122. +16 −0 help/opers/etrace
  123. +11 −0 help/opers/gline
  124. +6 −0 help/opers/help
  125. +24 −0 help/opers/index
  126. +5 −0 help/opers/info
  127. +4 −0 help/opers/invite
  128. +6 −0 help/opers/ison
  129. +11 −0 help/opers/join
  130. +6 −0 help/opers/kick
  131. +5 −0 help/opers/kill
  132. +26 −0 help/opers/kline
  133. +7 −0 help/opers/knock
  134. +17 −0 help/opers/links
  135. +16 −0 help/opers/list
  136. +4 −0 help/opers/locops
  137. +8 −0 help/opers/lusers
  138. +4 −0 help/opers/map
  139. +9 −0 help/opers/masktrace
  140. +7 −0 help/opers/modlist
  141. +7 −0 help/opers/modload
  142. +6 −0 help/opers/modrestart
  143. +7 −0 help/opers/modunload
  144. +5 −0 help/opers/motd
  145. +11 −0 help/opers/names
  146. +7 −0 help/opers/nick
  147. +35 −0 help/opers/notice
  148. +8 −0 help/opers/oper
  149. +13 −0 help/opers/operspy
  150. +4 −0 help/opers/operwall
  151. +10 −0 help/opers/part
  152. +6 −0 help/opers/pass
  153. +6 −0 help/opers/ping
  154. +6 −0 help/opers/pong
  155. +5 −0 help/opers/post
  156. +35 −0 help/opers/privmsg
  157. +5 −0 help/opers/quit
  158. +28 −0 help/opers/rehash
  159. +5 −0 help/opers/restart
  160. +11 −0 help/opers/resv
  161. +16 −0 help/opers/scan
  162. +1 −0  help/opers/server
  163. +31 −0 help/opers/set
  164. +1 −0  help/opers/sjoin
  165. +19 −0 help/opers/snomask
  166. +4 −0 help/opers/squit
  167. +44 −0 help/opers/stats
  168. +1 −0  help/opers/svinfo
  169. +3 −0  help/opers/testgecos
  170. +8 −0 help/opers/testline
  171. +5 −0 help/opers/testmask
  172. +6 −0 help/opers/time
  173. +10 −0 help/opers/topic
  174. +17 −0 help/opers/trace
  175. +5 −0 help/opers/uhelp
  176. +18 −0 help/opers/umode
  177. +5 −0 help/opers/undline
  178. +8 −0 help/opers/ungline
  179. +10 −0 help/opers/unkline
  180. +6 −0 help/opers/unreject
  181. +6 −0 help/opers/unresv
  182. +10 −0 help/opers/unxline
  183. +7 −0 help/opers/user
  184. +10 −0 help/opers/userhost
  185. +6 −0 help/opers/users
  186. +4 −0 help/opers/version
  187. +6 −0 help/opers/wallops
  188. +35 −0 help/opers/who
  189. +8 −0 help/opers/whois
  190. +8 −0 help/opers/whowas
  191. +28 −0 help/opers/xline
  192. +13 −0 help/users/index
  193. +4 −0 help/users/info
  194. +18 −0 help/users/notice
  195. +18 −0 help/users/privmsg
  196. +24 −0 help/users/stats
  197. +14 −0 help/users/umode
  198. +2 −0  include/.cvsignore
  199. +1 −0  include/.indent.pro
  200. +54 −0 include/blacklist.h
  201. +51 −0 include/cache.h
  202. +271 −0 include/channel.h
  203. +30 −0 include/charybdis.h
  204. +99 −0 include/class.h
  205. +634 −0 include/client.h
  206. +68 −0 include/common.h
  207. +157 −0 include/config.h
  208. +170 −0 include/config.h.dist
  209. +69 −0 include/defaults.h
  210. +110 −0 include/hash.h
  211. +94 −0 include/hook.h
  212. +111 −0 include/hostmask.h
  213. +199 −0 include/irc_string.h
  214. +118 −0 include/ircd.h
  215. +170 −0 include/ircd_defs.h
  216. +45 −0 include/ircd_getopt.h
  217. +50 −0 include/ircd_linker.h
  218. +32 −0 include/ircd_signal.h
  219. +55 −0 include/ircd_state.h
  220. +54 −0 include/listener.h
  221. +188 −0 include/m_info.h
  222. +123 −0 include/modules.h
  223. +32 −0 include/monitor.h
  224. +152 −0 include/msg.h
  225. +79 −0 include/newconf.h
  226. +365 −0 include/numeric.h
  227. +56 −0 include/packet.h
  228. +54 −0 include/parse.h
  229. +31 −0 include/patchlevel.h
  230. +162 −0 include/patricia.h
  231. +40 −0 include/reject.h
  232. +47 −0 include/res.h
  233. +118 −0 include/reslib.h
  234. +33 −0 include/restart.h
  235. +87 −0 include/s_auth.h
  236. +419 −0 include/s_conf.h
  237. +73 −0 include/s_gline.h
  238. +67 −0 include/s_log.h
  239. +261 −0 include/s_newconf.h
  240. +165 −0 include/s_serv.h
  241. +83 −0 include/s_stats.h
  242. +57 −0 include/s_user.h
  243. +34 −0 include/scache.h
  244. +93 −0 include/send.h
  245. +1 −0  include/serno.h
  246. +347 −0 include/setup.h.in
  247. +64 −0 include/snomask.h
  248. +51 −0 include/sprintf_irc.h
  249. +152 −0 include/stdinc.h
  250. +48 −0 include/supported.h
  251. +109 −0 include/whowas.h
  252. +270 −0 install-sh
  253. +87 −0 libcharybdis/Makefile.in
  254. +652 −0 libcharybdis/balloc.c
  255. +112 −0 libcharybdis/balloc.h
  256. +790 −0 libcharybdis/commio.c
  257. +192 −0 libcharybdis/commio.h
  258. +293 −0 libcharybdis/devpoll.c
  259. +228 −0 libcharybdis/epoll.c
  260. +352 −0 libcharybdis/event.c
  261. +64 −0 libcharybdis/event.h
  262. +284 −0 libcharybdis/kqueue.c
  263. +91 −0 libcharybdis/libcharybdis.c
  264. +48 −0 libcharybdis/libcharybdis.h
  265. +686 −0 libcharybdis/linebuf.c
  266. +86 −0 libcharybdis/linebuf.h
  267. +75 −0 libcharybdis/memory.c
  268. +79 −0 libcharybdis/memory.h
  269. +278 −0 libcharybdis/poll.c
  270. +174 −0 libcharybdis/ports.c
  271. +203 −0 libcharybdis/select.c
  272. +981 −0 libcharybdis/snprintf.c
  273. +121 −0 libcharybdis/tools.c
  274. +379 −0 libcharybdis/tools.h
  275. +2 −0  modules/.cvsignore
  276. +1,101 −0 modules/.depend
  277. +49 −0 modules/.indent.pro
  278. +221 −0 modules/Makefile.in
  279. +111 −0 modules/core/m_die.c
  280. +125 −0 modules/core/m_error.c
Sorry, we could not display the entire diff because too many files (430) changed.
8 .cvsignore
@@ -0,0 +1,8 @@
+config.log
+config.cache
+config.status
+autom4te.cache
+Makefile
+lint.out
+rsa_respond.tar.gz
+.depend
49 .indent.pro
@@ -0,0 +1,49 @@
+/* $Id: .indent.pro 238 2005-09-21 05:26:03Z nenolod $ */
+
+/* copy this file to the source dir then run indent file.c */
+
+--gnu-style
+
+/* This is the indent before the brace not inside the block. */
+--brace-indent0
+
+/* Indent case: by 2 and braces inside case by 0(then by 0)... */
+--case-brace-indentation0
+--case-indentation2
+
+--indent-level8
+
+/* Put while() on the brace from do... */
+--cuddle-do-while
+
+/* Disable an annoying format... */
+--no-space-after-function-call-names
+
+/* Disable an annoying format... */
+--dont-break-procedure-type
+
+/* Disable an annoying format... */
+--no-space-after-casts
+
+--line-length200
+
+/* typedefs */
+-T boolean_t
+-T node_t
+-T list_t
+-T tld_t
+-T kline_t
+-T EVH
+-T sra_t
+-T server_t
+-T user_t
+-T channel_t
+-T chanuser_t
+-T myuser_t
+-T mychan_t
+-T chanacs_t
+-T CONFIGENTRY
+-T CONFIGFILE
+-T Block
+-T MemBlock
+-T BlockHeap
27 BUGS
@@ -0,0 +1,27 @@
+ Known Bugs worthy of a mention:
+--------------------------------------------------------------------------------
+
+1. /MODUNLOAD causes cores:
+ - If a module is modified before being unloaded, /MODUNLOAD (and
+ therefore /MODRELOAD) may cause a core.
+
+ This problem is caused by the behaviour of the OS, which treats
+ shared libraries differently to executables (modifying the ircd
+ binary whilst it is running would also cause a core, but is denied
+ by the OS).
+
+ A workaround to avoid coring is possible however. To install new
+ modules, first remove or rename the old module, then copy/move the
+ new file into place. install or make install is also safe.
+ /MODUNLOAD will then work successfully.
+
+ We will likely have a workaround implemented in the next version.
+
+BUG REPORTS: If you run this code and encounter problems, you must report
+ the bug via IRC, irc.atheme.net #athemenet-dev.
+
+ Please include a gdb backtrace and keep your binaries, modules and core file
+ in case the developers need more information.
+
+--------------------------------------------------------------------------------
+$Id: BUGS 1634 2006-06-04 13:26:04Z jilles $
24 CREDITS
@@ -0,0 +1,24 @@
+$Id: CREDITS 3133 2007-01-21 15:38:16Z jilles $
+
+Charybdis started as an evolution from ircd-ratbox-2.1.5+datadrain. Its
+development is led by a team of dedicated developers who have put a lot
+of time into the project.
+
+The charybdis core team is listed in nick-alphabetical order:
+
+gxti, Michael Tharp <gxti -at- partiallystapled.com>
+jilles, Jilles Tjoelker <jilles -at- stack.nl>
+nenolod, William Pitcock <nenolod -at- nenolod.net>
+twincest, River Tarnell <river -at- attenuate.org>
+
+The following people have made contributions to the Charybdis release,
+in nick-alphabetical order:
+
+AndroSyn, Aaron Sethman <androsyn -at- ratbox.org>
+anfl, Lee Hardy <lee -at- leeh.co.uk>
+beu, Elfyn McBratney <elfyn.mcbratney -at- gmail.com>
+Entrope, Michael Poole <mdpoole -at- trolius.org>
+ThaPrince, Jon Christopherson <jon -at- vile.com>
+w00t, Robin Burchell <surreal.w00t -at- gmail.com>
+
+Visit the Charybdis website at: http://www.ircd-charybdis.org
13,271 ChangeLog
13,271 additions, 0 deletions not shown
266 INSTALL
@@ -0,0 +1,266 @@
+ Hybrid INSTALL Document
+
+ $Id: INSTALL 1837 2006-08-22 14:05:58Z nenolod $
+
+ Copyright (c) 2001 by ircd-hybrid team
+ Copyright (c) 2002-2004 ircd-ratbox development team
+
+ ----------------------------------------------------------------------
+
+ +------------------------------------------------------------------------+
+ | Note for those who dont bother reading docs |
+ | |
+ | Reading INSTALL is now a must, as the old DPATH is now specified when |
+ | configure is run. |
+ | |
+ | - You now need to ./configure --prefix="/path/to/install/it" |
+ | |
+ | Important: The old config format WILL NOT WORK. Please see point 6! |
+ | |
+ | The old kline format WILL NOT WORK. Please see point 7! |
+ +------------------------------------------------------------------------+
+
+ ----------------------------------------------------------------------
+
+ HOW TO BUILD
+
+ As of hybrid-4, the distribution uses GNU autoconf instead of the old
+ Config script. The Makefile has also been updated to include CFLAGS
+ defines for popular modern OSes.
+
+ 1.
+
+ Read the ChangeLog file to find out about the exciting new features in
+ this version. Other good reads are doc/whats-new.txt, BUGS,
+ doc/example.conf, and README.FIRST.
+
+ An example.conf for EFnet is in doc/ with the values "approved" on 12
+ December 2001.
+
+ 2.
+
+ Run the configure script. It will create include/setup.h and the
+ Makefiles to match your system. In ircd-ratbox, the paths are now handled
+ with the --prefix option to configure, not in config.h.
+ /usr/local/ircd is the default if no prefix is specified.
+
+ ./configure --prefix="/usr/local/ircd"
+
+ Note: There are some special optional parameters to the configure
+ script that some admins may wish to use.
+
+ *
+
+ --enable-kqueue - Use the superior kqueue(2) system call as
+ opposed to the default poll(2). This is currently only available
+ on FreeBSD 4.1 or higher.
+
+ *
+
+ --enable-devpoll - Enable the superior /dev/poll support on
+ Solaris. Linux /dev/poll is broken and will not work with this
+ option.
+
+ *
+
+ --enable-epoll - Enable the superior Linux Edge-Triggered Polling
+ system. This is currently only available on 2.5 Linux kernel
+ versions or later.
+
+ *
+
+ --enable-openssl - Enable the openssl dependent crypto functions.
+ This will allow CHALLENGE to work and encrypted links. On systems
+ where the configure script can automatically detect OpenSSL, this
+ option is not necessary. If configure cannot find OpenSSL, you
+ must specify a path with this option
+ (--enable-openssl=/path/to/openssl)
+
+ *
+
+ --enable-ipv6 - Enable IPv6 support.
+
+ *
+
+ --disable-shared-modules - Disable module support. This option is
+ more secure, but reduces a lot of the flexibility in Hybrid 7.
+ This may need to be used on some systems without a working dl
+ library.
+
+ *
+
+ --disable-assert - Disable some of the debugging code. This
+ should be used on all production servers for maximum speed and to
+ prevent cores from things that shouldn't normally happen.
+
+ *
+
+ --enable-small-net - Tunes the server for smaller networks by
+ reducing the startup memory footprint. This should really only be
+ used for *small* networks, as this tends to be a performance hit
+ on larger networks.
+
+ *
+
+ --with-nicklen - Sets the maximum NICK length. Note that this
+ must be consistant across your entire network.
+
+ *
+
+ --with-maxclients - Sets the maximum number of clients support by
+ the server. Note that this also twiddles the HARD_FDLIMIT_ define
+ so it is no longer necessary to modify include/config.h for this.
+ If HARD_FDLIMIT_ ends up being larger that FD_SETSIZE when using
+ select() for your I/O loop, s_bsd_select.c will refuse to compile
+ (and tell you to use poll instead). Take this error's advice and
+ use --enable-poll or something a bit more efficient. You'll be
+ happier at the end of the day for it.
+
+ 3.
+
+ Look over the "include/config.h" file. This allows you to change the
+ few remaining hard coded options of how the ircd will operate. Most
+ admins will only have to change a few settings. USE_SYSLOG is the only
+ one that most admins will need to edit.
+
+ Note: Note that you must have permission by the sysadmin to send
+ messages to the system log files.
+
+ All other settings in config.h are not necessary to edit.
+
+ 4.
+
+ make should build ircd.
+
+ 5.
+
+ make install will install the server, modules(1), and tools in the
+ path defined in config.h and the prefix specified when configure was
+ run.
+
+ (1) Unless the server was compiled without module support.
+
+ 6.
+
+ If you wish to enable the user log, oper log, and failed oper log,
+ issue these commands at the shell prompt (in the prefix directory)
+
+ $ touch logs/userlog
+ $ touch logs/operlog
+ $ touch logs/foperlog
+
+ Note: If you use different names in ircd.conf, you must 'touch' the
+ specific names.
+
+ 7.
+
+ If you are upgrading from Hybrid 5 or Hybrid 6, the config file has
+ changed drastically...
+
+ There is a utility to convert your old config file to the new format.
+ In prefix/bin there is something called "convertconf". Its usage is:
+ ./convertconf (old config file to convert) (converted file name)
+
+ Convertconf will NOT convert I: lines. You must use "convertilines"
+ for this which contains a much superior method of conversion and
+ will group I: together under one auth {};.
+
+ Once this is done, move your new config to prefix/etc/ircd.conf and
+ EDIT IT! There are still things that need changing in the config,
+ including the fact that classes MUST be above auth/connect blocks!
+
+ 8.
+
+ If you are upgrading from Hybrid 5 or Hybrid 6, the kline file has
+ also changed...
+
+ There is a utility to convert the old kline configuration file to the
+ new format. In prefix/bin there is a program called "convertklines".
+ Its usage is: ./convertklines (old kline.conf filename) (new
+ kline.conf filename) (dline.conf filename).
+
+ Once this is done, move the new files into the prefix/etc/ directory
+ under their proper names. By default, the kline file is named
+ kline.conf and the dline file is named dline.conf.
+
+ ----------------------------------------------------------------------
+
+ HOW TO GET HELP
+
+ Send Check or Money Order to... just kidding! You're on your own for
+ support. Try asking other ircd-ratbox admins on EFnet if you can't fix it
+ yourself. If you do fix anything, however, please send context or unified
+ diffs to ircd-ratbox@lists.ratbox.org so the fixes can be incorporated into
+ the next release of ircd-hybrid. If ratbox crashes on you, PLEASE contact
+ ircd-ratbox@lists.ratbox.org ASAP with a backtrace of the core.
+
+ DISCUSSION: There is a mailing list for discussion of ratbox issues,
+ To subscribe, visit:
+ http://lists.ratbox.org/cgi-bin/mailman/listinfo/ircd-ratbox
+
+ ----------------------------------------------------------------------
+
+ NOTES
+
+ The best way to get a backtrace of the core is to follow this sequence of
+ instructions:
+
+ 1.
+
+ Change to the directory containing the core file
+
+ 2.
+
+ Run gdb on the binary and the core file. With an unmodified ircd-ratbox
+ installation, an example command line is below (in the /usr/local/ircd
+ directory)
+
+ $ gdb bin/ircd ircd.core
+
+ 3.
+
+ At the "(gdb)" prompt, enter the command "bt"
+
+ 4.
+
+ Save the output of the backtrace command and send it to
+ ircd-ratbox@lists.ratbox.org
+
+ 5.
+
+ Be sure to save the ircd binary, the modules, and the core file in a
+ safe place in case the developers need to look deeper than a backtrace
+ provides.
+
+ ----------------------------------------------------------------------
+
+ OPENSSL NOTES
+
+ Older FreeBSD machines sometimes have the obsolete ports version of
+ OpenSSL libcrypto in /usr/local/lib. When configure is used with
+ --enable-openssl, and libintl is detected in /usr/local/lib, the
+ /usr/local/lib directory will be searched BEFORE the system /usr/lib for
+ libraries by the linker. The linker may try to link to the old
+ /usr/local/lib libcrypto instead of the system /usr/lib libcrypto. Some
+ older versions may cause error messages similar to the following:
+
+ gcc -g -O2 -DIRCD_PREFIX=\"/home/wcampbel/ircd\" -Wl,-export-dynamic
+ -L/usr/local/lib -o ircd blalloc.o channel.o vchannel.o class.o client.o
+ dline_conf.o event.o fdlist.o fileio.o hash.o irc_string.o ircd.o ircdauth.o
+ ircd_signal.o linebuf.o list.o listener.o m_error.o match.o memdebug.o
+ modules.o motd.o mtrie_conf.o oldparse.o numeric.o packet.o parse.o res.o rsa.o
+ restart.o s_auth.o s_bsd.o s_bsd_kqueue.o s_conf.o s_debug.o s_gline.o s_log.o
+ s_misc.o s_serv.o s_stats.o s_user.o scache.o send.o sprintf_irc.o tools.o
+ whowas.o lex.yy.o y.tab.o version.o -lintl -ldescrypt -lcrypto -lfl
+ rsa.o: In function `get_randomness':
+ /home/wcampbel/dev/ircd-ratbox/src/rsa.c(.text+0x60): undefined reference to
+ `RAND_pseudo_bytes'
+ /usr/local/lib/libcrypto.so: undefined reference to `ERR_load_RSAREF_strings'
+ /usr/local/lib/libcrypto.so: undefined reference to `RSA_PKCS1_RSAref'
+ *** Error code 1
+
+ If this is the case, you may need to rerun configure without the
+ --enable-openssl option, manually edit src/Makefile and modules/Makefile
+ to put -L/usr/lib before the -L/usr/local/lib in LDFLAGS, or remove the
+ old OpenSSL from /usr/local, and recompile all applications that use
+ libcrypto to use the system one.
341 LICENSE
@@ -0,0 +1,341 @@
+# $Id: LICENSE 6 2005-09-10 01:02:21Z nenolod $
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
147 Makefile.in
@@ -0,0 +1,147 @@
+#************************************************************************
+#* IRC - Internet Relay Chat, Makefile
+#* Copyright (C) 1990, Jarkko Oikarinen
+#*
+#* This program is free software; you can redistribute it and/or modify
+#* it under the terms of the GNU General Public License as published by
+#* the Free Software Foundation; either version 1, or (at your option)
+#* any later version.
+#*
+#* This program is distributed in the hope that it will be useful,
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#* GNU General Public License for more details.
+#*
+#* You should have received a copy of the GNU General Public License
+#* along with this program; if not, write to the Free Software
+#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#*
+#* $Id: Makefile.in 1347 2006-05-17 14:49:13Z nenolod $
+#*/
+
+RM=@RM@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+mandir = @mandir@
+moduledir = @moduledir@
+helpdir = @helpdir@
+confdir = @confdir@
+logdir = @logdir@
+
+# Default CFLAGS
+# CFLAGS = -g -O2 -DNDEBUG
+CFLAGS = @CFLAGS@
+# Developers CFLAGS
+#CFLAGS= -g -O2 -Wunused -Wall -ggdb -pedantic -Wshadow -Wmissing-declarations
+
+# Default make flags - you may want to uncomment this on a multicpu machine
+#MFLAGS = -j 4
+
+#
+# For developers
+#CFLAGS= -g -O2 -Wall
+
+# You may need to define the FD_SETSIZE in order to overrule
+# the system one.
+#CFLAGS= -DNDEBUG -g -O2 -D"FD_SETSIZE=1024"
+SHELL=/bin/sh
+SUBDIRS=modules extensions libcharybdis src tools servlink doc help
+CLEANDIRS = ${SUBDIRS}
+RSA_FILES=rsa_respond/README rsa_respond/respond.c rsa_respond/Makefile
+
+MAKE = make ${MFLAGS}
+
+all: build
+
+
+autoconf: configure.ac
+ autoconf
+ autoheader
+ ${RM} -f config.cache
+
+build:
+ -@if [ ! -f include/setup.h ] ; then \
+ echo "Hmm...doesn't look like you've run configure..."; \
+ echo "Doing so now."; \
+ sh configure; \
+ fi
+ @for i in $(SUBDIRS); do \
+ echo "build ==> $$i";\
+ cd $$i;\
+ ${MAKE} build || exit; cd ..;\
+ done
+
+clean:
+ ${RM} -f *~ core rsa_respond.tar rsa_respond.tar.gz
+ @for i in $(CLEANDIRS); do \
+ echo "clean ==> $$i";\
+ cd $$i;\
+ ${MAKE} clean; cd ..;\
+ done
+ -@if [ -f include/setup.h ] ; then \
+ echo "To really restart installation, make distclean" ; \
+ fi
+
+distclean:
+ ${RM} -f Makefile *~ *.rej *.orig core ircd.core
+ ${RM} -f config.status config.cache config.log
+ cd include; ${RM} -f setup.h *~ *.rej *.orig ; cd ..
+ @for i in $(CLEANDIRS); do \
+ echo "distclean ==> $$i";\
+ cd $$i;\
+ ${MAKE} distclean; cd ..;\
+ done
+
+depend:
+ @for i in $(SUBDIRS); do \
+ echo "depend ==> $$i";\
+ cd $$i;\
+ ${MAKE} depend; cd ..;\
+ done
+
+lint:
+ @for i in $(SUBDIRS); do \
+ echo "lint ==> $$i";\
+ cd $$i;\
+ ${MAKE} lint; cd ..;\
+ done
+
+install-mkdirs:
+ @echo "ircd: setting up ircd directory structure"
+ -@if test ! -d $(DESTDIR)$(prefix); then \
+ mkdir $(DESTDIR)$(prefix); \
+ fi
+ -@if test ! -d $(DESTDIR)$(bindir); then \
+ mkdir $(DESTDIR)$(bindir); \
+ fi
+ -@if test ! -d $(DESTDIR)$(confdir); then \
+ mkdir $(DESTDIR)$(confdir); \
+ fi
+ -@if test ! -d $(DESTDIR)$(mandir); then \
+ mkdir $(DESTDIR)$(mandir); \
+ fi
+ -@if test ! -d $(DESTDIR)$(moduledir); then \
+ mkdir $(DESTDIR)$(moduledir); \
+ fi
+ -@if test ! -d $(DESTDIR)$(helpdir); then \
+ mkdir $(DESTDIR)$(helpdir); \
+ fi
+ -@if test ! -d $(DESTDIR)$(logdir); then \
+ mkdir $(DESTDIR)$(logdir); \
+ fi
+
+install: install-mkdirs all
+ @for i in $(SUBDIRS); do \
+ echo "install ==> $$i";\
+ cd $$i;\
+ ${MAKE} install; \
+ cd ..; \
+ done
+
+rsa_respond:
+ @cd tools;\
+ echo "Creating rsa_respond.tar.gz";\
+ tar cf ../rsa_respond.tar $(RSA_FILES);\
+ cd ..;\
+ gzip rsa_respond.tar
336 NEWS
@@ -0,0 +1,336 @@
+This is charybdis 2.1.2, Copyright (c) 2005-2006 Charybdis team.
+See LICENSE for licensing details (GPL v2).
+
+-- charybdis-2.1.2
+
+- Fix bug that could cause all hostmangled users to be exempted when a
+ single ban exception existed on a channel.
+- Tweak \s code a little.
+- Add a minor clarification to the SGML docs.
+- Avoid truncation in ip_cloaking (by removing components on the other side).
+ Note that this may cause channel +bqeI modes set on such very long hosts
+ to no longer match.
+
+-- charybdis-2.1.1
+
+- Search the shortest list (user's/channel's) when looking up channel
+ memberships.
+- Make the SID-collision notice look right under all conditions.
+- Move kills from services from +s to +k snomask.
+- When no_tilde is present on an auth{} block, check the non-tilde version
+ of the user@host against k:lines as well.
+- Put full reason in the SQUIT reason when a server is rejected for
+ insufficient parameters being passed to a command.
+- Don't redirect users to an existing domain, irc.fi.
+- Improve communication of servlink-related error messages.
+
+-- charybdis-2.1.0
+
+- Our official website is now http;//www.ircd-charybdis.org/.
+- Make RPL_ISUPPORT (005 numeric) modularizable.
+- Also do forwarding if the channel limit (+l) is exceeded.
+- Don't count opers on service{} servers in /lusers.
+- Allow servers to send to @#chan and +#chan.
+- Allow +S clients (services) to send to channels and @/+ channels always.
+- Allow normal match() on IP address also in /masktrace.
+- Add new testmask from ratbox 2.2. Allows matches on nick, ip and gecos
+ in addition to user and host, and is fully analogous to masktrace.
+ The numeric has changed from 724 to 727 and fields in it have changed.
+- Show IP addresses to opers in /whowas.
+- Add extb_extgecos extban option ($x:nick!user@host#gecos), from sorcery
+ modules.
+- Add extb_canjoin extban option ($j:#channel), matches if the user is banned
+ from the other channel.
+- Allow opers to /who based on realhost.
+- Allow opers to /masktrace, /testmask based on realhost.
+- Add general::operspy_dont_care_user_info, limits operspy accountability to
+ channel-related information.
+- Make host mangling more reliable.
+- Prevent ban evasion by enabling/disabling host mangling.
+- Add EUID, sends real host and services account in the same command as other
+ user information.
+- Make it possible to send CHGHOST without ENCAP (fixes problems with old
+ services).
+- Allow service{} servers to manipulate the nick delay table (for "nickserv
+ enforcement", aka SVSHOLD).
+- Send server notices about connections initiated by remote opers network wide.
+- Fix too early truncation of JOIN channel list.
+- Make the newconf system available to modules.
+- Add /stats s to the hurt module to list active hurts.
+- Add general::servicestring, shown in /whois for opered services (+oS).
+- Show real host/IP behind dynamic spoof in /whois to the user themselves
+ and opers.
+- Document option to disable nick delay.
+- Improve logging of server connections.
+- Clean up handling of hostnames in connect blocks.
+- Remove support for resolving ip6.int, people should be using ip6.arpa.
+- Unbreak --disable-balloc (useful for debugging with tools like valgrind).
+- Make Solaris 10 I/O ports code compile.
+- Add WEBIRC module to allow showing the real host/IP of CGI:IRC users.
+- Comment out blacklist{} block in example confs, as AHBL requires
+ notification before use.
+- Fix some bugs relating to the resolver.
+
+-- charybdis-2.0.0
+
+- Replace ADNS with a new smaller resolver from ircu and hybrid.
+- Make services shortcuts (/chanserv etc) configurable in ircd.conf.
+- Add extban: extensible +bqeI matching via modules. Syntax is
+ $<type>[:<data>]. By default no modules are loaded.
+- Add DNS blacklist checking.
+- Change operator{} block user@host from host to orighost. This means that
+ services/+h spoofs do not work in operator{} blocks; auth{} spoofs still
+ work. Check your operator{} blocks!
+- Split contrib/ into extensions/ and unsupported/.
+- Change CHGHOST do show the change to all other clients on common channels
+ with quit/join/mode.
+- Add /rehash nickdelay to clear out the nickdelay tables.
+- Glines are now disabled in the example confs.
+- Show more error messages on stderr.
+- Add OMODE command to extensions/ for easier oper mode hacking.
+- Add HURT system to extensions/; this shuns clients matching certain host/ip
+ unless and until they identify to services. Mainly intended for SorceryNet.
+- Show SASL success and failure counts in /stats t.
+- Allow more frequent autoconnects to servers.
+- Messaging services by nickname no longer uses target change slots.
+- Only accept SASL from servers in a service{} block.
+- New auth{} flag need_sasl to reject users who haven't done SASL
+ authentication.
+- Expand blah.blah and blah:blah to *!*@... instead of ...!*@* for bans
+- Don't allow opers to fake locops/operwall to +w.
+- Documentation updates.
+- Many bugfixes.
+
+-- charybdis-1.1.0
+
+- Implement SAFELIST.
+- Incorporate ircu's match() algorithm.
+- Improve usermode modularization.
+- Seperate server notices into a seperate snomask, freeing up many
+ usermodes to be used.
+- Add support for SIGNON originating from Hyperion2.
+- Modularize many server notices into seperate modules.
+- Add hooks for can_join and can_create_channel.
+- Add support for SASL authentication.
+- Add introduce_user hook for adding new messages when a user is bursted.
+- Move a large part of the ircd into libcharybdis.
+- Don't complain "unknown user mode" if a user tries to unset
+ a mode they do not have access to.
+- Update our challenge specification to the challenge implementation in
+ ratbox 2.2 for interoperability.
+- Make +f notices network-wide (local host, global host,
+ global user@host, local class), other notices tied to +f remain local.
+- Allow ENCAP REALHOST outside of netburst.
+- Add general::global_snotices option to make server notices be
+ network-wide or not.
+- Add sno_farconnect.c to contrib, provides farconnect support.
+ Could be useful for BOPM.
+- Add sno_routing.c which displays information about netsplits, netjoins
+ and the clients affected by them.
+- Add CHANTRACE and TRACEMASK commands from ratbox 3.0
+- Use IsOperAdmin() instead of IsAdmin() when sending admin-only messages,
+ that way hidden admins get them too.
+- Add m_error to core_module_table, somehow it was missing.
+- Correct a format string bug that occurs when a read error is
+ received.
+- Add some logging in places where we drop servers and only notify
+ server operators.
+- Track hostmask limits based on a client's original host, if
+ available.
+- Move HIDE_SPOOF_IPS into the general {} block in ircd.conf
+
+-- charybdis-1.0.3
+
+- Fix /invite UID leak. (Found by logiclrd@EFnet.)
+- Incorporate ratbox bugfixes for the MONITOR system.
+- Made show_ip() less braindead.
+- Show real errno if we fail to connect to a server.
+- Don't disclose server IP's when a connection fails.
+- Do not show the channels a service is sitting in.
+- Reverted the aline code from hybrid-7.2
+- Make sure TS6 services are recognized properly if connected remotely.
+- Tweak something in services support for cyrix boxes.
+
+-- charybdis-1.0.2
+
+- Fix propagation of an empty SJOIN (permanant channels).
+- Fix an exploit involving a malformed /trace request.
+- Don't display a blank RPL_WHOISCHANNELS in a remote whois request.
+- Allow modules to provide new usermodes.
+- On a nickname collision, change the collided nick to their unique ID,
+ if general::collision_fnc is enabled in the config.
+- Don't allow UID lookups in /monitor + and /monitor s
+- Fix a garbage issue with channel mode +j.
+- Apply proper capability flags to the proper server in me_gcap().
+- Use find_named_person() instead of find_person() in a nick collision.
+- Prevent UID disclosure in cmode setting.
+- Prevent UID disclosure to remote clients in /kick.
+- Do not allow users to query via /whois <server> <UID>.
+- Don't allow local users to use UID's in local usermode changes.
+- Propagate +q lists on netjunction.
+- Clear +q lists on a lowerTS SJOIN.
+- Ported a generic k/d/x-line parser from hybrid-7.2 which resulted in
+ duplicate code reduction.
+- Fix linebuf raw code to not truncate lines longer than 512 bytes;
+ improves ziplink reliability on net junction.
+- Use find_named_person() vs find_person() in services alias code.
+- Fix issue where channel forwarding token can be lost on net junction.
+- Fix empty channel desync issues involving +P.
+- Remove unused non-ENCAP CHGHOST support.
+- Use TS6 form for SQUIT wallops.
+- Propagate nickname changes for remote clients in TS6 form if possible,
+ even if sent in TS5 format.
+- Only clear oper_only_umodes for local clients on deoper.
+
+-- charybdis-1.0.1
+
+- Display logged in status on non-local clients too.
+- Documentation updates
+- Fix a bug with forward target authorization.
+- Fix a bug with mode propagation (+Q/+F).
+- Change ERR_NOSUCHNICK to ERR_SERVICESOFFLINE in services aliases.
+- Add remote rehashing.
+- Document service { } blocks (u:lines on ircu).
+- Document identify_service and identify_command in reference.conf.
+
+-- charybdis-1.0
+- Implement channel mode +L for channel list limit exemptions.
+- Implement channel mode +P primarily as a status mode, permanant
+ channel -- this is usually enforced via services registrations.
+- Change behaviour of /stats p: now displays all staff members instead
+ of local ones only.
+- Make oper_list global, add local_oper_list for local traffic.
+- Strip control codes from parts and quits.
+- Add channel mode +c which strips control codes from messages sent to
+ the channel.
+- Add channel mode +g which enables free use of the /invite command.
+- Add channel mode +z which sends rejected messages to channel ops.
+ Could be useful for Q&A sessions or other similar events.
+- Add channel quietmasks. These are recommended over the use of channel
+ bans used to remove a user's ability to participate in the channel.
+- Add channel join throttling mode, +j. Used to throttle channel join
+ traffic, i.e. join/part flood attacks. Syntax: +j <joins>:<timeslice>
+- Improvements to channel_modes(), from shadowircd -- allows for
+ better construction of the mode string.
+- Use the undernet throttle notice instead of bancache message when
+ dealing with rejected clients. (stolen from ircu2.10.12)
+- Add channel forwarding, via channel mode +f, behaves similarly to
+ dancer-ircd version.
+- Update example.conf to reflect AthemeNET changes. Original ratbox
+ config is now reference.conf.
+- Services account names are now tracked globally.
+- Add channel mode +Q which disables the effects of channel forwarding
+ on a temporary basis.
+- Add channel mode +F which allows anybody to disable forwarding target
+ authorisation, voluntarily on their channels.
+- Make wallops behave like normal wallops.
+- Add services aliases: /ns, /cs, /os, /nickserv, /chanserv, /operserv.
+- Add simple hack that enables use of server password for automatic
+ identify.
+
+-- ircd-ratbox-2.1.5+datadrain
+- fix a buffer overflow and an unterminated buffer when TS6 forces us
+ to remove bans
+- fix potential junk SJOIN generation when splitting it into multiple
+ lines
+- make servlink check for an uncompressed ERROR
+- change NICKLEN to 15.
+- change TOPICLEN to 390.
+- force services extensions to be enabled always
+- change patchlevel.h to get it's information from 'configure'
+- add m_chghost.c, ghetto rigged hostcloaking module, using elite ENCAP
+ technique
+
+-- ircd-ratbox-2.1.4
+- fix minor time bug which occurs on december 31st
+- dont drop a servers link when we get a malformed WHOIS
+- disallow commas in channel keys
+- fix compile problem with abort_list
+- fix build on darwin
+- fix compilation with gcc4
+- userhost was only allowing 4 targets instead of 5
+- invalidate channel ban cache on nickchange
+- add TARGMAX to 005, detailing maximum targets for messages
+- fix counting of clients on accept list when adding users
+- use ID instead of name when bursting SJOIN to TS6 servers
+- lower id in struct User, which was one byte bigger than it needs to be
+
+-- ircd-ratbox-2.1.3
+- removed sendq_eob as it just doesnt work on efnet
+- dont allow MONITOR from an unregistered client
+- add some uniqueness into the auth process for bopm
+- fix resvs to check whether target server is us properly
+- fix a core in cidr channel ban matching
+- raise max temptime to a year
+- fix cores when we receive extra params to NICK/UID
+- remove no_oper_resvs, add resv_exempt auth flag
+- fix flattened links
+- clean up the accept code, and dont clear a users own list of accepted
+ clients on nickchange
+- non-efnet:
+ - make services {}; blocks be displayed on stats U
+ - make services {}; blocks apply on rehash, you must now have only ONE
+ service {}; block, but you may have multiple name=""; entries within.
+ - only show services logged in info for local clients
+
+-- ircd-ratbox-2.1.2
+- fix missing end comment tag in example confs
+- fix display problem with unauthorised conn notice
+- remove some unused defines from INFO
+- fix tabs for spaces in some helpfiles
+- add in missing links_delay conf option
+- fix cores under amd64
+- disallow bans beginning with ':' over BMASK
+- disallow bans with a space in chm_ban()
+- stop counting hidden opers in stats p count output
+- match() params of remote unresv were inverted, causing it to never match
+- fix possibility of clients setting blank keys
+- fix UID problems with trace
+- raise default topiclen to 160
+- add in forced nick change for ratbox-services, when compiled with
+ --enable-services
+
+-- ircd-ratbox-2.1.1
+- remove an 005 token to hack around the parser bug
+- exempt users messaging themselves from target change
+- disallow messaging towards UIDs
+- add in doc/tgchange.txt
+- move stats L back to RPL_STATSLINKINFO
+- fix some minor auth problems
+- properly store ipv6 ips when we're compiled for v4 only
+- fix propagation of xline/resv
+- sync remote kline reasons with form used for local klines
+
+-- ircd-ratbox-2.1.0
+- no changes
+
+-- ircd-ratbox-2.1.0beta2
+- fix a few compile warnings
+- added multi-prefix clicap, for showing "@+" in NAMES/WHO replies
+- remove split_delay, make split servers now work on how many servers have
+ issued EOB, rather than how many exist.
+- server-side notify lists. See doc/monitor.txt
+- fix undline core
+- remove an unwanted space from beginning of second 005
+- fix a potential core with the patricia when removing classes
+- when we're handling global NAMES, dont output channels whose users are all
+ invisible
+
+-- ircd-ratbox-2.1.0beta1
+- No release notes, see doc/whats-new-2.1.txt
+
+--------------------------------------------------------------------------------
+
+BUGS: Major bugs in this release are listed in BUGS
+
+BUG REPORTS: If you run this code and encounter problems, you must report
+via IRC to irc.atheme.net, #athemenet-dev.
+
+Please include a gdb backtrace and keep the core file, binaries and
+modules in case the developers need them.
+
+Other files recommended for reading: BUGS, README.FIRST, INSTALL
+
+--------------------------------------------------------------------------------
+$Id: NEWS 2813 2006-12-05 13:24:19Z jilles $
+
102 README.FIRST
@@ -0,0 +1,102 @@
+If you don't read this first, we won't help you.
+:-)
+
+******************************* IMPORTANT *************************************
+
+ *********** Note for those who dont bother reading docs *****************
+ * - Reading INSTALL is now a must, as the old DPATH is now specified *
+ * when configure is run. *
+ * You now need to ./configure --prefix="/path/to/install/it" *
+ * - The old config format WILL NOT WORK. Please see doc/example.conf ! *
+ * - The old kline format WILL NOT WORK. Please use convertklines which *
+ * will be installed with your ircd! *
+ *************************************************************************
+
+ ALSO, IF YOU ARE UPGRADING YOUR CURRENT SOURCE TREE, AND YOU TRY TO BUILD
+ IN IT WITHOUT PERFORMING AT LEAST 'make clean', THINGS _WILL_ BREAK. IT IS
+ RECOMMENDED THAT YOU RUN 'make distclean' AND THEN RERUN './configure'!
+
+******************************* REQUIREMENTS **********************************
+
+Necessary Requirements:
+
+- A supported platform (look below)
+
+- A working dynamic load library, unless
+ compiling as static, without module
+ support.
+
+- A working lex. Solaris /usr/ccs/bin/lex
+ appears to be broken, on this system flex
+ should be used.
+
+
+Feature Specific Requirements:
+
+- For the SSL Challenge controlled OPER feature and encrypted server links,
+ a working OpenSSL library
+
+- For encrypted oper and (optional) server passwords, a working DES and/or
+ MD5 library
+
+*******************************************************************************
+
+- To report bugs in ircd-ratbox, send the bug report to ircd-ratbox@lists.ratbox.org
+
+- Known bugs are listed in the BUGS file
+
+- See the INSTALL document for info on configuring and compiling
+ ircd-ratbox.
+
+- Please read doc/index.txt to get an overview of the current documentation.
+
+- Old Hybrid 5/6 configuration files are no longer supported. All conf
+ files will have to be converted to the new format. A convertconf
+ utility is provided and installed into bin/.
+
+- If you are wondering why config.h is practically empty, its because many
+ things that were once in config.h are now specified in the 'general'
+ block of ircd.conf. Look at example.conf for more information about
+ these options.
+
+- The files, /etc/services, /etc/protocols, and /etc/resolv.conf, MUST be
+ readable by the user running the server in order for ircd to start.
+ Errors from adns causing the ircd to refuse to start up are often related
+ to permission problems on these files.
+
+- There is a mailing list for ircd-ratbox. To subscribe to this list
+ visit http://lists.ratbox.org/cgi-bin/mailman/listinfo/ircd-ratbox
+ Note that this list also gets the commit emails from the CVS server.
+
+- FREEBSD USERS: if you are compiling with ipv6 you may experience
+ problems with ipv4 due to the way the socket code is written. To
+ fix this you must: "sysctl net.inet6.ip6.v6only=0"
+
+- SOLARIS USERS: this code appears to tickle a bug in older gcc and
+ egcs ONLY on 64-bit Solaris7. gcc-2.95 and SunPro C on 64bit should
+ work fine, and any gcc or SunPro compiled on 32bit.
+
+- DARWIN AND MACOS X USERS: You must be using at least the December 2001
+ Development Tools from Apple to build ircd-ratbox with shared modules.
+ Before then you MUST disable shared modules, as we do not have the proper
+ flags for cc(1) prior to that point to produce shared modules.
+
+- SUPPORTED PLATFORMS: this code should compile without any warnings
+ on FreeBSD 3.x/4.x, RedHat 6.2, Debian Potato and Solaris 7/8 sparc.
+ Please let us know if you find otherwise.
+ It probably does not compile on AIX, IRIX or libc5 Linux.
+
+- TESTED PLATFORMS: The code has been tested on the following platforms, and
+ is known to run properly.
+ FreeBSD 3.x/4.x
+ Linux glibc
+ Solaris 2.6/7/8
+ OpenBSD 2.8
+ NetBSD 1.4
+
+- Please read doc/whats-new.txt for information about what is in this release
+
+- Other files recommended for reading: BUGS, INSTALL
+
+--------------------------------------------------------------------------------
+$Id: README.FIRST 1837 2006-08-22 14:05:58Z nenolod $
5 SVN-Access
@@ -0,0 +1,5 @@
+The charybdis repository is available for anonymous access:
+ svn co http://svn.atheme.org/charybdis/trunk charybdis-devel
+
+For the latest stable:
+ svn co http://svn.atheme.org/charybdis/branches/stable charybdis-stable
50 aclocal.m4
@@ -0,0 +1,50 @@
+# $Id: aclocal.m4 918 2006-02-23 18:17:21Z nenolod $ - aclocal.m4 - Autoconf fun...
+AC_DEFUN([AC_DEFINE_DIR], [
+ test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+ ac_define_dir=`eval echo [$]$2`
+ ac_define_dir=`eval echo [$]ac_define_dir`
+ $1="$ac_define_dir"
+ AC_SUBST($1)
+ ifelse($3, ,
+ AC_DEFINE_UNQUOTED($1, "$ac_define_dir"),
+ AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3))
+])
+
+AC_DEFUN([AC_SUBST_DIR], [
+ ifelse($2,,,$1="[$]$2")
+ $1=`(
+ test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+ test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
+ eval echo \""[$]$1"\"
+ )`
+ AC_SUBST($1)
+])
+
+dnl CHARYBDIS_C_GCC_TRY_FLAGS(<warnings>,<cachevar>)
+AC_DEFUN([CHARYBDIS_C_GCC_TRY_FLAGS],[
+ AC_MSG_CHECKING([GCC flag(s) $1])
+ if test "${GCC-no}" = yes
+ then
+ AC_CACHE_VAL($2,[
+ oldcflags="${CFLAGS-}"
+ CFLAGS="${CFLAGS-} ${CWARNS} $1 -Werror"
+ AC_TRY_COMPILE([
+#include <string.h>
+#include <stdio.h>
+int main(void);
+],[
+ strcmp("a","b"); fprintf(stdout,"test ok\n");
+], [$2=yes], [$2=no])
+ CFLAGS="${oldcflags}"])
+ if test "x$$2" = xyes; then
+ CWARNS="${CWARNS}$1 "
+ AC_MSG_RESULT(ok)
+ else
+ $2=''
+ AC_MSG_RESULT(no)
+ fi
+ else
+ AC_MSG_RESULT(no, not using GCC)
+ fi
+])
15,592 configure
15,592 additions, 0 deletions not shown
1,312 configure.ac
@@ -0,0 +1,1312 @@
+dnl $Id: configure.ac 2809 2006-12-05 13:18:19Z jilles $
+dnl Process this file with autoconf to produce a configure script.
+
+dnl TODO: clean up all the OpenSSL and shared module checking stuff;
+dnl the most major changes have already been made and it looks like
+dnl said functions need to be just about as complex as they already are.
+
+AC_PREREQ(2.57)
+
+dnl Sneaky way to get an Id tag into the configure script
+AC_COPYRIGHT([$Id: configure.ac 2809 2006-12-05 13:18:19Z jilles $])
+
+AC_INIT([charybdis],[2.1.2])
+
+AC_CONFIG_HEADER(include/setup.h)
+
+AC_PREFIX_DEFAULT($HOME/ircd)
+
+AC_GNU_SOURCE
+
+OLD_CFLAGS="$CFLAGS"
+dnl Checks for programs.
+AC_PROG_CC
+AC_LANG(C)
+
+dnl Make sure autoconf doesn't interfere with cflags -jmallett
+CFLAGS="$OLD_CFLAGS"
+
+dnl Check for various compilers. -jmallett
+dnl But if $CC turns out to be gcc, sure as hell it's, well, gcc. -joshk
+
+if test "$ac_cv_c_compiler_gnu" != yes; then
+
+SGS=no
+AC_MSG_CHECKING($CC -version for TenDRA or MIPSpro)
+case `$CC -version 2>&1` in
+*TenDRA*)
+ AC_MSG_RESULT([yes, TenDRA])
+ IRC_CFLAGS=""
+ CPPFLAGS="$CPPFLAGS -Ylonglong -Yansi -I/usr/include"
+ SGS=yes
+ TenDRA=yes
+;;
+*MIPSpro*)
+ AC_MSG_RESULT([yes, MIPSpro])
+ MIPSpro=yes
+ SGS=yes
+;;
+*)
+ AC_MSG_RESULT(no)
+ TenDRA=no
+ MIPSpro=no
+;;
+esac
+
+AC_MSG_CHECKING([$CC -V for Sun Workshop, Forte, HPUX or Tru64 cc])
+case `$CC -V 2>&1` in
+*Sun*WorkShop* | *Forte*Developer*)
+ AC_MSG_RESULT(Sun Workshop/Forte)
+ IRC_CFLAGS="-fast -xinline=dlinkAdd,dlinkAddBefore,dlinkAddTail,dlinkDelete,dlink_list_length,dlink_node,dlinkMoveList,_MyMalloc,_MyRealloc,_MyFree,_DupString"
+ SunWorkShop=yes
+ SGS=yes
+;;
+*Tru64*)
+ AC_MSG_RESULT(Tru64 cc)
+ IRC_CFLAGS="-O2"
+ CPPFLAGS="-I/usr/local/include"
+ Tru=yes
+;;
+*HP*ANSI*)
+ AC_MSG_RESULT(HPUX cc)
+ HPUX=yes
+ IRC_CFLAGS="+e"
+;;
+*)
+ AC_MSG_RESULT(no)
+;;
+esac
+
+fi
+
+AC_MSG_CHECKING([uname -s for Cygwin, Solaris, AIX or HPUX])
+OSNAME=`uname -s`
+case "$OSNAME" in
+ HP-UX*)
+ dnl only do this if we haven't already detected the newer one
+ dnl and we're not already using gcc
+
+ if test "$HPUX" != yes -a "$ac_cv_c_compiler_gnu" = no; then
+ AC_MSG_RESULT(assuming old HPUX with its own cc)
+ IRC_CFLAGS="$IRC_CFLAGS +e"
+ HPUX=yes
+ else
+ AC_MSG_RESULT(already using newer HPUX)
+ fi
+ ;;
+ CYGWIN*)
+ AC_MSG_RESULT(Cygwin)
+ CYGWIN=yes
+ ;;
+ SunOS*)
+ AC_MSG_RESULT(SunOS or Solaris)
+ AC_DEFINE(__EXTENSIONS__, 1, [This is needed to use strtok_r on Solaris.])
+ SUN=yes
+ ;;
+ AIX*)
+ AC_MSG_RESULT(AIX - Sorry you poor bastard..really we are)
+ IRC_CFLAGS="$IRC_CFLAGS -Wl,-brtl -Wl,-G"
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ ;;
+esac
+
+if test "$ac_cv_c_compiler_gnu" = yes; then
+ AC_MSG_CHECKING(if $CC is Apple GCC)
+
+ case `$CC -v 2>&1 | tail -n 1` in
+ *Apple*)
+ AC_MSG_RESULT(yes)
+ AppleGCC=yes
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ AppleGCC=no
+ ;;
+ esac
+
+ IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall"
+fi
+
+dnl If we support -g, use it!
+if test "$ac_cv_prog_cc_g" = yes; then
+ dnl Tru64 needs -g3 for -O2
+ if test "$Tru" = yes; then
+ IRC_CFLAGS="$IRC_CFLAGS -g3"
+ else
+ IRC_CFLAGS="$IRC_CFLAGS -g"
+ fi
+fi
+
+dnl SVR4 SGS based on what we know about the compiler -jmallett
+AC_MSG_CHECKING(if $CC supports the SVR4 SGS interfaces)
+if test "$SGS" = "yes"; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+dnl We prefer gcc -MM because it's a lot less bloated
+AC_PATH_PROG(MKDEP, mkdep)
+AC_PATH_PROG(MAKEDEPEND, makedepend)
+
+AC_MSG_CHECKING(how to generate dependency info)
+
+STDOUT="> .depend"
+
+if test "$ac_cv_c_compiler_gnu" = yes; then
+ AC_MSG_RESULT(gcc -MM)
+ MKDEP="$CC -MM"
+elif test ! -z "$MKDEP"; then
+ AC_MSG_RESULT(mkdep)
+
+ dnl Tru64's mkdep is very loud
+ if test -z "$Tru"; then
+ STDOUT=""
+ else
+ STDOUT=" 2> /dev/null"
+ fi
+elif test "$SunWorkShop" = yes; then
+ AC_MSG_RESULT($CC -xM)
+ MKDEP="$CC -xM"
+ STDOUT="> .depend 2> /dev/null"
+elif test ! -z "$MAKEDEPEND"; then
+ AC_MSG_RESULT(makedepend)
+ MKDEP="$MAKEDEPEND -f-"
+else
+ AC_MSG_RESULT([nothing suitable.. forget it!])
+ MKDEP=":"
+fi
+
+AC_SUBST(MKDEP)
+AC_SUBST(STDOUT)
+
+dnl check for /dev/null so we can use it to hold evil fd's
+AC_MSG_CHECKING([for /dev/null])
+if test -c /dev/null ; then
+ AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null])
+ AC_MSG_RESULT(yes)
+else
+ AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null])
+ AC_MSG_RESULT(no - using devnull.log)
+fi
+
+dnl jdc -- If CFLAGS is defined, best use it everywhere...
+dnl NOTE: jv says it must be added to the *END*, because things like
+dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid.
+if test ! -z "$CFLAGS"; then
+ IRC_CFLAGS="$IRC_CFLAGS $CFLAGS"
+fi
+
+AC_ISC_POSIX
+AC_C_INLINE
+AC_PROG_GCC_TRADITIONAL
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+AC_PATH_PROG(RM, rm)
+AC_PATH_PROG(CP, cp)
+AC_PATH_PROG(MV, mv)
+AC_PATH_PROG(LN, ln)
+AC_PATH_PROG(SED, sed)
+AC_PATH_PROG(AR, ar)
+AC_PATH_PROG(LD, ld)
+AC_PATH_PROG(RANLIB, ranlib)
+AC_PATH_PROG(TOUCH, touch)
+
+AC_PROG_YACC
+
+dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found
+if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then
+ AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc])
+fi
+
+AC_PROG_LEX
+
+if test "$LEX" = ":"; then
+ AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.])
+fi
+
+dnl use directory structure of cached as default (hack)
+if test "$libexecdir" = '${exec_prefix}/libexec' &&
+ test "$localstatedir" = '${prefix}/var'; then
+ libexecdir='${bindir}'
+ localstatedir='${prefix}'
+fi
+
+dnl Checks for header files.
+AC_HEADER_STDC
+
+AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h])
+
+dnl Stuff that the memory manager (imalloc) depends on
+dnl ==================================================
+
+AC_C_CONST
+if test "$ac_cv_header_machine_endian_h" = "no" ; then
+ AC_C_BIGENDIAN
+fi
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
+
+dnl Memory manager
+dnl ==============
+
+AC_MSG_CHECKING([the system's memory page size])
+pagesize="no"
+AC_TRY_RUN([
+#include <stdio.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+int main(void) {
+ FILE *fp = fopen("conftest.malloc", "w");
+
+ if (fp != NULL) {
+ fprintf(fp, "%d\n", getpagesize());
+ fclose(fp);
+ } else
+ exit(1);
+ exit(0);
+}],[
+if test -f "conftest.malloc" ; then
+ pagesize=`cat conftest.malloc`
+fi
+])
+if test "$pagesize" != "no" ; then
+ AC_MSG_RESULT($pagesize)
+else
+ if test "$ac_cv_sizeof_int" = "4" ; then
+ pagesize=4096
+ else
+ pagesize=8192
+ fi
+ AC_MSG_RESULT([$pagesize (guessing)])
+fi
+AC_DEFINE_UNQUOTED(MALLOC_PAGESIZE, $pagesize,
+ [the system's memory page size])
+
+dnl Networking Functions
+dnl ====================
+
+AC_SEARCH_LIBS(socket, socket, , [AC_MSG_ERROR([You have no socket()! Aborting.])])
+
+dnl SunOS/Solaris required libnsl for inet_ntoa()
+if test x"$SUN" = xyes; then
+ AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
+fi
+
+AC_CHECK_MEMBER([struct sockaddr.sa_len], [AC_DEFINE(SOCKADDR_IN_HAS_LEN, 1, [Define to 1 if sockaddr has a 'sa_len'
+member.])],,[[#include <sys/types.h>
+#include <sys/socket.h>
+]])
+
+AC_CHECK_TYPE(socklen_t, ,
+[AC_DEFINE([socklen_t], [unsigned int],
+[If we don't have a real socklen_t, unsigned int is good enough.])],
+[#include <sys/types.h>
+#include <sys/socket.h>])
+
+AC_ARG_ENABLE(ipv6,
+AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
+
+if test $ipv6 != yes; then
+ have_v6="no"
+else
+AC_MSG_CHECKING([for core IPv6 support])
+
+AC_COMPILE_IFELSE(
+[AC_LANG_PROGRAM(
+ [[#define IN_AUTOCONF
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>]],
+ [[struct sockaddr_in6 s;
+ s.sin6_family = 0;]]
+ )],
+[
+ if test "$CYGWIN" = "yes"; then
+ AC_MSG_RESULT([no, Cygwin's IPv6 is incomplete])
+ have_v6=no
+ else
+ have_v6=yes
+ AC_DEFINE(IPV6, 1, [Define if IPv6 support is present and available.])
+ AC_MSG_RESULT(yes)
+ AC_MSG_CHECKING([for struct in6addr_any])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#define IN_AUTOCONF
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>]],
+ [[struct in6_addr a = in6addr_any;]]
+ )],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_DEFINE(NO_IN6ADDR_ANY, 1, [Define to 1 if your system has no in6addr_any.])
+ inet_misc=1
+ ]
+ )
+ fi
+],
+[AC_MSG_RESULT(no)
+have_v6="no"])
+fi
+
+AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
+
+CRYPT_LIB=$ac_cv_search_crypt
+
+if test "$CRYPT_LIB" = "none required"; then
+ unset CRYPT_LIB
+elif test "$CRYPT_LIB" = no; then
+ unset CRYPT_LIB
+fi
+
+AC_SUBST(CRYPT_LIB)
+
+if test "$ac_cv_header_sys_wait_h" = yes -o "$ac_cv_header_wait_h" = yes; then
+ VICONF=viconf
+ dnl We need one of the above to build viconf. Just a sanity check,
+ dnl we don't want to stop people from building the rest of ircd
+ dnl just because they can't build viconf.
+else
+ VICONF=""
+fi
+
+AC_SUBST(VICONF)
+
+dnl See whether we can include both string.h and strings.h.
+AC_CACHE_CHECK([whether string.h and strings.h may both be included],
+gcc_cv_header_string,
+[
+ AC_COMPILE_IFELSE(
+ [#include <string.h>
+ #include <strings.h>],
+ [gcc_cv_header_string=yes],
+ [gcc_cv_header_string=no])
+])
+
+if test "$gcc_cv_header_string" = "yes"; then
+ AC_DEFINE(STRING_WITH_STRINGS, 1, [Define to 1 if string.h may be included along with strings.h])
+fi
+
+AC_C_BIGENDIAN
+
+dnl Check for stdarg.h - if we can't find it, halt configure
+AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - ircd-ratbox will not compile without it **])])
+
+dnl Checks for the existence of strlcat, strlcpy, basename...
+dnl This more reliable test only works with gcc though.
+
+if test "$ac_cv_c_compiler_gnu" = yes; then
+
+AC_MSG_CHECKING(for strlcpy)
+save_CFLAGS=$CFLAGS
+CFLAGS="$CFLAGS -Wimplicit -Werror"
+
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ #include <stdlib.h>]],
+ [[char *a = malloc(6);
+ strlcpy(a, "hello", 6);]]
+ )],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_STRLCPY, 1, [Define if strlcpy is available (most BSDs.)])],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING(for strlcat)
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ #include <stdlib.h>]],
+ [[char *a = malloc(6);
+ a[0] = '\0';
+ strlcat(a, "hello", 6);]]
+ )],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available (most BSDs.)])],
+ [AC_MSG_RESULT(no)]
+)
+
+CFLAGS=$save_CFLAGS
+
+else
+
+dnl Better than nothing. The more complicated test above probably fixes powerpc,
+dnl so who cares.
+
+AC_CHECK_FUNCS([strlcat strlcpy])
+
+fi
+
+AC_CHECK_TYPE([u_int32_t], [],
+[
+ AC_CHECK_TYPE([uint32_t],
+ [
+ AC_DEFINE(u_int32_t, [uint32_t], [If system does not define u_int32_t, define a reasonable substitute.])
+ ],
+ [
+ AC_MSG_WARN([system has no u_int32_t or uint32_t, default to unsigned long int])
+ AC_DEFINE(u_int32_t, [unsigned long int], [If system does not define u_int32_t, define to unsigned long int here.])
+ ])
+])
+
+AC_CHECK_TYPE([u_int16_t], [],
+[
+ AC_CHECK_TYPE([uint16_t],
+ [
+ AC_DEFINE(u_int16_t, [uint16_t], [If system does not define u_int16_t, define a usable substitute])
+ ],
+ [
+ AC_MSG_WARN([system has no u_int16_t or uint16_t, default to unsigned short int])
+ AC_DEFINE(u_int16_t, [unsigned short int], [If system does not define u_int16_t, define a usable substitute.])
+ ])
+])
+
+AC_CHECK_TYPE([in_port_t], [],
+[AC_DEFINE(in_port_t, [u_int16_t], [If system does not define in_port_t, define it to what it should be.])],
+[[#include <sys/types.h>
+#include <netinet/in.h>]])
+
+AC_CHECK_TYPE([sa_family_t], [],
+[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])],
+[[#include <sys/types.h>
+#include <sys/socket.h>]])
+
+AC_CHECK_TYPES([uintptr_t])
+
+dnl check for various functions...
+AC_CHECK_FUNCS([socketpair vsnprintf mmap gettimeofday strdup strndup ])
+
+AC_FUNC_ALLOCA
+
+dnl Specialized functions checks
+dnl ============================
+
+dnl check for nanosleep
+AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep,
+ LIBS="${LIBS} -lrt",
+ [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4"
+ )])])
+if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno
+then
+ AC_MSG_RESULT("nanosleep not found..using select for delay")
+else
+ AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists])
+fi
+
+dnl OpenSSL support
+AC_MSG_CHECKING(for OpenSSL)
+AC_ARG_ENABLE(openssl,
+[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).])
+AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])],
+[cf_enable_openssl=$enableval],
+[cf_enable_openssl="auto"])
+
+if test "$cf_enable_openssl" != "no" ; then
+ cf_openssl_basedir=""
+ if test "$cf_enable_openssl" != "auto" &&
+ test "$cf_enable_openssl" != "yes" ; then
+ dnl Support for --enable-openssl=/some/place
+ cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`"
+ else
+ dnl Do the auto-probe here. Check some common directory paths.
+ for dirs in /usr/local/ssl /usr/pkg /usr/local \
+ /usr/local/openssl ; do
+ if test -f "${dirs}/include/openssl/opensslv.h" ; then
+ cf_openssl_basedir="${dirs}"
+ break
+ fi
+ done
+ unset dirs
+ fi
+ dnl Now check cf_openssl_found to see if we found anything.
+ if test ! -z "$cf_openssl_basedir"; then
+ if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then
+ SSL_INCLUDES="-I${cf_openssl_basedir}/include"
+ SSL_LIBS="-L${cf_openssl_basedir}/lib"
+ else
+ dnl OpenSSL wasn't found in the directory specified. Naughty
+ dnl administrator...
+ cf_openssl_basedir=""
+ fi
+ else
+ dnl Check for stock FreeBSD 4.x and 5.x systems, since their files
+ dnl are in /usr/include and /usr/lib. In this case, we don't want to
+ dnl change INCLUDES or LIBS, but still want to enable OpenSSL.
+ dnl We can't do this check above, because some people want two versions
+ dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl)
+ dnl and they want /usr/local/ssl to have preference.
+ if test -f "/usr/include/openssl/opensslv.h" ; then
+ cf_openssl_basedir="/usr"
+ fi
+ fi
+
+ dnl If we have a basedir defined, then everything is okay. Otherwise,
+ dnl we have a problem.
+ if test ! -z "$cf_openssl_basedir"; then
+ AC_MSG_RESULT($cf_openssl_basedir)
+ cf_enable_openssl="yes"
+ else
+ AC_MSG_RESULT([not found. Specify a correct path?])
+ cf_enable_openssl="no"
+ fi
+ unset cf_openssl_basedir
+else
+ dnl If --disable-openssl was specified
+ AC_MSG_RESULT(disabled)
+fi
+
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
+save_LIBS="$LIBS"
+LIBS="$LIBS $SSL_LIBS"
+if test "$cf_enable_openssl" != no; then
+ dnl Check OpenSSL version (must be 0.9.6 or above!)
+ AC_MSG_CHECKING(for OpenSSL 0.9.6 or above)
+ AC_RUN_IFELSE(
+ AC_LANG_PROGRAM(
+ [#include <openssl/opensslv.h>
+ #include <stdlib.h>],
+ [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000)
+ exit(0); else exit(1);]]),
+ cf_openssl_version_ok=yes,
+ cf_openssl_version_ok=no,
+ cf_openssl_version_ok=no)
+
+ if test "$cf_openssl_version_ok" = yes; then
+ AC_MSG_RESULT(found)
+
+ dnl Work around pmake/gmake conditional incompatibilities
+ AC_SUBST(ENCSPEED, encspeed)
+
+ dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers
+ CPPFLAGS="$CPPFLAGS $SSL_LIBS"
+ AC_CHECK_LIB(crypto, RSA_free)
+ SSL_LIBS="$SSL_LIBS -lcrypto"
+ SSL_SRCS_ENABLE='$(SSL_SRCS)'
+ else
+ AC_MSG_RESULT(no - OpenSSL support disabled)
+ fi
+fi
+
+CPPFLAGS="$save_CPPFLAGS"
+LIBS="$save_LIBS"
+
+dnl End OpenSSL detection
+
+
+dnl Specialized functions and libraries
+dnl ===================================
+
+AC_ARG_WITH(zlib-path,
+AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]),
+[LIBS="$LIBS -L$withval"],)
+
+AC_ARG_ENABLE(zlib,
+AC_HELP_STRING([--disable-zlib],[Disable ziplinks support]),
+[zlib=$enableval],[zlib=yes])
+
+if test "$zlib" = yes; then
+
+AC_CHECK_HEADER(zlib.h, [
+ AC_CHECK_LIB(z, zlibVersion,
+ [
+ AC_SUBST(ZLIB_LD, -lz)
+ AC_DEFINE(HAVE_LIBZ, 1, [Define to 1 if zlib (-lz) is available.])
+ ], zlib=no)
+], zlib=no)
+
+fi
+
+dnl IO Loop Selection
+dnl =================
+
+AC_ARG_ENABLE(poll, AC_HELP_STRING([--enable-poll],[Force poll() usage.]),
+[ if test $enableval = yes; then
+ SELECT_TYPE_EXPLICIT="poll"
+ else
+ use_poll=no
+ fi
+],)
+
+AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select],[Force select() usage.]),
+[ if test $enableval = yes; then
+ SELECT_TYPE_EXPLICIT="select"
+ else
+ use_select=no
+ fi
+],)
+
+AC_ARG_ENABLE(kqueue, AC_HELP_STRING([--enable-kqueue],[Force kqueue() usage.]),
+[ if test $enableval = yes; then
+ SELECT_TYPE_EXPLICIT="kqueue"
+ else
+ use_kqueue=no
+ fi
+],)
+
+AC_ARG_ENABLE(devpoll,AC_HELP_STRING([--enable-devpoll],[Force usage of /dev/poll.]),
+[ if test $enableval = yes; then
+ SELECT_TYPE_EXPLICIT="devpoll"
+ dnl These need to be defined or not defined
+ AC_CHECK_HEADERS([sys/devpoll.h devpoll.h])
+ else
+ use_devpoll=no;
+ fi
+],)
+
+AC_ARG_ENABLE(epoll, AC_HELP_STRING([--enable-epoll],[Force sys_epoll usage (Linux only).]),
+[ if test $enableval = yes; then
+ SELECT_TYPE_EXPLICIT="epoll"
+ else
+ use_epoll=no
+ fi
+],)
+
+dnl **********************************************************************
+dnl Check for --with-confdir
+dnl **********************************************************************
+
+AC_MSG_CHECKING([whether to modify confdir])
+AC_ARG_WITH(confdir,
+AC_HELP_STRING([--with-confdir=DIR],
+ [Directory to install config files.]),
+ [ confdir=`echo $withval | sed 's/\/$//'`
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
+ AC_SUBST_DIR([confdir]) ],
+ [ confdir='${prefix}/etc'
+ AC_MSG_RESULT(no)
+ AC_DEFINE_DIR(ETC_DIR, confdir, [Prefix where config files are installed.])
+ AC_SUBST_DIR([confdir])]
+)
+
+dnl **********************************************************************
+dnl Check for --with-logdir
+dnl **********************************************************************
+
+AC_MSG_CHECKING([whether to modify logdir])
+AC_ARG_WITH(logdir,
+AC_HELP_STRING([--with-logdir=DIR],
+ [Directory where to write logfiles.]),
+ [ logdir=`echo $withval | sed 's/\/$//'`
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
+ AC_SUBST_DIR([logdir]) ],
+ [ logdir='${prefix}/logs'
+ AC_MSG_RESULT(no)
+ AC_DEFINE_DIR(LOG_DIR, logdir, [Prefix where to write logfiles.])
+ AC_SUBST_DIR([logdir])]
+)
+
+dnl **********************************************************************
+dnl Check for --with-helpdir
+dnl **********************************************************************
+
+AC_MSG_CHECKING([whether to modify helpdir])
+AC_ARG_WITH(helpdir,
+AC_HELP_STRING([--with-helpdir=DIR],
+ [Directory to install help files.]),
+ [ helpdir=`echo $withval | sed 's/\/$//'`
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help files are installed.])
+ AC_SUBST_DIR([helpdir]) ],
+ [ helpdir='${prefix}/help'
+ AC_MSG_RESULT(no)
+ AC_DEFINE_DIR(HELP_DIR, helpdir, [Prefix where help file are installed.])
+ AC_SUBST_DIR([helpdir])]
+)
+
+dnl **********************************************************************
+dnl Check for --with-moduledir
+dnl **********************************************************************
+
+AC_MSG_CHECKING([whether to modify moduledir])
+AC_ARG_WITH(moduledir,
+AC_HELP_STRING([--with-moduledir=DIR],
+ [Directory to install modules.]),
+ [ moduledir=`echo $withval | sed 's/\/$//'`
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
+ AC_SUBST_DIR([moduledir]) ],
+ [ moduledir='${prefix}/modules'
+ AC_MSG_RESULT(no)
+ AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.])
+ AC_SUBST_DIR([moduledir])]
+)
+
+if test ! -z "$SELECT_TYPE_EXPLICIT"; then
+ SELECT_TYPE="$SELECT_TYPE_EXPLICIT";
+ echo "Forcing $SELECT_TYPE to be enabled"
+else
+
+if test ! "x$use_select" = "xno"; then
+ AC_CHECK_FUNCS(select, [haveselect=yes], [haveselect=no])
+ if test "x$haveselect" = "xyes" ; then
+ SELECT_TYPE="select"
+ fi
+fi
+
+if test ! "x$use_poll" = "xno"; then
+ AC_CHECK_FUNCS(poll, [havepoll=yes], [havepoll=no])
+ if test "x$havepoll" = "xyes" ; then
+ SELECT_TYPE="poll"
+ fi
+fi
+
+if test ! "x$use_devpoll" = "xno"; then
+ AC_MSG_CHECKING(for /dev/poll)
+ if test -c "/dev/poll"; then
+ AC_MSG_RESULT(yes)
+ AC_CHECK_HEADERS([devpoll.h sys/devpoll.h])
+ SELECT_TYPE="devpoll"
+ else
+ AC_MSG_RESULT(no)
+ fi
+fi
+
+if test ! "x$use_kqueue" = "xno"; then
+ AC_CHECK_FUNCS(kevent, [havekqueue=yes], [havekqueue=no])
+ if test "x$havekqueue" = "xyes" ; then