diff -uNrd ircd-hybrid-7rc3/.cvsignore ircd-hoho-2r15/.cvsignore
--- ircd-hybrid-7rc3/.cvsignore	Fri Dec 14 03:49:18 2001
+++ ircd-hoho-2r15/.cvsignore	Wed Dec 31 19:00:00 1969
@@ -1,7 +0,0 @@
-config.log
-config.cache
-config.status
-Makefile
-lint.out
-rsa_respond.tar.gz
-.depend
diff -uNrd ircd-hybrid-7rc3/.indent.pro ircd-hoho-2r15/.indent.pro
--- ircd-hybrid-7rc3/.indent.pro	Mon Jun 18 02:09:42 2001
+++ ircd-hoho-2r15/.indent.pro	Wed Dec 31 19:00:00 1969
@@ -1,17 +0,0 @@
-/* $Id: .indent.pro,v 1.3 2001/06/18 06:09:42 a1kmm Exp $ */
-/* copy this file to the source dir then run indent file.c */
-
---gnu-style
-/* Disable tabs... */
--nut
-/* 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
-/* Put while() on the brace from do... */
---cuddle-do-while
-/* Disable an annoying format... */
---no-space-after-function-call-names
-/* Disable an annoying format... */
---no-space-after-casts
diff -uNrd ircd-hybrid-7rc3/Makefile.in ircd-hoho-2r15/Makefile.in
--- ircd-hybrid-7rc3/Makefile.in	Sun Jan 13 13:31:43 2002
+++ ircd-hoho-2r15/Makefile.in	Fri Dec 20 15:37:24 2002
@@ -39,13 +39,15 @@
 #CFLAGS= -DNDEBUG -g -O2 -D"FD_SETSIZE=1024"
 SHELL=/bin/sh
 SUBDIRS=modules adns src tools doc @SUBDIR_MESSAGES@ include servlink help
-CLEANDIRS = ${SUBDIRS} contrib iauth
+CLEANDIRS = ${SUBDIRS} iauth
 # XXX removed `iauth' from the build since it doesn't compile currently
 # SUBDIRS=src tools iauth
 RSA_FILES=rsa_respond/README rsa_respond/respond.c rsa_respond/Makefile
 
 MAKE = make ${MFLAGS} 
 
+.PHONY: build
+
 all:	build
 
 
@@ -80,6 +82,8 @@
 distclean:
 	${RM} -f Makefile *~ *.rej *.orig core ircd.core
 	${RM} -f config.status config.cache config.log
+	${RM} -f configure include/setup.h.in
+	${RM} -rf autom4te.cache
 	cd include; ${RM} -f setup.h *~ *.rej *.orig ; cd ..
 	@for i in $(CLEANDIRS); do \
 		echo "distclean ==> $$i";\
diff -uNrd ircd-hybrid-7rc3/README.hoho ircd-hoho-2r15/README.hoho
--- ircd-hybrid-7rc3/README.hoho	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/README.hoho	Fri Dec 20 15:37:23 2002
@@ -0,0 +1,52 @@
+
+ Hoho ircd 2r15.
+
+ A lame bunch of changes to hybrid ircd 7, that happen to be
+ convienently packed together. Lots of code is stolen, riped
+ off, and swindled from other places, mainly dancer-ircd.
+
+ INSTALL: 
+ ./mkconf
+ ./configure --help
+ ./configure --whatever-options-you-want
+ make
+ make install
+
+ Changes between hybrid and this:
+
+ - Color stripping
+ - Opers can op themselves
+ - Firedrill, useless, but leet looking
+ - Ident is disable-able in the config file
+ - Opers don't look like opers in /who and /whois
+ - +q is finaly working! -- new in 2r5
+
+ Docs for some of the new commands
+ 
+ - /opme #channel
+   Server swoops in and ops you. Other servers will see you part/
+   rejoin, and then the server ops you. This should be used instead
+   of /mode #channel +o yournick, as that could cause trouble.
+
+ - /firedrill #channel
+   In event of extreme emergencey, such as a channel takeover, 
+   firedrill will kick everyone from the channel, join you as op,
+   and then allow everyone else to rejoin. This is extremely disruptive
+   and should only be used if necessary. This is the only way to join
+   a channel if you are banned. It also will clear all channel modes,
+   topic, banlists, everything.
+
+ - /mode #channel +q luser!*@*
+   Silences a user. Works as if the channel was moderated and the user
+   did not have voice. Ops or voice take precedence, and will allow 
+   a user to speak. Currently the message sent to the client is, 
+   "What good is a phone call if you are unable to speak", you might
+   want to change that. Be careful about banning the exact same hostmask
+   that is quited, you might want to -q+b in that case. 
+
+ - /map
+   Same function as /links, but a much more readable output.
+
+ - disable_auth = [yes|no];
+   In the general section of the config file, disable_auth can be used to
+   prevent ident checking on all hosts. By default ident is enabled.
diff -uNrd ircd-hybrid-7rc3/autoconf/configure.in ircd-hoho-2r15/autoconf/configure.in
--- ircd-hybrid-7rc3/autoconf/configure.in	Sun Jul 14 00:10:33 2002
+++ ircd-hoho-2r15/autoconf/configure.in	Fri Dec 20 15:37:24 2002
@@ -992,7 +992,6 @@
  iauth/Makefile                 \
  iauth/source/Makefile          \
  servlink/Makefile              \
- contrib/Makefile               \
  src/Makefile                   \
  adns/Makefile                  \
  include/Makefile               \
diff -uNrd ircd-hybrid-7rc3/build ircd-hoho-2r15/build
--- ircd-hybrid-7rc3/build	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/build	Fri Dec 20 15:37:24 2002
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# This is stupid. Kill this please.
+#
+./configure --prefix=/usr/local/hybrid7 --enable-openssl --enable-small-net --with-nicklen=20 --with-maxclients=100
+make
diff -uNrd ircd-hybrid-7rc3/configure ircd-hoho-2r15/configure
--- ircd-hybrid-7rc3/configure	Sun Jul 14 00:10:29 2002
+++ ircd-hoho-2r15/configure	Wed Dec 31 19:00:00 1969
@@ -1,5330 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_default_prefix=/usr/local/ircd
-ac_help="$ac_help
-  --enable-openssl[=DIR]       Enable OpenSSL support (DIR optional).
-  --disable-openssl            Disable OpenSSL support. "
-ac_help="$ac_help
-  --enable-zlib                Enable zlib compression (used by ziplinks)
-  --disable-zlib               Disable zlib compression (used by ziplinks) "
-ac_help="$ac_help
-  --enable-profile             Enable profiling.
-  --disable-profile            Disable profiling(default). "
-ac_help="$ac_help
-  --enable-efence              Enable ElectricFence(memory debugger).
-  --disable-efence             Disable ElectricFence(default)."
-ac_help="$ac_help
-  --enable-block-alloc         Enable the block allocator(default)
-  --disable-block-alloc        Disable the block allocator(Only useful
-                               with ElectricFence)."
-ac_help="$ac_help
-  --enable-poll                Enable poll() support.
-  --disable-poll               Disable poll() support. "
-ac_help="$ac_help
-  --enable-select              Enable select() support.
-  --disable-select             Disable select() support. "
-ac_help="$ac_help
-  --enable-kqueue              Enable kqueue() support.
-  --disable-kqueue             Disable kqueue() support. "
-ac_help="$ac_help
-  --enable-devpoll             Enable /dev/poll support.
-  --disable-devpoll            Disable /dev/poll support. "
-ac_help="$ac_help
-  --enable-rtsigio             Enable SIGIO with RT Signals(Linux only).
-  --disable-rtsigio            Disable SIGIO with RT Signals(Linux only). "
-ac_help="$ac_help
-  --enable-ipv6                Enable IPV6 support.
-  --disable-ipv6               Disable IPV6 support. "
-ac_help="$ac_help
-  --enable-efnet               For IRCDs running on efnet. "
-ac_help="$ac_help
-  --enable-assert              Enable assert().
-  --disable-assert             Disable assert(). "
-ac_help="$ac_help
-  --enable-small-net           Enable small network support.
-  --disable-small-net          Disable small network support. "
-ac_help="$ac_help
-  --with-nicklen=LENGTH        Set the nick length to LENGTH. "
-ac_help="$ac_help
-  --with-maxclients=NUMBER     Set the maximum number of clients to NUMBER. "
-ac_help="$ac_help
-  --with-topiclen=NUMBER       Set the max topic length to NUMBER. "
-ac_help="$ac_help
-  --enable-shared-modules      Enable shared modules.
-  --disable-shared-modules     Disable shared modules. "
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='	'
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-ac_aux_dir=
-for ac_dir in autoconf $srcdir/autoconf; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in autoconf $srcdir/autoconf" 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-
-
-
-PACKAGE=ircd-hybrid
-VERSION=7.0
-
-
-
-OLD_CFLAGS="$CFLAGS"
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:609: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:639: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-	continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:690: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:722: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 733 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:764: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:769: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:797: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-
-CFLAGS="$OLD_CFLAGS"
-
-SGS=no
-echo $ac_n "checking if we are using TenDRA or MIPSpro""... $ac_c" 1>&6
-echo "configure:832: checking if we are using TenDRA or MIPSpro" >&5
-case `$CC -version 2>&1` in
-  *TenDRA*)
-    echo "$ac_t""success! We will be using TenDRA." 1>&6
-    TenDRA=yes
-    SGS=yes
-    ;;
-  *MIPSpro*)
-    echo "$ac_t""success! We will be using MIPSpro." 1>&6
-    MIPSpro=yes
-    SGS=yes
-    ;;
-  *)
-    echo "$ac_t""no" 1>&6
-    TenDRA=no
-    MIPSpro=no
-    ;;
-esac
-echo $ac_n "checking if we are using Sun WorkShop/Forte""... $ac_c" 1>&6
-echo "configure:851: checking if we are using Sun WorkShop/Forte" >&5
-case `$CC -V 2>&1` in
-  *Sun*WorkShop*)
-    echo "$ac_t""success! We are using Sun WorkShop/Forte." 1>&6
-    SunWorkShop=yes
-    SGS=yes
-    ;;
-  *Forte*Developer*)
-    echo "$ac_t""success! We are using Sun WorkShop/Forte." 1>&6
-    SunWorkShop=yes
-    SGS=yes
-    ;;
-  *)
-    echo "$ac_t""no" 1>&6
-    SunWorkShop=no
-    ;;
-esac
-echo $ac_n "checking if we are using Apple GCC""... $ac_c" 1>&6
-echo "configure:869: checking if we are using Apple GCC" >&5
-case `$CC -v 2>&1 | tail -1` in
-  *Apple*)
-    echo "$ac_t""success! We are using GCC from Apple." 1>&6
-    AppleGCC=yes
-    ;;
-  *)
-    echo "$ac_t""no" 1>&6
-    AppleGCC=no
-    ;;
-esac
-
-echo $ac_n "checking if your compiler supports the SVR4 Software Generation System interfaces""... $ac_c" 1>&6
-echo "configure:882: checking if your compiler supports the SVR4 Software Generation System interfaces" >&5
-if test "$SGS" = "yes"; then
-  echo "$ac_t""yes" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test "x$GCC" = "xyes"; then
-#  Use this for development..
-#  IRC_CFLAGS="-O2 -g -ggdb -Wunused -Wall -Wshadow -Wmissing-declarations"
-   IRC_CFLAGS="-O2 -g -ggdb"
-else
-  if test "x$TenDRA" = "xyes"; then
-            IRC_CFLAGS=""
-    CPPFLAGS="$CPPFLAGS -Ylonglong -Yansi -I/usr/include"
-  else
-    if test "x$SunWorkShop" = "xyes"; then
-      IRC_CFLAGS="-fast -g -xinline=dlinkAdd,dlinkAddBefore,dlinkAddTail,dlinkDelete,dlink_list_length,dlink_node,dlinkMoveList,_MyMalloc,_MyRealloc,_MyFree,_DupString"
-    else
-      if test "x$MIPSpro" = "xyes"; then
-        IRC_CFLAGS="-g"
-      else
-        if test "x$ac_cv_prog_cc_g" = "xyes"; then
-          IRC_CFLAGS="-g"
-        else
-          IRC_CFLAGS=""
-        fi
-      fi
-    fi
-  fi
-fi
-
-
-case `uname -s` in
-        HP-UX*)
-                echo "$ac_t""HP-UX found - Assuming HPUX C compiler cc" 1>&6  
-		IRC_CFLAGS="$IRC_CFLAGS +e"
-		HPUX=yes
-		;;
-	OSF*)
-		OSF=yes
-		;;
-	*)
-		;;
-esac
-
-
-echo $ac_n "checking how to generate dependancy info""... $ac_c" 1>&6
-echo "configure:930: checking how to generate dependancy info" >&5
-if test "$SunWorkShop" = "yes"; then
-  echo "$ac_t""Sun WorkShop/Forte using $CC -xM" 1>&6
-  MKDEP="$CC -xM"
-fi
-if test "$HPUX" = "yes"; then
-  echo "$ac_t""HP-UX C Compiler using makedepend" 1>&6
-  MKDEP="makedepend"
-fi
-if test "x$MKDEP" = "x"; then
-  echo "$ac_t""assuming $CC -MM" 1>&6
-  MKDEP="$CC -MM"	
-fi
-
-
-
-if test "x$CFLAGS" != "x"; then
-  IRC_CFLAGS="$IRC_CFLAGS $CPPFLAGS"
-fi
-
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:951: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
-  grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
-  echo "$ac_t""yes" 1>&6
-  ISC=yes # If later tests want to check for ISC.
-  cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
-  if test "$GCC" = yes; then
-    CC="$CC -posix"
-  else
-    CC="$CC -Xp"
-  fi
-else
-  echo "$ac_t""no" 1>&6
-  ISC=
-fi
-
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:972: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftestmake <<\EOF
-all:
-	@echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  SET_MAKE=
-else
-  echo "$ac_t""no" 1>&6
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1001: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$RM" in
-  /*)
-  ac_cv_path_RM="$RM" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_RM="$RM" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_RM="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-RM="$ac_cv_path_RM"
-if test -n "$RM"; then
-  echo "$ac_t""$RM" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "cp", so it can be a program name with args.
-set dummy cp; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1036: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_CP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$CP" in
-  /*)
-  ac_cv_path_CP="$CP" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_CP="$CP" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_CP="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-CP="$ac_cv_path_CP"
-if test -n "$CP"; then
-  echo "$ac_t""$CP" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "mv", so it can be a program name with args.
-set dummy mv; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1071: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$MV" in
-  /*)
-  ac_cv_path_MV="$MV" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_MV="$MV" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_MV="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-MV="$ac_cv_path_MV"
-if test -n "$MV"; then
-  echo "$ac_t""$MV" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "ln", so it can be a program name with args.
-set dummy ln; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1106: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_LN'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$LN" in
-  /*)
-  ac_cv_path_LN="$LN" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_LN="$LN" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_LN="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-LN="$ac_cv_path_LN"
-if test -n "$LN"; then
-  echo "$ac_t""$LN" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "sed", so it can be a program name with args.
-set dummy sed; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1141: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_SED'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$SED" in
-  /*)
-  ac_cv_path_SED="$SED" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_SED="$SED" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_SED="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-SED="$ac_cv_path_SED"
-if test -n "$SED"; then
-  echo "$ac_t""$SED" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1176: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$AR" in
-  /*)
-  ac_cv_path_AR="$AR" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_AR="$AR" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_AR="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-AR="$ac_cv_path_AR"
-if test -n "$AR"; then
-  echo "$ac_t""$AR" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "ld", so it can be a program name with args.
-set dummy ld; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$LD" in
-  /*)
-  ac_cv_path_LD="$LD" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_LD="$LD" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_LD="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
-  echo "$ac_t""$LD" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1248: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YACC="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YACC="$ac_cv_prog_YACC"
-if test -n "$YACC"; then
-  echo "$ac_t""$YACC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1290: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-	  if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  else
-	    ac_cv_path_install="$ac_dir/$ac_prog -c"
-	    break 2
-	  fi
-	fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "flex", so it can be a program name with args.
-set dummy flex; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1345: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_LEX="flex"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex"
-fi
-fi
-LEX="$ac_cv_prog_LEX"
-if test -n "$LEX"; then
-  echo "$ac_t""$LEX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$LEXLIB"
-then
-  case "$LEX" in
-  flex*) ac_lib=fl ;;
-  *) ac_lib=l ;;
-  esac
-  echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:1379: checking for yywrap in -l$ac_lib" >&5
-ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-l$ac_lib  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1387 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char yywrap();
-
-int main() {
-yywrap()
-; return 0; }
-EOF
-if { (eval echo configure:1398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LEXLIB="-l$ac_lib"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1423: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1451: checking for inline" >&5
-if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat > conftest.$ac_ext <<EOF
-#line 1458 "configure"
-#include "confdefs.h"
-
-int main() {
-} $ac_kw foo() {
-; return 0; }
-EOF
-if { (eval echo configure:1465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_inline=$ac_kw; break
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-
-fi
-
-echo "$ac_t""$ac_cv_c_inline" 1>&6
-case "$ac_cv_c_inline" in
-  inline | yes) ;;
-  no) cat >> confdefs.h <<\EOF
-#define inline 
-EOF
- ;;
-  *)  cat >> confdefs.h <<EOF
-#define inline $ac_cv_c_inline
-EOF
- ;;
-esac
-
-
-if test "$libexecdir" = '${exec_prefix}/libexec' &&
-   test "$localstatedir" = '${prefix}/var'; then
-        libexecdir='${bindir}'
-        localstatedir='${prefix}'
-fi
-
-echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:1498: checking for socket in -lsocket" >&5
-ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1506 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char socket();
-
-int main() {
-socket()
-; return 0; }
-EOF
-if { (eval echo configure:1517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lsocket $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-
-
-echo $ac_n "checking for crypt""... $ac_c" 1>&6
-echo "configure:1548: checking for crypt" >&5
-if eval "test \"`echo '$''{'ac_cv_func_crypt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1553 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char crypt(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_crypt) || defined (__stub___crypt)
-choke me
-#else
-crypt();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_crypt=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_crypt=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'crypt`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for crypt in -ldescrypt""... $ac_c" 1>&6
-echo "configure:1594: checking for crypt in -ldescrypt" >&5
-ac_lib_var=`echo descrypt'_'crypt | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldescrypt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1602 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-crypt()
-; return 0; }
-EOF
-if { (eval echo configure:1613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo descrypt | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-ldescrypt $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:1639: checking for crypt in -lcrypt" >&5
-ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lcrypt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1647 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-crypt()
-; return 0; }
-EOF
-if { (eval echo configure:1658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo crypt | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lcrypt $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-fi
-
-
-
-echo $ac_n "checking for library containing gettext""... $ac_c" 1>&6
-echo "configure:1692: checking for library containing gettext" >&5
-if eval "test \"`echo '$''{'ac_cv_search_gettext'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_func_search_save_LIBS="$LIBS"
-ac_cv_search_gettext="no"
-cat > conftest.$ac_ext <<EOF
-#line 1699 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_search_gettext="none required"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-test "$ac_cv_search_gettext" = "no" && for i in intl; do
-LIBS="-l$i  $ac_func_search_save_LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1721 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_search_gettext="-l$i"
-break
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-LIBS="$ac_func_search_save_LIBS"
-fi
-
-echo "$ac_t""$ac_cv_search_gettext" 1>&6
-if test "$ac_cv_search_gettext" != "no"; then
-  test "$ac_cv_search_gettext" = "none required" || LIBS="$ac_cv_search_gettext $LIBS"
-  
-else :
-  
-fi
-if test "X$ac_cv_search_gettext" = "Xno"; then
-    save_LIBS="$LIBS"
-    LIBS="$LIBS -L/usr/local/lib"
-    unset ac_cv_search_gettext
-    
-echo $ac_n "checking for library containing gettext""... $ac_c" 1>&6
-echo "configure:1758: checking for library containing gettext" >&5
-if eval "test \"`echo '$''{'ac_cv_search_gettext'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_func_search_save_LIBS="$LIBS"
-ac_cv_search_gettext="no"
-cat > conftest.$ac_ext <<EOF
-#line 1765 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_search_gettext="none required"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-test "$ac_cv_search_gettext" = "no" && for i in intl; do
-LIBS="-l$i  $ac_func_search_save_LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1787 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_search_gettext="-l$i"
-break
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-LIBS="$ac_func_search_save_LIBS"
-fi
-
-echo "$ac_t""$ac_cv_search_gettext" 1>&6
-if test "$ac_cv_search_gettext" != "no"; then
-  test "$ac_cv_search_gettext" = "none required" || LIBS="$ac_cv_search_gettext $LIBS"
-  
-else :
-  
-fi
-    if test "X$ac_cv_search_gettext" != "Xno"; then
-        gettext_libs="-L/usr/local/lib"
-        gettext_incl="-I/usr/local/include"
-    fi
-    LIBS="$save_LIBS"
-fi
-
-echo $ac_n "checking ld flags needed for gettext""... $ac_c" 1>&6
-echo "configure:1826: checking ld flags needed for gettext" >&5
-if eval "test \"`echo '$''{'cf_cv_gettext_libs'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-   cf_cv_gettext_libs="$gettext_libs" 
-fi
-
-echo "$ac_t""$cf_cv_gettext_libs" 1>&6
-echo $ac_n "checking cpp flags needed for gettext""... $ac_c" 1>&6
-echo "configure:1835: checking cpp flags needed for gettext" >&5
-if eval "test \"`echo '$''{'cf_cv_gettext_incl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-   cf_cv_gettext_incl="$gettext_incl" 
-fi
-
-echo "$ac_t""$cf_cv_gettext_incl" 1>&6
-
-LIBS="$LIBS $cf_cv_gettext_libs"
-CPPFLAGS="$CPPFLAGS $cf_cv_gettext_incl"
-
-for ac_func in gettext
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1850: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1855 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:1900: checking for gettext in -lintl" >&5
-ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lintl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1908 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo intl | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lintl $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-done
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1951: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 1966 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 1983 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 2000 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2031: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2036 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 2061 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 2079 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2100 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:2111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-for ac_hdr in inttypes.h sys/resource.h sys/param.h unistd.h errno.h string.h strings.h sys/syslog.h stdlib.h stddef.h getopt.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2138: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2143 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2148: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-
-
-echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6
-echo "configure:2178: checking whether string.h and strings.h may both be included" >&5
-if eval "test \"`echo '$''{'gcc_cv_header_string'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2183 "configure"
-#include "confdefs.h"
-#include <string.h>
-#include <strings.h>
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  gcc_cv_header_string=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  gcc_cv_header_string=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$gcc_cv_header_string" 1>&6
-if test $gcc_cv_header_string = yes; then
- cat >> confdefs.h <<\EOF
-#define STRING_WITH_STRINGS 1
-EOF
-
-fi
-
-
-
-
-
-
-	echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:2217: checking for socklen_t" >&5
-	if eval "test \"`echo '$''{'have_socklen_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-		cat > conftest.$ac_ext <<EOF
-#line 2223 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-			#include <sys/socket.h>
-int main() {
-socklen_t xxx = 75;
-; return 0; }
-EOF
-if { (eval echo configure:2231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  have_socklen_t=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  have_socklen_t=no
-fi
-rm -f conftest*
-	
-fi
-
-	echo "$ac_t""$have_socklen_t" 1>&6
-	if test "$have_socklen_t" = yes; then
-		cat >> confdefs.h <<\EOF
-#define HAVE_SOCKLEN_T 1
-EOF
-
-	fi
-
-
-ac_safe=`echo "stdarg.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for stdarg.h""... $ac_c" 1>&6
-echo "configure:2255: checking for stdarg.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2260 "configure"
-#include "confdefs.h"
-#include <stdarg.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-{ echo "configure: error: ** stdarg.h could not be found - ircd-hybrid will not compile without it **" 1>&2; exit 1; }
-fi
-
-
-for ac_func in strlcat strlcpy
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2291: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2296 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-for ac_func in socketpair
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2347: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2352 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-for ac_func in snprintf
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2403: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2408 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- have_snprintf=1
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_func in vsnprintf
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2458: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2463 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- have_vsnprintf=1
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-if test -z "$have_snprintf"; then
-	SNPRINTF_C="snprintf.c"
-fi
-if test -z "$have_vsnprintf"; then
-	SNPRINTF_C="snprintf.c"
-fi
-
-
-for ac_func in mmap
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2521: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2526 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-echo $ac_n "checking for nanosleep""... $ac_c" 1>&6
-echo "configure:2575: checking for nanosleep" >&5
-if eval "test \"`echo '$''{'ac_cv_func_nanosleep'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2580 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char nanosleep(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nanosleep();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_nanosleep) || defined (__stub___nanosleep)
-choke me
-#else
-nanosleep();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_nanosleep=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_nanosleep=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'nanosleep`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for nanosleep in -lrt""... $ac_c" 1>&6
-echo "configure:2621: checking for nanosleep in -lrt" >&5
-ac_lib_var=`echo rt'_'nanosleep | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lrt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2629 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nanosleep();
-
-int main() {
-nanosleep()
-; return 0; }
-EOF
-if { (eval echo configure:2640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="${LIBS} -lrt"
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for nanosleep in -lposix4""... $ac_c" 1>&6
-echo "configure:2659: checking for nanosleep in -lposix4" >&5
-ac_lib_var=`echo posix4'_'nanosleep | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lposix4  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2667 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nanosleep();
-
-int main() {
-nanosleep()
-; return 0; }
-EOF
-if { (eval echo configure:2678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="${LIBS} -lposix4"
-      		
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-fi
-
-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	
-	echo "$ac_t"""nanosleep not found..using select for delay"" 1>&6
-else
-	cat >> confdefs.h <<\EOF
-#define HAVE_NANOSLEEP 1
-EOF
-
-fi
-
-cpp_flags_backup="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS -dM"
-echo $ac_n "checking for getrlimit max open files parameter""... $ac_c" 1>&6
-echo "configure:2716: checking for getrlimit max open files parameter" >&5
-cat > conftest.$ac_ext <<EOF
-#line 2718 "configure"
-#include "confdefs.h"
-#include <sys/resource.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "RLIMIT_FDMAX" >/dev/null 2>&1; then
-  rm -rf conftest*
-  cf_rlimit_type="RLIMIT_FDMAX"
-fi
-rm -f conftest*
-
-cat > conftest.$ac_ext <<EOF
-#line 2730 "configure"
-#include "confdefs.h"
-#include <sys/resource.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "RLIMIT_NOFILE" >/dev/null 2>&1; then
-  rm -rf conftest*
-  cf_rlimit_type="RLIMIT_NOFILE"
-fi
-rm -f conftest*
-
-cat > conftest.$ac_ext <<EOF
-#line 2742 "configure"
-#include "confdefs.h"
-#include <sys/resource.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "RLIMIT_OPEN_MAX" >/dev/null 2>&1; then
-  rm -rf conftest*
-  cf_rlimit_type="RLIMIT_OPEN_MAX"
-fi
-rm -f conftest*
-
-CPPFLAGS="$cpp_flags_backup"
-unset cpp_flags_backup
-if test "x$cf_rlimit_type" != "x"; then
-	cat >> confdefs.h <<EOF
-#define RLIMIT_FD_MAX $cf_rlimit_type
-EOF
-
-	echo "$ac_t""$cf_rlimit_type" 1>&6
-fi
-
-echo $ac_n "checking for OpenSSL""... $ac_c" 1>&6
-echo "configure:2764: checking for OpenSSL" >&5
-# Check whether --enable-openssl or --disable-openssl was given.
-if test "${enable_openssl+set}" = set; then
-  enableval="$enable_openssl"
-   cf_enable_openssl=$enableval 
-else
-   cf_enable_openssl="auto" 
-fi
-
-
-if test "X$cf_enable_openssl" != "Xno" ; then
-  cf_openssl_basedir=""
-  if test "X$cf_enable_openssl" != "Xauto" &&
-     test "X$cf_enable_openssl" != "Xyes" ; then
-          cf_openssl_basedir="${cf_enable_openssl}"
-  else
-        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
-    if test "X$cf_openssl_basedir" != "X" ; 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
-                  cf_openssl_basedir=""
-    fi
-  else
-                            if test -f "/usr/include/openssl/opensslv.h" ; then
-      cf_openssl_basedir="/usr"
-    fi
-  fi
-      if test "X$cf_openssl_basedir" != "X" ; then
-    echo "$ac_t""$cf_openssl_basedir" 1>&6
-    cf_enable_openssl="yes"
-  else
-    echo "$ac_t""not found.  Please check your path." 1>&6
-    cf_enable_openssl="no"
-  fi
-  unset cf_openssl_basedir
-else
-    echo "$ac_t""disabled" 1>&6
-fi
-
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $SSL_INCLUDES"
-save_LIBS="$LIBS"
-LIBS="$LIBS $SSL_LIBS"
-if test "X$cf_enable_openssl" != "Xno"; then
-        echo $ac_n "checking for OpenSSL 0.9.6 or above""... $ac_c" 1>&6
-echo "configure:2819: checking for OpenSSL 0.9.6 or above" >&5
-    if test "$cross_compiling" = yes; then
-  cf_openssl_version_ok='no'
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2824 "configure"
-#include "confdefs.h"
-
-#include <openssl/opensslv.h>
-#include <stdlib.h>
-int main(void) {
-  if ( (OPENSSL_VERSION_NUMBER & 0x00906000) == 0x00906000)
-  {
-    exit(0);
-  }
-  exit(1);
-}
-    
-EOF
-if { (eval echo configure:2838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  cf_openssl_version_ok='yes'
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  cf_openssl_version_ok='no'
-fi
-rm -fr conftest*
-fi
-
-
-    if test "X$cf_openssl_version_ok" = "Xyes"; then
-        echo "$ac_t""ok" 1>&6
-                save_CPPFLAGS="$CPPFLAGS"
-        CPPFLAGS="$CPPFLAGS $SSL_LIBS"
-        echo $ac_n "checking for RSA_free in -lcrypto""... $ac_c" 1>&6
-echo "configure:2856: checking for RSA_free in -lcrypto" >&5
-ac_lib_var=`echo crypto'_'RSA_free | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lcrypto  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2864 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char RSA_free();
-
-int main() {
-RSA_free()
-; return 0; }
-EOF
-if { (eval echo configure:2875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo crypto | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lcrypto $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-        if test "X$ac_cv_lib_crypto_RSA_free" = "Xyes"; then
-            cf_openssl_ciphers=''
-            for ac_func in EVP_bf_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2907: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2912 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}BF/256 BF/128 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-            for ac_func in EVP_cast5_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2962: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2967 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}CAST/128 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-            for ac_func in EVP_idea_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3017: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3022 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}IDEA/128 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-            for ac_func in EVP_rc5_32_12_16_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3072: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3077 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}RC5.16/128 RC5.12/128 RC5.8/128 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-            for ac_func in EVP_des_ede3_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3127: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3132 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}3DES/168 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-            for ac_func in EVP_des_cfb
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3182: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3187 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- cf_openssl_ciphers="${cf_openssl_ciphers}DES/56 "
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-        fi
-        CPPFLAGS="$save_CPPFLAGS"
-        SSL_LIBS="$SSL_LIBS -lcrypto"
-    else
-        echo "$ac_t""no - OpenSSL support disabled" 1>&6
-    fi
-fi
-CPPFLAGS="$save_CPPFLAGS"
-LIBS="$save_LIBS"
-
-echo $ac_n "checking if you want to try to use zlib""... $ac_c" 1>&6
-echo "configure:3245: checking if you want to try to use zlib" >&5
-# Check whether --enable-zlib or --disable-zlib was given.
-if test "${enable_zlib+set}" = set; then
-  enableval="$enable_zlib"
-   cf_enable_zlib=$enableval 
-else
-   cf_enable_zlib='yes' 
-fi
-
-echo "$ac_t""$cf_enable_zlib" 1>&6
-
-case "$cf_enable_zlib" in
-  yes)
-    echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6
-echo "configure:3259: checking for deflate in -lz" >&5
-ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lz  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3267 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char deflate();
-
-int main() {
-deflate()
-; return 0; }
-EOF
-if { (eval echo configure:3278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo z | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lz $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    echo $ac_n "checking for zlibVersion""... $ac_c" 1>&6
-echo "configure:3306: checking for zlibVersion" >&5
-if eval "test \"`echo '$''{'ac_cv_func_zlibVersion'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3311 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char zlibVersion(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char zlibVersion();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_zlibVersion) || defined (__stub___zlibVersion)
-choke me
-#else
-zlibVersion();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_zlibVersion=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_zlibVersion=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'zlibVersion`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo "configure: warning: zlib 1.0.2 or higher required for ZIPLINK support" 1>&2
-fi
-
-    ;;
-  no)
-    ;;
-  *)
-    LIBS="$LIBS -L$cf_enable_zlib"
-    echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6
-echo "configure:3360: checking for deflate in -lz" >&5
-ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lz  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3368 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char deflate();
-
-int main() {
-deflate()
-; return 0; }
-EOF
-if { (eval echo configure:3379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo z | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lz $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    echo $ac_n "checking for zlibVersion""... $ac_c" 1>&6
-echo "configure:3407: checking for zlibVersion" >&5
-if eval "test \"`echo '$''{'ac_cv_func_zlibVersion'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3412 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char zlibVersion(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char zlibVersion();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_zlibVersion) || defined (__stub___zlibVersion)
-choke me
-#else
-zlibVersion();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_zlibVersion=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_zlibVersion=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'zlibVersion`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo "configure: warning: zlib 1.0.2 or higher required for ZIPLINK support" 1>&2
-fi
-
-    ;;
-esac
-
-
-echo $ac_n "checking if you want to do a profile build""... $ac_c" 1>&6
-echo "configure:3460: checking if you want to do a profile build" >&5
-# Check whether --enable-profile or --disable-profile was given.
-if test "${enable_profile+set}" = set; then
-  enableval="$enable_profile"
-  
-  case "$enableval" in
-  yes)
-    ac_cv_profile="yes"
-    IRC_CFLAGS="$IRC_CFLAGS -pg -a -static"
-    ;;
-  no)
-    ac_cv_profile="no"
-    ;;
-  esac
-
-fi
-
-echo "$ac_t""$ac_cv_profile" 1>&6
-
-
-echo $ac_n "checking if you want ElectricFence""... $ac_c" 1>&6
-echo "configure:3481: checking if you want ElectricFence" >&5
-# Check whether --enable-efence or --disable-efence was given.
-if test "${enable_efence+set}" = set; then
-  enableval="$enable_efence"
-  
-  case "$enableval" in
-  yes)
-    ac_cv_efence="yes"
-    ;;
-  no)
-    ac_cv_efence="no"
-    ;;
-  *)
-    LIBS="$LIBS -L$enableval"
-    ac_cv_efence="yes"
-    ;;
-  esac
-
-fi
-
-echo "$ac_t""$ac_cv_efence" 1>&6
-
-
-echo $ac_n "checking if you want the block allocator""... $ac_c" 1>&6
-echo "configure:3505: checking if you want the block allocator" >&5
-# Check whether --enable-block-alloc or --disable-block-alloc was given.
-if test "${enable_block_alloc+set}" = set; then
-  enableval="$enable_block_alloc"
-  
-  case "$enableval" in
-  yes)
-    ac_cv_balloc="yes"
-    ;;
-  no)
-    ac_cv_balloc="no"
-    cat >> confdefs.h <<\EOF
-#define NOBALLOC 1
-EOF
-
-    ;;
-  esac
-
-fi
-
-echo "$ac_t""$ac_cv_balloc" 1>&6
-
-
-# Check whether --enable-poll or --disable-poll was given.
-if test "${enable_poll+set}" = set; then
-  enableval="$enable_poll"
-  
-  case "$enableval" in
-  yes)
-    echo "Forcing poll() to be enabled"
-    ac_cv_func_poll="yes"
-    ;;
-  no)
-    echo "Forcing poll() to be disabled"
-    ac_cv_func_poll="no"
-    ;;
-  esac
-
-fi
-
-
-# Check whether --enable-select or --disable-select was given.
-if test "${enable_select+set}" = set; then
-  enableval="$enable_select"
-  
-  case "$enableval" in
-  yes)
-    echo "Forcing select() to be enabled"
-    ac_cv_func_select="yes"
-    ;;
-  no)
-    echo "Forcing select() to be disabled"
-    ac_cv_func_select="no"
-    ;;
-  esac
-
-fi
-
-
-# Check whether --enable-kqueue or --disable-kqueue was given.
-if test "${enable_kqueue+set}" = set; then
-  enableval="$enable_kqueue"
-  
-  case "$enableval" in
-  yes)
-    echo "Forcing kqueue() to be enabled"
-    ac_cv_func_kqueue="yes"
-    ;;
-  no)
-    echo "Forcing kqueue() to be disabled"
-    ac_cv_func_kqueue="no"
-  ;;
-esac
-
-fi
-
-
-# Check whether --enable-devpoll or --disable-devpoll was given.
-if test "${enable_devpoll+set}" = set; then
-  enableval="$enable_devpoll"
-  
-  case "$enableval" in
-  yes)
-    echo "Forcing /dev/poll to be enabled"
-    ac_cv_func_devpoll="yes"
-    ;;
-  no)
-    echo "Forcing /dev/poll to be disabled"
-    ac_cv_func_devpoll="no"
-  ;;
-esac
-
-fi
-
-
-# Check whether --enable-rtsigio or --disable-rtsigio was given.
-if test "${enable_rtsigio+set}" = set; then
-  enableval="$enable_rtsigio"
-  
-  case "$enableval" in
-  yes)
-    echo "Forcing Linux RT Sigio to be enabled"
-    ac_cv_func_rtsigio="yes"
-    ;;
-  no)
-    ac_cv_func_rtsigio="no"
-  ;;
-esac
-
-fi
-
-
-if test $ac_cv_prog_gcc = yes; then
-    echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:3619: checking whether ${CC-cc} needs -traditional" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    ac_pattern="Autoconf.*'x'"
-  cat > conftest.$ac_ext <<EOF
-#line 3625 "configure"
-#include "confdefs.h"
-#include <sgtty.h>
-Autoconf TIOCGETP
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "$ac_pattern" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_prog_gcc_traditional=yes
-else
-  rm -rf conftest*
-  ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
-
-  if test $ac_cv_prog_gcc_traditional = no; then
-    cat > conftest.$ac_ext <<EOF
-#line 3643 "configure"
-#include "confdefs.h"
-#include <termio.h>
-Autoconf TCGETA
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "$ac_pattern" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
-  fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
-  if test $ac_cv_prog_gcc_traditional = yes; then
-    CC="$CC -traditional"
-  fi
-fi
-
-
-
-echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6
-echo "configure:3667: checking for u_int32_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_u_int32_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3672 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_u_int32_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_u_int32_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_u_int32_t" 1>&6
-if test $ac_cv_type_u_int32_t = no; then
-  cat >> confdefs.h <<\EOF
-#define u_int32_t unsigned int
-EOF
-
-fi
-
-
-echo $ac_n "checking for uintptr_t""... $ac_c" 1>&6
-echo "configure:3701: checking for uintptr_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_uintptr_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3706 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])uintptr_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_uintptr_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_uintptr_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_uintptr_t" 1>&6
-if test $ac_cv_type_uintptr_t = no; then
-  cat >> confdefs.h <<\EOF
-#define uintptr_t 
-EOF
-
-fi
-
-
-rm -f conftest conftest.f
-echo $ac_n "checking for poll""... $ac_c" 1>&6
-echo "configure:3736: checking for poll" >&5
-if eval "test \"`echo '$''{'ac_cv_func_poll'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3741 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char poll(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char poll();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_poll) || defined (__stub___poll)
-choke me
-#else
-poll();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_poll=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_poll=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'poll`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  ac_cv_func_poll="yes"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-
-
-if test "$ac_cv_func_kqueue" = "yes" ; then
-	for ac_func in kevent
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3790: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3795 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-  kqueue_func="yes" 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-	if test "X$kqueue_func" = "X" ; then
-		echo "configure: warning: ** kevent() not found - not building kqueue support **" 1>&2
-	else
-                SELECT_TYPE="kqueue"
-                cat >> confdefs.h <<\EOF
-#define USE_KQUEUE 1
-EOF
-
-	fi
-fi
-if test "$SELECT_TYPE" != "kqueue" ; then
-	if test "$ac_cv_func_devpoll" = "yes" ; then
-                SELECT_TYPE="devpoll"
-                cat >> confdefs.h <<\EOF
-#define HAVE_DEVPOLL 1
-EOF
-
-                cat >> confdefs.h <<\EOF
-#define USE_DEVPOLL 1
-EOF
-
-	elif test "$ac_cv_func_rtsigio" = "yes" ; then
-		SELECT_TYPE="sigio"
-		cat >> confdefs.h <<\EOF
-#define USE_SIGIO 1
-EOF
-
-	elif test "$ac_cv_func_poll" = "yes" ; then
-                SELECT_TYPE="poll"
-                cat >> confdefs.h <<\EOF
-#define USE_POLL 1
-EOF
-
-	elif test "$ac_cv_func_select" = "yes" ; then
-                SELECT_TYPE="select"
-                cat >> confdefs.h <<\EOF
-#define USE_SELECT 1
-EOF
-
-        else
-                echo "Eep!  Can't find kqueue, devpoll, poll, rtsigio _or_ select!"
-                echo "I'll try select and hope for the best."
-                SELECT_TYPE="select"
-                cat >> confdefs.h <<\EOF
-#define USE_SELECT 1
-EOF
-
-	fi
-fi
-echo "Using ${SELECT_TYPE} for select loop."
-cat >> confdefs.h <<EOF
-#define SELECT_TYPE "$SELECT_TYPE"
-EOF
-
-
-
-if test "$ac_cv_func_gettext" = "yes" -o "$ac_cv_lib_intl_gettext" = "yes"; then
-	echo "Building with gettext."
-	MSGFMT="msgfmt -o"
-	SUBDIR_MESSAGES="messages"
-        cat >> confdefs.h <<\EOF
-#define HAVE_GETTEXT 1
-EOF
-
-else
-	MSGFMT="echo"
-	SUBDIR_MESSAGES=""
-fi
-
-# Check whether --enable-ipv6 or --disable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then
-  enableval="$enable_ipv6"
-   ac_cv_ipv6=$enableval 
-else
-   ac_cv_ipv6='no' 
-fi
-
-
-if test "$ac_cv_ipv6" = "yes" ; then
-	cat >> confdefs.h <<\EOF
-#define IPV6 1
-EOF
-
-	echo "Using IPv6 support"
-fi
-
-
-# Check whether --enable-efnet or --disable-efnet was given.
-if test "${enable_efnet+set}" = set; then
-  enableval="$enable_efnet"
-   ac_cv_efnet=$enableval 
-else
-   ac_cv_efnet='no' 
-fi
-
-
-
-if test "$ac_cv_efnet" = "yes"; then
-    cat >> confdefs.h <<\EOF
-#define EFNET 1
-EOF
-
-    echo "Building ircd for use with efnet"
-fi
-
-ac_cv_assert="-DNDEBUG"
-
-# Check whether --enable-assert or --disable-assert was given.
-if test "${enable_assert+set}" = set; then
-  enableval="$enable_assert"
-  
-  case "$enableval" in
-  yes)
-    echo "Enabling assert() code."
-    ac_cv_assert=""
-    ;;
-  no)
-    echo "Disabling assert() code."
-    ac_cv_assert="-DNDEBUG"
-    ;;
-  esac
-
-fi
-
-
-IRC_CFLAGS="$IRC_CFLAGS $ac_cv_assert"
-
-
-
-
-
-
-# Check whether --enable-small-net or --disable-small-net was given.
-if test "${enable_small_net+set}" = set; then
-  enableval="$enable_small_net"
-  
-  case "$enableval" in
-  yes)
-    echo "Enabling small net code."
-    IRC_CFLAGS="$IRC_CFLAGS -DSMALL_NET=1"
-    ;;
-  no)
-    echo "Disabling small net code."
-    IRC_CFLAGS="$IRC_CFLAGS"
-    ;;
-  esac
-
-fi
-
-
-ac_cv_nicklen="9"
-ac_cv_maxclients="200"
-ac_cv_topiclen="120"
-
-# Check whether --with-nicklen or --without-nicklen was given.
-if test "${with_nicklen+set}" = set; then
-  withval="$with_nicklen"
-  
-	echo $withval
-  if test "$withval" = "no"; then
-	ac_cv_nicklen="9"
-  else
-	ac_cv_nicklen="$withval"
-  fi
-
-fi
-
-echo "$ac_t"""Setting NICKLEN to $ac_cv_nicklen"" 1>&6
-cat >> confdefs.h <<EOF
-#define NICKLEN (${ac_cv_nicklen}+1)
-EOF
-
-
-# Check whether --with-maxclients or --without-maxclients was given.
-if test "${with_maxclients+set}" = set; then
-  withval="$with_maxclients"
-  
-  if test "$withval" = "no"; then
-	ac_cv_maxclients="200"
-  else
-	ac_cv_maxclients="$withval"
-  fi
-
-fi
-
-echo "$ac_t"""Setting MAX_CLIENTS to $ac_cv_maxclients"" 1>&6
-cat >> confdefs.h <<EOF
-#define MAX_CLIENTS ${ac_cv_maxclients}
-EOF
-
-
-# Check whether --with-topiclen or --without-topiclen was given.
-if test "${with_topiclen+set}" = set; then
-  withval="$with_topiclen"
-  
-  if test "$withval" = "no"; then
-	ac_cv_topiclen="120"
-  else
-	ac_cv_topiclen="$withval"
-  fi
-
-fi
-
-echo "$ac_t"""Setting TOPICLEN to $ac_cv_topiclen"" 1>&6
-cat >> confdefs.h <<EOF
-#define TOPICLEN ${ac_cv_topiclen}
-EOF
-
-
-# Check whether --enable-shared-modules or --disable-shared-modules was given.
-if test "${enable_shared_modules+set}" = set; then
-  enableval="$enable_shared_modules"
-  
-  if test "$enableval" = "no"; then
-	ac_cv_shared_modules="no"
-  else
-	ac_cv_shared_modules="yes"
-  fi
-
-fi
-
-
-if test "$ac_cv_profile" = "yes" &&
-   test "$ac_cv_shared_modules" != "no"; then
-	echo "Shared modules and profiling don't work together."
-	echo "Disabling shared modules."
-	ac_cv_shared_modules="no"
-fi
-
-if test "$ac_cv_shared_modules" = "no"; then
-	echo "Not using shared modules.."
-	MODULES_DEFINE=""
-	MOD_TARGET="libmodules.a"
-	MODULES_LIBS="../modules/libmodules.a"
-	SEDOBJ="-e s/.so:/.o:/"
-	cat >> confdefs.h <<\EOF
-#define STATIC_MODULES 1
-EOF
-
-else
-	echo "Checking for shared module support"
-	MODULES_DEFINE=""
-	MODULES_LIBS=""
-	MOD_TARGET="shared_modules"
-	SEDOBJ="-e s/.o:/.so:/"
-        
-        echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "configure:4089: checking for shl_load" >&5
-if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4094 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char shl_load();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-shl_load();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:4117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_shl_load=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_shl_load=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-                        cat >> confdefs.h <<\EOF
-#define HAVE_SHL_LOAD 1
-EOF
-
-                        ac_cv_have_shl_load='yes'
-                
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:4141: checking for shl_load in -ldld" >&5
-ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldld  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4149 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char shl_load();
-
-int main() {
-shl_load()
-; return 0; }
-EOF
-if { (eval echo configure:4160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_SHL_LOAD 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-
-                ac_cv_have_shl_load='no'
-                echo "shl_load could not be found"
-                
-fi
-
-fi
-
-
-        if test "$ac_cv_have_shl_load" = "no"; then
-            ac_safe=`echo "mach-o/dyld.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for mach-o/dyld.h""... $ac_c" 1>&6
-echo "configure:4193: checking for mach-o/dyld.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4198 "configure"
-#include "confdefs.h"
-#include <mach-o/dyld.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-
-        echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:4224: checking for dlopen" >&5
-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4229 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char dlopen();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-dlopen();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:4252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_dlopen=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_dlopen=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-     
-                        ac_cv_have_dlopen='yes'
-                
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:4272: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4280 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo configure:4291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-                        ac_cv_have_dlopen='yes'
-                
-else
-  echo "$ac_t""no" 1>&6
-   
-                        ac_cv_have_dlopen='no'
-                
-fi
-
-fi
-
-
-fi
-
-        fi
-        if test "$ac_cv_have_dlopen" = "no"; then
-            { echo "configure: error: shared module support could not be found - try running configure with --disable-shared-modules" 1>&2; exit 1; }
-        fi
-		echo $ac_n "checking for dlsym in -ldl""... $ac_c" 1>&6
-echo "configure:4326: checking for dlsym in -ldl" >&5
-ac_lib_var=`echo dl'_'dlsym | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4334 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char dlsym();
-
-int main() {
-dlsym()
-; return 0; }
-EOF
-if { (eval echo configure:4345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo dl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-ldl $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-	for ac_func in dlopen
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4375: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4380 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:4403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-	for ac_hdr in mach-o/dyld.h dlfcn.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4431: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4436 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
- 
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-	# The GNU linker requires the -export-dynamic option to make
-	# all symbols visible in the dynamic symbol table.
-	hold_ldflags=$LDFLAGS
-	echo $ac_n "checking for the ld -export-dynamic flag""... $ac_c" 1>&6
-echo "configure:4472: checking for the ld -export-dynamic flag" >&5
-	LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
-	cat > conftest.$ac_ext <<EOF
-#line 4475 "configure"
-#include "confdefs.h"
-
-int main() {
-int i;
-; return 0; }
-EOF
-if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  found=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  found=no
-fi
-rm -f conftest*
-	LDFLAGS=$hold_ldflags
-	echo "$ac_t""$found" 1>&6
-	if test $found = yes; then
-		LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
-	fi
-
-	echo $ac_n "checking for compiler option to produce PIC""... $ac_c" 1>&6
-echo "configure:4499: checking for compiler option to produce PIC" >&5
-				if test "$SGS" = "yes"; then
-		echo "$ac_t""SVR4 Software Generation System interfaces: -KPIC -DPIC -G" 1>&6
-		PICFLAGS="-KPIC -DPIC -G"
-	fi
-	if test "$AppleGCC" = "yes"; then
-		echo "$ac_t""Darwin or Mac OS X - Assuming you want to make Mach-O bundles: -fno-common -bundle -flat_namespace -undefined suppress" 1>&6
-		PICFLAGS="-fno-common -bundle -flat_namespace -undefined suppress"
-	fi
-								if test "$HPUX" = "yes"; then
-		echo "$ac_t""HP-UX - Assuming HPUX C compiler cc: +z -r -q -n +ESfic" 1>&6
-		PICFLAGS="+z -r -q -n +ESfic -c"
-		MOD_TARGET="hpux_shared"
-		LDFLAGS="${LDFLAGS} -Wl,-E"
-	fi
-	if test -z "$PICFLAGS"; then
-		if test "$ac_cv_prog_gcc" = "yes"; then
-			echo "$ac_t""gcc: -fPIC -DPIC -shared" 1>&6
-			PICFLAGS="-fPIC -DPIC -shared"
-			if test "$OSF" = "yes"; then
-				echo "OSF Discovered: Adding -Wl,-expect_unresolved -Wl,* to compiler flags"
-				PICFLAGS="$PICFLAGS -Wl,-expect_unresolved -Wl,*"
-			fi
-		else
-			echo "$ac_t""no" 1>&6
-			{ echo "configure: error: could not find a way to produce position independent code. Try ./configure  --disable-shared-modules" 1>&2; exit 1; }
-		fi
-	fi
-	
-
-	nlist_lib=""
-	echo $ac_n "checking for nlist""... $ac_c" 1>&6
-echo "configure:4531: checking for nlist" >&5
-if eval "test \"`echo '$''{'ac_cv_func_nlist'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4536 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char nlist(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nlist();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_nlist) || defined (__stub___nlist)
-choke me
-#else
-nlist();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:4559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_nlist=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_nlist=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'nlist`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for nlist in -ldl""... $ac_c" 1>&6
-echo "configure:4577: checking for nlist in -ldl" >&5
-ac_lib_var=`echo dl'_'nlist | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4585 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nlist();
-
-int main() {
-nlist()
-; return 0; }
-EOF
-if { (eval echo configure:4596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  nlist_lib="-ldl"
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for nlist in -lelf""... $ac_c" 1>&6
-echo "configure:4615: checking for nlist in -lelf" >&5
-ac_lib_var=`echo elf'_'nlist | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lelf  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4623 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char nlist();
-
-int main() {
-nlist()
-; return 0; }
-EOF
-if { (eval echo configure:4634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  nlist_lib="-lelf"
-else
-  echo "$ac_t""no" 1>&6
-echo "configure: warning: ** cannot locate nlist() **" 1>&2
-fi
-
-		
-fi
-
-	
-fi
-
-
-                        	ac_safe=`echo "libelf/nlist.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for libelf/nlist.h""... $ac_c" 1>&6
-echo "configure:4664: checking for libelf/nlist.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4669 "configure"
-#include "confdefs.h"
-#include <libelf/nlist.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-   nlist_h="libelf/nlist.h" 
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-	ac_safe=`echo "elf/nlist.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for elf/nlist.h""... $ac_c" 1>&6
-echo "configure:4697: checking for elf/nlist.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4702 "configure"
-#include "confdefs.h"
-#include <elf/nlist.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4707: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-   nlist_h="elf/nlist.h" 
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-	ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:4730: checking for nlist.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4735 "configure"
-#include "confdefs.h"
-#include <nlist.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-   nlist_h="nlist.h" 
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-	if test x"$nlist_h" = "x"; then
-		echo "configure: warning: ** cannot locate an nlist.h **" 1>&2
-		echo "configure: warning: ** cannot check for extra underscores prepended to symbol names - nlist.h is missing **" 1>&2
-		echo "configure: warning: ** assuming no underscores prepend symbol names **" 1>&2
-		cat >> confdefs.h <<EOF
-#define SYMBOL_PREFIX ""
-EOF
-
-	else
-		echo $ac_n "checking for extra underscores prepended to symbol names""... $ac_c" 1>&6
-echo "configure:4771: checking for extra underscores prepended to symbol names" >&5
-		if eval "test \"`echo '$''{'symbol_underscores'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-cat << EOF > conftest.c
-	#include <$nlist_h>
-	#include <stdio.h>
-	#include <stdlib.h>
-	void _modinit(void);
-	int main(int argc, char *argv[])
-        {
-          int i;
-          struct nlist nl[5];
-
-          /* fill the names in this way, so it'll work almost everywhere */
-          nl[0].n_name = "_modinit";
-          nl[1].n_name = "__modinit";
-          nl[2].n_name = "___modinit";
-          nl[3].n_name = "____modinit";
-          nl[0].n_value = nl[1].n_value = nl[2].n_value = nl[3].n_value = nl[4].n_name = NULL;
-
-          if(argc < 2)
-          {
-            exit(-1);
-          }
-
-          if ( (nlist(argv[1], nl)) == -1)
-          {
-            exit(-1);
-          }
-
-          for(i=0; i<4; i++)
-          {
-            if(nl[i].n_value != NULL)
-            {
-              int j;
-              for(j=0; j<i; j++)
-              {
-                printf("_");
-              }
-              exit(i);
-            }
-          }
-        exit(-1);
-        }
-        void _modinit(void) { return; }
-EOF
-		$CC $CPPFLAGS $IRC_CFLAGS -o conftest conftest.c $nlist_lib >/dev/null 2>&1
-		symbol_underscores=`./conftest conftest`
-		echo "$ac_t""$symbol_underscores" 1>&6
-		$RM -f conftest conftest.c
-		
-fi
-
-		cat >> confdefs.h <<EOF
-#define SYMBOL_PREFIX "${symbol_underscores}"
-EOF
-
-	fi
-fi
-
-
-if test "$ac_cv_efence" = "yes"; then
-	echo $ac_n "checking for malloc in -lefence""... $ac_c" 1>&6
-echo "configure:4836: checking for malloc in -lefence" >&5
-ac_lib_var=`echo efence'_'malloc | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lefence  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4844 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char malloc();
-
-int main() {
-malloc()
-; return 0; }
-EOF
-if { (eval echo configure:4855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo efence | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lefence $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "\
- Makefile                       \
- iauth/Makefile                 \
- iauth/source/Makefile          \
- servlink/Makefile              \
- contrib/Makefile               \
- src/Makefile                   \
- adns/Makefile                  \
- include/Makefile               \
- messages/Makefile              \
- messages/translations/Makefile \
- modules/Makefile               \
- tools/Makefile                 \
- doc/Makefile                   \
- help/Makefile                  \
- include/setup.h servlink/setup.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@PACKAGE@%$PACKAGE%g
-s%@VERSION@%$VERSION%g
-s%@CC@%$CC%g
-s%@MKDEP@%$MKDEP%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@RM@%$RM%g
-s%@CP@%$CP%g
-s%@MV@%$MV%g
-s%@LN@%$LN%g
-s%@SED@%$SED%g
-s%@AR@%$AR%g
-s%@LD@%$LD%g
-s%@YACC@%$YACC%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@LEX@%$LEX%g
-s%@LEXLIB@%$LEXLIB%g
-s%@RANLIB@%$RANLIB%g
-s%@CPP@%$CPP%g
-s%@SNPRINTF_C@%$SNPRINTF_C%g
-s%@SELECT_SRC@%$SELECT_SRC%g
-s%@PICFLAGS@%$PICFLAGS%g
-s%@MODULES_DEFINE@%$MODULES_DEFINE%g
-s%@MODULES_LIBS@%$MODULES_LIBS%g
-s%@MOD_TARGET@%$MOD_TARGET%g
-s%@SSL_INCLUDES@%$SSL_INCLUDES%g
-s%@SSL_LIBS@%$SSL_LIBS%g
-s%@INCDEP@%$INCDEP%g
-s%@SUBDIR_MESSAGES@%$SUBDIR_MESSAGES%g
-s%@MSGFMT@%$MSGFMT%g
-s%@IRC_CFLAGS@%$IRC_CFLAGS%g
-s%@SEDOBJ@%$SEDOBJ%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"\
- Makefile                       \
- iauth/Makefile                 \
- iauth/source/Makefile          \
- servlink/Makefile              \
- contrib/Makefile               \
- src/Makefile                   \
- adns/Makefile                  \
- include/Makefile               \
- messages/Makefile              \
- messages/translations/Makefile \
- modules/Makefile               \
- tools/Makefile                 \
- doc/Makefile                   \
- help/Makefile                  \
-"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
-ac_dB='\([ 	][ 	]*\)[^ 	]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
-ac_uB='\([ 	]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="include/setup.h servlink/setup.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-
-if test "X${cf_openssl_ciphers}" != "X"; then
-  echo ""
-  echo "Available cryptlinks ciphers:"
-  echo ""
-  echo "${cf_openssl_ciphers}"
-  echo ""
-fi
-
-if test "$ac_cv_efnet" = "yes"; then
-        echo "This server is configured for EFNet usage.  You should NOT use the"
-        echo "example.conf that will be installed.  Use example.efnet.conf instead."
-        echo ""
-fi
-
-echo "$ac_t"""Server is configured with NICKLEN=$ac_cv_nicklen and MAX_CLIENTS=$ac_cv_maxclients"" 1>&6
diff -uNrd ircd-hybrid-7rc3/contrib/.cvsignore ircd-hoho-2r15/contrib/.cvsignore
--- ircd-hybrid-7rc3/contrib/.cvsignore	Tue Jul  3 00:53:03 2001
+++ ircd-hoho-2r15/contrib/.cvsignore	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-Makefile
diff -uNrd ircd-hybrid-7rc3/contrib/Makefile.in ircd-hoho-2r15/contrib/Makefile.in
--- ircd-hybrid-7rc3/contrib/Makefile.in	Mon Aug 19 01:23:14 2002
+++ ircd-hoho-2r15/contrib/Makefile.in	Wed Dec 31 19:00:00 1969
@@ -1,84 +0,0 @@
-#
-# Makefile.in for ircd/contrib
-#
-# $Id: Makefile.in,v 1.34 2002/08/19 05:23:14 db Exp $
-#
-CC		= @CC@
-RM		= @RM@
-SED             = @SED@
-LEX		= @LEX@
-LEXLIB		= @LEXLIB@
-CFLAGS		= @IRC_CFLAGS@ -DIRCD_PREFIX=\"@prefix@\"
-PICFLAGS	= @PICFLAGS@
-MKDEP		= @MKDEP@
-INSTALL		= @INSTALL@
-INSTALL_PROGRAM	= @INSTALL_PROGRAM@
-INSTALL_DATA	= @INSTALL_DATA@
-INSTALL_SUID    = @INSTALL_PROGRAM@ -o root -m 4755
-SHELL		= /bin/sh
-AUTOMODULEDIR	= @prefix@/modules
-
-SSL_LIBS	= @SSL_LIBS@
-SSL_INCLUDES	= @SSL_INCLUDES@
-
-IRCDLIBS	= @LIBS@ $(SSL_LIBS)
-
-INCLUDES	= -I../include -I../adns $(SSL_INCLUDES)
-CPPFLAGS	= ${INCLUDES} @CPPFLAGS@
-
-SRCS =                          \
-  m_clearchan.c			\
-  m_flags.c                     \
-  m_force.c			\
-  m_jupe.c			\
-  m_ltrace.c			\
-  m_map.c			\
-  m_mkpasswd.c                  \
-  m_ojoin.c			\
-  m_opme.c			\
-  m_tburst.c			\
-  m_whois.c			\
-  spy_admin_notice.c		\
-  spy_info_notice.c		\
-  spy_links_notice.c		\
-  spy_motd_notice.c		\
-  spy_stats_notice.c            \
-  spy_stats_p_notice.c		\
-  spy_trace_notice.c		\
-  spy_whois_notice.c            \
-  example_module.c
-
-OBJS = ${SRCS:.c=.so}
-
-default:	build
-build: all
-all: $(OBJS)
-
-install: all
-	@echo "Installing modules into $(AUTOMODULEDIR) .."
-	@for file in $(OBJS); do \
-		$(INSTALL_DATA) $$file $(AUTOMODULEDIR); \
-	done
-
-.SUFFIXES: .so
-
-.c.so:
-	${CC} ${PICFLAGS}  ${CPPFLAGS} ${CFLAGS} $< -o $@
-
-.PHONY: depend clean distclean
-depend:
-	@${MKDEP} ${CPPFLAGS} ${SRCS} > .depend
-	@sed s/\\\.o/\\\.so/ < .depend > .depend.tmp
-	@sed -e '/^# DO NOT DELETE THIS LINE/,$$d' <Makefile >Makefile.depend
-	@echo '# DO NOT DELETE THIS LINE!!!' >>Makefile.depend
-	@echo '# make depend needs it.' >>Makefile.depend
-	@cat .depend.tmp >>Makefile.depend
-	@mv Makefile.depend Makefile
-	@rm -f .depend.tmp .depend
-
-clean:
-	${RM} -f *.so *~ 
-
-distclean: clean
-	${RM} -f Makefile
-
diff -uNrd ircd-hybrid-7rc3/contrib/README ircd-hoho-2r15/contrib/README
--- ircd-hybrid-7rc3/contrib/README	Mon Aug 19 01:23:14 2002
+++ ircd-hoho-2r15/contrib/README	Wed Dec 31 19:00:00 1969
@@ -1,104 +0,0 @@
-$Id: README,v 1.22 2002/08/19 05:23:14 db Exp $
-
-This directory contains modules and patches that have been contributed
-by other people, or aren't suitable for including into the 
-hybrid tree.  The coding team do not officially support the contrib/ 
-modules, or guarantee any of them will actually work.
-
-
-Modules
--------
-
-m_clearchan.c  - CLEARCHAN - clears all users out of a channel and joins person
-                             issuing command
-                 Syntax: CLEARCHAN <channel> [vchanid]
-
-m_flags.c      - FLAGS - csircd like support of changing usermodes
-                 Syntax:  FLAGS :+OWALLOPS -SWALLOPS
-
-m_force.c      - FORCE - forces a user to either part or join a channel with
-                         an optional status (@%+)
-                 Syntax: FORCEJOIN <nick> [status]<channel>
-                         FORCEPART <nick> <channel>
-
-m_jupe.c       - JUPE - Server juping command
-                 Syntax:  JUPE juped.server.name :Reason
-
-m_ltrace.c     - LTRACE - Limited trace.  Similar to TRACE except only reports
-                          current opers and servers.
-                 Syntax: LTRACE [nick|mask [server]]
-
-m_map.c        - MAP - Display the server routing graph in a visually pleasing
-                       format
-                 Syntax:  MAP
-		 
-m_mkpasswd.c   - MKPASSWD - generate a DES or MD5 encryption of a password
-                 Syntax:  MKPASSWD <plaintext> [MD5|DES]
-
-m_ojoin.c      - OJOIN - Join a channel through any modes or limits with 
-                         an optional status (@%+)
-                 Syntax: OJOIN [status]<channel>
-
-m_opme.c       - OPME - Allows an admin to op themselves in an opless channel
-                 Syntax: OPME <channel>
-
-m_tburst.c     - TBURST - module that will make servers send channel topics
-                          to each other after a netsplit/restart.
-
-m_whois.c      - WHOIS - is a modified form of the standard
-		  	  whois provided. It adds the real IP
-			  to a remote whois if applicable. 
-			  	  
-example_module.c - An example module to be used for creating your own.
-                   Syntax: TEST
-
-
-Spy Modules
------------
-
-The following are the 'spy' parts, accessible via the +y usermode
-
-spy_admin_notice.c   - Spy on clients doing ADMIN
-spy_info_notice.c    - Spy on clients doing INFO
-spy_links_notice.c   - Spy on clients doing LINKS
-spy_motd_notice.c    - Spy on clients doing MOTD
-spy_stats_notice.c   - Spy on clients doing all STATS
-spy_stats_p_notice.c - Spy on clients doing STATS p only
-spy_trace_notice.c   - Spy on clients doing TRACE/LTRACE
-spy_whois_notice.c   - Spy on local clients who WHOIS you.
-
-Note: if you have both spy_stats_notice.c and spy_stats_p_notice.c loaded
-you will get two messages.
-
-
-VMS Files
----------
-
-vms_*.c        - Misc files needed for VMS support.
-
-
-Patches
--------
-
-The following are the patches contained in contrib.  A short description
-of the patch is contained here, along with any notes.
-
-To apply a patch, first change to the ircd-hybrid-7 root directory, 
-the directory one level above contrib/.  If you have already compiled 
-the ircd, run 'make clean'.  Then for example to patch 
-remote-unkline.diff type:
-    patch -p0 < contrib/remote-unkline.diff
-
-You must then run 'make' and 'make install' again, and restart your ircd.
-The following patches are included:
-
-lmh.diff 	- This patch adds remote unkline support, temp dline support,
-                  better temp klines, /quote xline and global user@host
-		  limits.
-
-		  Please read README.LMH for more information as this patch
-		  requires different methods to be applied and adds multiple
-		  config options.
-
-disable_identd.diff - This patch adds support for disabling identd queries.
-                      See README.disable_identd for more information.
diff -uNrd ircd-hybrid-7rc3/contrib/README.LMH ircd-hoho-2r15/contrib/README.LMH
--- ircd-hybrid-7rc3/contrib/README.LMH	Tue Jul  2 06:22:25 2002
+++ ircd-hoho-2r15/contrib/README.LMH	Wed Dec 31 19:00:00 1969
@@ -1,168 +0,0 @@
-+lmh patches by fl_
-
-The +lmh patch exists to add some functionality and features that I find
-useful and that people have requested.  This patch will not modify the
-example configs to show the new options, they are only contained in this
-readme.  I know its quite long, but..
-
-This patch is unofficial and is used at your own risk.
-
-To patch your ircd with this diff:
-  Change to your ircd-hybrid-7 directory.
-  If you have already compiled the ircd, run 'make clean' then:
-    patch -p1 < contrib/lmh.diff
-
-  Then run 'make' and 'make install'.
-  
-
-The following features have been added:
-
-i) Temp dline support and temp kline extensions.
-   Normal dlines may still be placed as normal via: 
-      /quote dline <nick|ip> :reason
-
-   However they can be made temporary by adding a duration:
-      /quote dline [duration] <nick|ip> :reason
-
-   The duration is in minutes.  Temp klines/dlines will now both have a 
-   maximum length of 4 weeks (40320 minutes).  This is because the ircd
-   now handles them more efficiently by grouping them and checking their
-   expiry as infrequently as possible.
-
-ii) Oper flood exemption
-    This is the equivalent of hybrid6's TRUE_NO_OPER_FLOOD, and will
-    remove all flood limits for opers.  Note this is dangerous as an oper
-    will not get rate limited no matter how many lines they send to the
-    server.  Use with great precaution.  Unlike hybrid6 however this
-    is configured per oper and defaults to disabled.  
-    
-    To grant an oper this exemption add to their oper {} block:
-      flood_exempt = yes;
-
-    Note the exemption only takes effect whilst opered, but once a user
-    has opered with the flood exemption, the exemption will remain until
-    that user is disconnected from the ircd, even if the exemption is
-    removed from their oper block and they reoper.
-
-    Note that opers without this exemption still have increased flood limits
-    of about 20 lines per second which is controlled by no_oper_flood
-    in the general {} block.
-
-iii) Remote unkline support.
-    This extends hybrid7s remote kline support to also allow unklines to
-    be done on remote servers by authorised users.
-
-    To facilitate this, the shared {}; block has been modified to give
-    remote opers specific permissions (similar to an oper {}).  By default
-    the permissions of a shared block are that an oper may remotely kline
-    but not unkline.
-
-    The two options added to the shared block are:
-       kline = <yes|no>;
-       unkline = <yes|no>;
-
-    To issue a remote unkline:
-       /quote unkline <user@host> on <server>
-
-    If you do not wish this to be supported, simply dont add any shared
-    blocks with 'unkline = yes'.
-
-iv) /quote XLINE support
-     This gives opers who do not have ircd.conf access the ability to set
-     XLINE's, or gecos bans.  These ban a user based on their realname, or
-     gecos field.  They will be added to an xline.conf file in the etc/
-     directory of your ircd.
-
-     To add an xline:
-        /quote xline <gecos> [type] :<reason>
-
-     The gecos field is the gecos that should be banned and may not contain
-     spaces.  If you need to add something that has a space you must use
-     '?' instead of spaces, ie:
-        /quote xline eggdrop?bot 2 :no bots
-
-     The type field denotes how the xline works and may be:
-        2 - Reject the user silently.
-	1 - Reject the user and send a warning to +r opers.
-	0 - Send a warning to +r opers but allow user to connect.
-
-     To allow an oper to use the xline command the following option has been
-     added to the oper {} block:
-        xline = <yes|no>;
-
-     The ability for a user to xline is marked by the 'X' priv.  Note that 
-     xlines are not checked for dupes and config access is required to
-     remove a placed xline.
-
-v) Global user@host limits.
-    Taken from ircnets ircd.  Currently you may limit a certain host to n 
-    number of connections to the ircd, however these do not stop a user
-    loading large amounts of clones on multiple servers.  The global limits
-    extend the host limits so you can set network-wide host limits.
-
-    Thus you could allow 2 local users from 'vanity.host.com' and 3 users
-    network wide from 'vanity.host.com'.  The network wide limit includes
-    the local server.  Thus if a user had three connections to the network
-    on another server, they would not be allowed to connect locally.  If
-    a user had two connections on another server and one connection locally,
-    they would not be allowed to connect another client locally either.
-
-    You may also limit the amount of connections from a specific user@host,
-    ie: 'abuser@vanity.host.com'.  Unidented connections will be counted
-    as having the same ident.  Ident limits are global only (thus they
-    include the local server in their limits).
-
-    Thus a global host limit of 3, local host limit of 2 and an ident limit 
-    of 1 would allow one connection from 'abuser@vanity.host.com' no matter
-    where on the network the connection was.  However 
-    'realuser@vanity.host.com' would be allowed to connect as the idents
-    are different, providing the host limits are not exceeded.
-
-    Users set 'exceed_limit = yes;' may exceed any limits.
-
-    The following option is added to the general {} block:
-       use_global_limits = <yes|no>;
-
-    This option is enabled by default and controls whether the global
-    user@host limits are used.  This option may not be changed once the
-    server is running and requires a restart to be modified.
-
-    The following options are added to the class {} block:
-       number_per_ident = <number>;
-       number_per_ip = <number>;    -- not really added, just noted here.
-       number_per_ip_global = <number>;
-
-    - number_per_ip will do the same function as in vanilla hybrid7, limiting
-      local connections per host.
-    - number_per_ident controls the user@ portion of the limits.
-    - number_per_ip_global controls how many connections a host may have 
-      network wide.
-
-    All three options default to 0 (unlimited).
-
-    The behaviour of class blocks are modified slightly and as a result you
-    *MUST* use 'connectfreq = <duration>;' in server class blocks, not
-    number_per_ip.
-
-vi) ASCII casemapping support (by AndroSyn)
-    IRCs scandinavian origins mean the characters are {}|~ are treated as
-    the lowercase of []\^.  Thus as the nicks "a" and "A" would be the same,
-    the nicks "[" and "{" would be.
-
-    If this is defined they are treated as individual characters, so the
-    nicks [foo] and {foo} would be two seperate clients.  If this is
-    enabled it MUST be done network wide or you will experience problems
-    with non-compatible servers.  Your locale(1) must also be set to "C"
-    or the system itself may treat the characters differently.
-
-    The following option is added to config.h that can be defined:
-       USE_ASCII_CASEMAP
-
-
-If you have any problems, questions or find any bugs, find me on irc 
-(ircnet/efnet) or email me.  Have fun. :)
-
---
-Lee H <lee@leeh.co.uk>
-
-$Id: README.LMH,v 1.3 2002/07/02 10:22:25 leeh Exp $
diff -uNrd ircd-hybrid-7rc3/contrib/README.cidr_bans ircd-hoho-2r15/contrib/README.cidr_bans
--- ircd-hybrid-7rc3/contrib/README.cidr_bans	Tue Aug  6 20:48:19 2002
+++ ircd-hoho-2r15/contrib/README.cidr_bans	Wed Dec 31 19:00:00 1969
@@ -1,17 +0,0 @@
-$Id: README.cidr_bans,v 1.1 2002/08/07 00:48:19 androsyn Exp $ 
-
-
-Basically what this patch does is allow for users to use cidr masks when
-setting bans, exceptions, and invite invex(modes beI respectively).  This
-works for both IPv4 and IPv6 addresses.  
-
-I won't go into details of how cidr works here, but to use them, you could
-do something like:
-
-/mode #foo +b *!*@10.0.0.0/8 
-/mode #foo +e *!*@10.0.10.0/24
-
-Aaron Sethman <androsyn@ratbox.org>
-August 06, 2002
-
-
diff -uNrd ircd-hybrid-7rc3/contrib/README.disable_identd ircd-hoho-2r15/contrib/README.disable_identd
--- ircd-hybrid-7rc3/contrib/README.disable_identd	Sun Jul  7 20:10:32 2002
+++ ircd-hoho-2r15/contrib/README.disable_identd	Wed Dec 31 19:00:00 1969
@@ -1,17 +0,0 @@
-# $Id: README.disable_identd,v 1.1 2002/07/08 00:10:32 androsyn Exp $
-#
-This diff adds a config option to the general {} block called disable_auth
-to hybrid 7.  To disable identd requests add something like this to your
-config file:
-
-general {
-	disable_auth = yes;
-}
-
-You should note that this does not effect other identd related settings with
-regard to stripping tildes or the requirement of identd checking in auth {}
-blocks.
-
-Aaron Sethman <androsyn@ratbox.org>
-July 07, 2002
-
diff -uNrd ircd-hybrid-7rc3/contrib/cidr_bans.diff ircd-hoho-2r15/contrib/cidr_bans.diff
--- ircd-hybrid-7rc3/contrib/cidr_bans.diff	Mon Aug 19 01:24:04 2002
+++ ircd-hoho-2r15/contrib/cidr_bans.diff	Wed Dec 31 19:00:00 1969
@@ -1,142 +0,0 @@
-? modules/core/m_killprotect.c
-Index: include/irc_string.h
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/include/irc_string.h,v
-retrieving revision 7.36
-diff -u -r7.36 irc_string.h
---- include/irc_string.h	24 May 2002 23:34:07 -0000	7.36
-+++ include/irc_string.h	19 Aug 2002 05:22:43 -0000
-@@ -30,9 +30,11 @@
-  * match - returns 1 on successful match, 0 otherwise
-  *
-  * match_esc - compare with support for escaping chars
-+ * match_cidr - compares u!h@addr with u!h@addr/cidr
-  */
- extern int match(const char *mask, const char *name);
- extern int match_esc(const char *mask, const char *name);
-+extern int match_cidr(const char *mask, const char *name);
- 
- /*
-  * collapse - collapse a string in place, converts multiple adjacent *'s 
-Index: src/channel.c
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/src/channel.c,v
-retrieving revision 7.325
-diff -u -r7.325 channel.c
---- src/channel.c	12 Jul 2002 01:24:03 -0000	7.325
-+++ src/channel.c	19 Aug 2002 05:22:45 -0000
-@@ -1114,7 +1114,9 @@
-   for (ban = chptr->banlist.head; ban; ban = ban->next)
-   {
-     actualBan = ban->data;
--    if (match(actualBan->banstr, s) || match(actualBan->banstr, s2))
-+    if (match(actualBan->banstr, s) || 
-+    	match(actualBan->banstr, s2) ||
-+        match_cidr(actualBan->banstr, s2))
-       break;
-     else
-       actualBan = NULL;
-@@ -1126,7 +1128,9 @@
-     {
-       actualExcept = except->data;
- 
--      if (match(actualExcept->banstr, s) || match(actualExcept->banstr, s2))
-+      if (match(actualExcept->banstr, s) || 
-+          match(actualExcept->banstr, s2) ||
-+          match_cidr(actualExcept->banstr, s2))
-       {
-         return CHFL_EXCEPTION;
-       }
-@@ -1176,7 +1180,8 @@
-       for (ptr = chptr->invexlist.head; ptr; ptr = ptr->next)
-       {
-         invex = ptr->data;
--        if (match(invex->banstr, src_host) || match(invex->banstr, src_iphost))
-+        if (match(invex->banstr, src_host) || match(invex->banstr, src_iphost) ||
-+            match_cidr(invex->banstr, src_iphost))
-           break;
-       }
-       if (ptr == NULL)
-Index: src/match.c
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/src/match.c,v
-retrieving revision 7.20
-diff -u -r7.20 match.c
---- src/match.c	31 May 2002 02:21:04 -0000	7.20
-+++ src/match.c	19 Aug 2002 05:22:45 -0000
-@@ -207,6 +207,75 @@
-   return 0;
- }
- 
-+static inline int 
-+comp_with_mask(void *addr, void *dest, u_int mask)
-+{
-+  if (memcmp(addr, dest, mask / 8) == 0) 
-+  {
-+    int n = mask / 8;
-+    int m = ((-1) << (8 - (mask % 8)));
-+    if (mask % 8 == 0 || 
-+       (((u_char *) addr)[n] & m) == (((u_char *) dest)[n] & m))  
-+      return (1);
-+  }
-+  return (0);
-+}
-+
-+
-+/* match_cidr()
-+ *
-+ * Input - mask, address
-+ * Ouput - 1 = Matched 0 = Did not match
-+ */
-+
-+int
-+match_cidr(const char *s1, const char *s2)
-+{
-+  struct irc_inaddr ipaddr, maskaddr;
-+  char address[NICKLEN + USERLEN + HOSTLEN + 6], mask[NICKLEN + USERLEN + HOSTLEN + 6], *ipmask, *ip, *len;
-+  int cidrlen, aftype;
-+  strcpy(mask, s1);
-+  strcpy(address, s2);
-+  
-+  ipmask = strrchr(mask, '@');
-+  if(ipmask == NULL)
-+    return 0;
-+  
-+  *ipmask++ = '\0';
-+  
-+  ip = strrchr(address, '@');
-+  if(ip == NULL)
-+    return 0;
-+  *ip++ = '\0';
-+  
-+  len = strrchr(ipmask, '/');
-+  if(len == NULL)
-+    return 0;
-+  
-+  *len++ = '\0';
-+  
-+  cidrlen = atoi(len);
-+  if(cidrlen == 0) 
-+    return 0;
-+  
-+#ifdef IPV6
-+  if(strchr(ip, ':') && strchr(ipmask, ':'))
-+    aftype = AF_INET6;
-+  else
-+#endif
-+  if(!strchr(ip, ':') && !strchr(ipmask, ':'))
-+    aftype = AF_INET;
-+  else
-+    return 0;
-+  
-+  inetpton(aftype, ip, &ipaddr);
-+  inetpton(aftype, ipmask, &maskaddr);
-+  if(comp_with_mask(&IN_ADDR(ipaddr), &IN_ADDR(maskaddr), cidrlen) && match(mask, address))
-+    return 1;
-+  else
-+    return 0;
-+}
-+
- /* collapse()
-  *
-  * collapses a string containing multiple *'s.
diff -uNrd ircd-hybrid-7rc3/contrib/disable_identd.diff ircd-hoho-2r15/contrib/disable_identd.diff
--- ircd-hybrid-7rc3/contrib/disable_identd.diff	Sun Jul  7 20:10:32 2002
+++ ircd-hoho-2r15/contrib/disable_identd.diff	Wed Dec 31 19:00:00 1969
@@ -1,87 +0,0 @@
-Index: include/s_conf.h
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/include/s_conf.h,v
-retrieving revision 7.180
-diff -u -r7.180 s_conf.h
---- include/s_conf.h	24 May 2002 23:34:08 -0000	7.180
-+++ include/s_conf.h	8 Jul 2002 00:06:17 -0000
-@@ -231,6 +231,7 @@
-   int           throttle_time;
-   int           use_egd;
-   int		ping_cookie;
-+  int		disable_auth;
- #ifdef HAVE_LIBCRYPTO
-   struct EncCapability *default_cipher_preference;
- #endif
-Index: src/ircd_lexer.l
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/src/ircd_lexer.l,v
-retrieving revision 1.139
-diff -u -r1.139 ircd_lexer.l
---- src/ircd_lexer.l	25 May 2002 01:55:20 -0000	1.139
-+++ src/ircd_lexer.l	8 Jul 2002 00:06:17 -0000
-@@ -115,6 +115,7 @@
- deny		{ return DENY; }
- description	{ return DESCRIPTION; }
- die		{ return DIE; }
-+disable_auth    { return DISABLE_AUTH; }
- disable_hidden	{ return DISABLE_HIDDEN; }
- disable_local_channels { return DISABLE_LOCAL_CHANNELS; }
- disable_remote_commands	{ return DISABLE_REMOTE_COMMANDS; }
-Index: src/ircd_parser.y
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/src/ircd_parser.y,v
-retrieving revision 1.252
-diff -u -r1.252 ircd_parser.y
---- src/ircd_parser.y	12 Jun 2002 19:29:36 -0000	1.252
-+++ src/ircd_parser.y	8 Jul 2002 00:06:17 -0000
-@@ -117,6 +117,7 @@
- %token  DENY
- %token  DESCRIPTION
- %token  DIE
-+%token  DISABLE_AUTH
- %token  DISABLE_HIDDEN
- %token  DISABLE_LOCAL_CHANNELS
- %token  DISABLE_REMOTE_COMMANDS
-@@ -1974,6 +1975,7 @@
-                     general_compression_level | general_client_flood |
-                     general_throttle_time | general_havent_read_conf |
-                     general_dot_in_ip6_addr | general_ping_cookie |
-+                    general_disable_auth |
-                     error;
- 
- general_failed_oper_notice:   FAILED_OPER_NOTICE '=' TYES ';'
-@@ -2330,6 +2332,15 @@
-     PING_COOKIE '=' TNO ';'
-   {
-     ConfigFileEntry.ping_cookie = 0;
-+  } ;
-+
-+general_disable_auth: DISABLE_AUTH '=' TYES ';'
-+  {
-+    ConfigFileEntry.disable_auth = 1;
-+  } |
-+    DISABLE_AUTH '=' TNO ';'
-+  {
-+    ConfigFileEntry.disable_auth = 0;
-   } ;
- 
- general_throttle_time: THROTTLE_TIME '=' timespec ';'
-Index: src/s_auth.c
-===================================================================
-RCS file: /cvsroot/ircd-hybrid-7/src/s_auth.c,v
-retrieving revision 7.97
-diff -u -r7.97 s_auth.c
---- src/s_auth.c	11 Jun 2002 20:29:06 -0000	7.97
-+++ src/s_auth.c	8 Jul 2002 00:06:17 -0000
-@@ -423,7 +423,9 @@
-   adns_getaddr(&client->localClient->ip, client->localClient->aftype, client->localClient->dns_query);
-   SetDNSPending(auth);
- 
--  start_auth_query(auth);
-+  if(ConfigFileEntry.disable_auth == 0) 
-+    start_auth_query(auth);
-+
-   link_auth_request(auth, &auth_poll_list);
- }
- 
diff -uNrd ircd-hybrid-7rc3/contrib/example_module.c ircd-hoho-2r15/contrib/example_module.c
--- ircd-hybrid-7rc3/contrib/example_module.c	Fri May 24 19:48:33 2002
+++ ircd-hoho-2r15/contrib/example_module.c	Wed Dec 31 19:00:00 1969
@@ -1,207 +0,0 @@
-/************************************************************************
- *   IRC - Internet Relay Chat, doc/example_module.c
- *   Copyright (C) 2001 Hybrid Development Team
- *
- *   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: example_module.c,v 1.6 2002/05/24 23:48:33 androsyn Exp $
- */
-
-/* List of ircd includes from ../include/ */
-#include "stdinc.h"
-#include "handlers.h"
-#include "client.h"
-#include "common.h"     /* FALSE bleah */
-#include "ircd.h"
-#include "irc_string.h"
-#include "numeric.h"
-#include "fdlist.h"
-#include "s_bsd.h"
-#include "s_conf.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-
-
-/* Declare the void's initially up here, as modules dont have an
- * include file, we will normally have client_p, source_p, parc
- * and parv[] where:
- *
- * client_p == client issuing command
- * source_p == where the command came from
- * parc     == the number of parameters
- * parv     == an array of the parameters
- */
-static void mr_test(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void m_test(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void ms_test(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void mo_test(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-
-/* Show the commands this module can handle in a msgtab
- * and give the msgtab a name, here its test_msgtab
- */
-struct Message test_msgtab = {
-
- /* Fields are in order:
-  *-> "COMMAND", 0, 0, parc_count, maxparc, MFLG_SLOW, 0,
-  *
-  * where:
-  * COMMAND == the /command you want
-  * parc_count == the number of parameters needed
-  *               (the clients name is one param, parv[0])
-  * maxparc == the maximum parameters we allow
-  * the 0's and MFLG_SLOW should not be changed..
-  */
-
- /* This would add the command "TEST" which requires no additional
-  * parameters
-  */
-  "TEST", 0, 0, 1, 0, MFLG_SLOW, 0,
-
- /* Fields are in order:
-  *-> {unregged, regged, remote, oper}
-  *
-  * where:
-  * unregged == function to call for unregistered clients
-  * regged == function to call for normal users
-  * remote == function to call for servers/remote users
-  * oper == function to call for operators
-  *
-  * There are also some pre-coded functions for use:
-  * m_unregistered: prevent the client using this if unregistered
-  * m_not_oper:     tell the client it requires being an operator
-  * m_ignore:       ignore the command when it comes from certain types
-  * m_error:        give an error when the command comes from certain types
-  */
-  {mr_test, m_test, ms_test, mo_test}
-
- /* It is normal for unregistered functions to be prefixed with mr_
-  *   "      "       normal users to be prefixed with m_
-  *   "      "       remote clients to be prefixed with ms_
-  *   "      "       operators to be prefixed with mo_
-  */
-};
-/* Thats the msgtab finished */
-
-#ifndef STATIC_MODULES
-/* Here we tell it what to do when the module is loaded */
-void
-_modinit(void)
-{
-  /* This will add the commands in test_msgtab (which is above) */
-  mod_add_cmd(&test_msgtab);
-}
-
-/* here we tell it what to do when the module is unloaded */
-void
-_moddeinit(void)
-{
-  /* This will remove the commands in test_msgtab (which is above) */
-  mod_del_cmd(&test_msgtab);
-}
-
-/* When we last modified the file (shown in /modlist), this is usually:
- */
-const char *_version = "$Revision: 1.6 $";
-#endif
-
-/*
- * mr_test
- *      parv[0] = sender prefix
- *      parv[1] = parameter
- */
-
-/* Here we have the functions themselves that we declared above,
- * and the fairly normal C coding
- */
-static void mr_test(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  if(parc == 1)
-    sendto_one(source_p, ":%s NOTICE %s :You are unregistered and sent no parameters",
-    	       me.name, source_p->name);
-  else
-    sendto_one(source_p, ":%s NOTICE %s :You are unregistered and sent parameter: %s", 
-               me.name, source_p->name, parv[1]);
-}
-
-/*
- * m_test
- *      parv[0] = sender prefix
- *      parv[1] = parameter
- */
-static void m_test(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{
-  if(parc == 1)
-    sendto_one(source_p, ":%s NOTICE %s :You are a normal user, and sent no parameters",
-    	       me.name, source_p->name);
-  else
-    sendto_one(source_p, ":%s NOTICE %s :You are a normal user, and send parameters: %s",
-               me.name, source_p->name, parv[1]);
-}
-
-/*
- * ms_test
- *      parv[0] = sender prefix
- *      parv[1] = parameter
- */
-static void ms_test(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{
-  if(parc == 1)
-  {
-    if(IsServer(source_p))
-      sendto_one(source_p, ":%s NOTICE %s :You are a server, and sent no parameters",
-                 me.name, source_p->name);
-    else
-      sendto_one(source_p, ":%s NOTICE %s :You are a remote client, and sent no parameters",
-      		 me.name, source_p->name);
-  }
-  else
-  {
-    if(IsServer(source_p))
-      sendto_one(source_p, ":%s NOTICE %s :You are a server, and sent parameters: %s",
-		 me.name, source_p->name, parv[1]);
-    else
-      sendto_one(source_p, ":%s NOTICE %s :You are a remote client, and sent parameters: %s",
-		 me.name, source_p->name, parv[1]);
-  }
-}    
-	  
-/*
- * mo_test
- *      parv[0] = sender prefix
- *      parv[1] = parameter
- */
-static void mo_test(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{		 
-  if(parc == 1)
-    sendto_one(source_p, ":%s NOTICE %s :You are an operator, and sent no parameters",
-	       me.name, source_p->name);
-  else
-    sendto_one(source_p, ":%s NOTICE %s :You are an operator, and sent parameters: %s",
-               me.name, source_p->name, parv[1]);
-}
-
-/* END OF EXAMPLE MODULE */
diff -uNrd ircd-hybrid-7rc3/contrib/lmh.diff ircd-hoho-2r15/contrib/lmh.diff
--- ircd-hybrid-7rc3/contrib/lmh.diff	Mon Jul 22 17:37:24 2002
+++ ircd-hoho-2r15/contrib/lmh.diff	Wed Dec 31 19:00:00 1969
@@ -1,2580 +0,0 @@
-diff -urN ircd-hybrid-7/doc/Makefile.in ircd-hybrid-7+lmh/doc/Makefile.in
---- ircd-hybrid-7/doc/Makefile.in	Wed Jul 10 01:05:48 2002
-+++ ircd-hybrid-7+lmh/doc/Makefile.in	Mon Jul 22 22:32:20 2002
-@@ -30,7 +30,7 @@
- MANPAGES        = ircd.8
- 
- CONFS		= example.conf example.efnet.conf
--DEFAULTCONFS	= ircd.motd kline.conf dline.conf
-+DEFAULTCONFS	= ircd.motd kline.conf dline.conf xline.conf
- 
- SSL_LIBS	= @SSL_LIBS@
- SSL_INCLUDES	= @SSL_INCLUDES@
-@@ -62,6 +62,9 @@
- 	done
- 
- 	@for i in $(DEFAULTCONFS); do \
-+		if test ! -f $$i; then \
-+			touch $$i; \
-+		fi; \
- 		if test ! -f $(sysconfdir)/$$i; then \
- 			echo $(INSTALL_DATA) $$i $(sysconfdir); \
- 			$(INSTALL_DATA) $$i $(sysconfdir); \
-diff -urN ircd-hybrid-7/include/class.h ircd-hybrid-7+lmh/include/class.h
---- ircd-hybrid-7/include/class.h	Sat Mar  9 21:48:35 2002
-+++ ircd-hybrid-7+lmh/include/class.h	Mon Jul 22 22:32:20 2002
-@@ -28,38 +28,47 @@
- struct ConfItem;
- struct Client;
- 
--struct Class {
--  struct Class* next;     /* list node pointer */
--  char*		className;
--  int           type;
--  int           conFreq;
--  int           pingFreq;
--  int           maxLinks;
--  long          maxSendq;
--  char*         servname;
--  int           servport;
--  int           links;
-+struct Class
-+{
-+  struct Class *next;
-+  char *class_name;
-+  int max_total;
-+  int max_local;
-+  int max_global;
-+  int max_ident;
-+  int max_sendq;
-+  int con_freq;
-+  int ping_freq;
-+  int total;
- };
- 
-+struct Class *ClassList;
- 
--#define ClassName(x)	((x)->className)
--#define ClassType(x)    ((x)->type)
--#define ConFreq(x)      ((x)->conFreq)
--#define PingFreq(x)     ((x)->pingFreq)
--#define MaxLinks(x)     ((x)->maxLinks)
--#define MaxSendq(x)     ((x)->maxSendq)
--#define Links(x)        ((x)->links)
-+#define ClassName(x)	((x)->class_name)
-+#define ConFreq(x)      ((x)->con_freq)
-+#define MaxLocal(x)	((x)->max_local)
-+#define MaxGlobal(x)	((x)->max_global)
-+#define MaxIdent(x)	((x)->max_ident)
-+#define MaxUsers(x)	((x)->max_total)
-+#define PingFreq(x)     ((x)->ping_freq)
-+#define MaxSendq(x)     ((x)->max_sendq)
-+#define CurrUsers(x)    ((x)->total)
- 
- #define ClassPtr(x)      ((x)->c_class)
--#define ConfLinks(x)     (ClassPtr(x)->links)
--#define ConfMaxLinks(x)  (ClassPtr(x)->maxLinks)
-+
- #define ConfClassName(x) (ClassPtr(x)->class_name)
--#define ConfClassType(x) (ClassPtr(x)->type)
--#define ConfConFreq(x)   (ClassPtr(x)->conFreq)
--#define ConfPingFreq(x)  (ClassPtr(x)->pingFreq)
--#define ConfSendq(x)     (ClassPtr(x)->maxSendq)
-+#define ConfConFreq(x)   (ClassPtr(x)->con_freq)
-+#define ConfMaxLocal(x)  (ClassPtr(x)->max_local)
-+#define ConfMaxGlobal(x) (ClassPtr(x)->max_global)
-+#define ConfMaxIdent(x)  (ClassPtr(x)->max_ident)
-+#define ConfMaxUsers(x)  (ClassPtr(x)->max_total)
-+#define ConfPingFreq(x)  (ClassPtr(x)->ping_freq)
-+#define ConfMaxSendq(x)  (ClassPtr(x)->max_sendq)
-+#define ConfCurrUsers(x) (ClassPtr(x)->total)
-+
-+void add_class(struct Class *);
- 
--extern struct Class* ClassList;  /* GLOBAL - class list */
-+struct Class *make_class(void);
- 
- extern  long    get_sendq(struct Client *);
- extern  int     get_con_freq(struct Class* );
-@@ -69,7 +78,6 @@
- extern  void    check_class(void);
- extern  void    initclass(void);
- extern  void    free_class(struct Class* );
--extern  void    add_class (char *, int, int, int, long);
- extern  void    fix_class (struct ConfItem *, struct ConfItem *);
- extern  void    report_classes (struct Client *);
- 
-diff -urN ircd-hybrid-7/include/client.h ircd-hybrid-7+lmh/include/client.h
---- ircd-hybrid-7/include/client.h	Fri Jul 12 01:43:19 2002
-+++ ircd-hybrid-7+lmh/include/client.h	Mon Jul 22 22:32:20 2002
-@@ -127,6 +127,7 @@
-   struct Client*    prev;
-   struct Client*    hnext;
-   struct Client*    idhnext;
-+  struct Client*    hostnext;
- 	
-   struct Client*    lnext;      /* Used for Server->servers/users */
-   struct Client*    lprev;      /* Used for Server->servers/users */
-@@ -438,6 +439,8 @@
- #define FLAGS2_OPER_DIE         0x0800  /* oper can die */
- #define FLAGS2_OPER_REHASH      0x1000  /* oper can rehash */
- #define FLAGS2_OPER_ADMIN       0x2000  /* oper can set umode +a */
-+#define FLAGS2_OPER_XLINE       0x4000  /* oper can xline */
-+#define FLAGS2_OPER_FLOOD_EXEMPT	0x8000	/* oper can flood freely */
- #define FLAGS2_OPER_FLAGS       (FLAGS2_OPER_GLOBAL_KILL | \
-                                  FLAGS2_OPER_REMOTE | \
-                                  FLAGS2_OPER_UNKLINE | \
-@@ -446,6 +449,8 @@
-                                  FLAGS2_OPER_K | \
-                                  FLAGS2_OPER_DIE | \
-                                  FLAGS2_OPER_REHASH| \
-+				 FLAGS2_OPER_XLINE | \
-+				 FLAGS2_OPER_FLOOD_EXEMPT | \
-                                  FLAGS2_OPER_ADMIN)
- 
- #define FLAGS2_CBURST		0x10000  /* connection burst being sent */
-@@ -563,12 +568,16 @@
- #define SetOperN(x)             ((x)->flags2 |= FLAGS2_OPER_N)
- #define IsOperK(x)              ((x)->flags2 & FLAGS2_OPER_K)
- #define SetOperK(x)             ((x)->flags2 |= FLAGS2_OPER_K)
-+#define IsOperXline(x)          ((x)->flags2 & FLAGS2_OPER_XLINE)
-+#define SetOperXline(x)         ((x)->flags2 |= FLAGS2_OPER_XLINE)
- #define IsOperDie(x)            ((x)->flags2 & FLAGS2_OPER_DIE)
- #define SetOperDie(x)           ((x)->flags2 |= FLAGS2_OPER_DIE)
- #define IsOperRehash(x)         ((x)->flags2 & FLAGS2_OPER_REHASH)
- #define SetOperRehash(x)        ((x)->flags2 |= FLAGS2_OPER_REHASH)
- #define IsOperAdmin(x)          ((x)->flags2 & FLAGS2_OPER_ADMIN)
- #define SetOperAdmin(x)         ((x)->flags2 |= FLAGS2_OPER_ADMIN)
-+#define IsOperFloodExempt(x)	((x)->flags2 & FLAGS2_OPER_FLOOD_EXEMPT)
-+#define SetOperFloodExempt(x)	((x)->flags2 |= FLAGS2_OPER_FLOOD_EXEMPT)
- 
- #define IsFloodDone(x)          ((x)->flags2 & FLAGS2_FLOODDONE)
- #define SetFloodDone(x)         ((x)->flags2 |= FLAGS2_FLOODDONE)
-diff -urN ircd-hybrid-7/include/config.h ircd-hybrid-7+lmh/include/config.h
---- ircd-hybrid-7/include/config.h	Wed Jul 10 01:05:51 2002
-+++ ircd-hybrid-7+lmh/include/config.h	Mon Jul 22 22:32:20 2002
-@@ -102,6 +102,7 @@
- #define CPATH   ETCPATH "IRCD.CONF"             /* config file */
- #define KPATH   ETCPATH "KLINE.CONF"            /* kline file */
- #define DLPATH  ETCPATH "DLINE.CONF"            /* dline file */
-+#define XPATH	ETCPATH "XLINE.CONF"		/* xline file */
- #define GPATH   LOGPATH "GLINE.LOG"             /* gline logfile */
- #define RPATH   ETCPATH "IRCD.RSA"              /* RSA private key file */
- #define MPATH   ETCPATH "IRCD.MOTD"             /* MOTD filename */
-@@ -148,6 +149,7 @@
- #define CPATH   ETCPATH "/ircd.conf"            /* ircd.conf file */
- #define KPATH   ETCPATH "/kline.conf"           /* kline file */
- #define DLPATH  ETCPATH "/dline.conf"           /* dline file */
-+#define XPATH	ETCPATH "/xline.conf"		/* xline file */
- #define GPATH   LOGPATH "/gline.log"            /* gline logfile */
- #define RPATH   ETCPATH "/ircd.rsa"             /* ircd rsa private keyfile */
- #define MPATH   ETCPATH "/ircd.motd"            /* MOTD file */
-@@ -197,6 +199,18 @@
-  */
- #undef TS5_ONLY
- 
-+/* USE_ASCII_CASEMAP
-+ *
-+ * Under rfc1459, the characters {}|~ are the lowercase of []\^ so a
-+ * nick of [foo] is the same as {foo} and a channel #[] is the same as
-+ * #{}.  If this is defined they will no longer be treated as lowercase
-+ * of each other, so [foo] and {foo} could be two seperate people.
-+ *
-+ * Note: this must be the same network wide or you will have problems.
-+ *       Your locale(1) must also be set to "C".
-+ */
-+#undef USE_ASCII_CASEMAP
-+
- /* USE_LOGFILE - log errors and such to LPATH
-  * If you wish to have the server send 'vital' messages about server
-  * to a logfile, define USE_LOGFILE.
-@@ -353,6 +367,9 @@
-  * these disabled, who knows. keep this enabled during development.
-  */
- #define INVARIANTS
-+
-+#define RELNAME "+lmh4"
-+#define IRCDNAME PATCHLEVEL RELNAME
- 
- #define CONFIG_H_LEVEL_7
- 
-diff -urN ircd-hybrid-7/include/config.h.dist ircd-hybrid-7+lmh/include/config.h.dist
---- ircd-hybrid-7/include/config.h.dist	Wed Jun 19 21:17:44 2002
-+++ ircd-hybrid-7+lmh/include/config.h.dist	Mon Jul 22 22:32:20 2002
-@@ -187,6 +187,18 @@
-  */
- #undef HIDE_SPOOF_IPS
- 
-+/* USE_ASCII_CASEMAP
-+ *
-+ * Under rfc1459, the characters {}|~ are the lowercase of []\^ so a
-+ * nick of [foo] is the same as {foo} and a channel #[] is the same as
-+ * #{}.  If this is defined they will no longer be treated as lowercase
-+ * of each other, so [foo] and {foo} could be two seperate people.
-+ *
-+ * Note: this must be the same network wide or you will have problems.
-+ *       Your locale(1) must also be set to "C".
-+ */
-+#undef USE_ASCII_CASEMAP
-+
- /* USE_LOGFILE - log errors and such to LPATH
-  * If you wish to have the server send 'vital' messages about server
-  * to a logfile, define USE_LOGFILE.
-diff -urN ircd-hybrid-7/include/handlers.h ircd-hybrid-7+lmh/include/handlers.h
---- ircd-hybrid-7/include/handlers.h	Sat Jan  5 09:14:28 2002
-+++ ircd-hybrid-7+lmh/include/handlers.h	Mon Jul 22 22:32:20 2002
-@@ -95,5 +95,9 @@
- extern void m_unregistered(struct Client*, struct Client*, int, char**);
- extern void m_unsupported(struct Client*, struct Client*, int, char**);
- 
-+#ifdef FL_DEBUG
-+extern void mo_hash(struct Client*, struct Client*, int, char**);
-+#endif
-+
- #endif /* INCLUDED_handlers_h */
- 
-diff -urN ircd-hybrid-7/include/hash.h ircd-hybrid-7+lmh/include/hash.h
---- ircd-hybrid-7/include/hash.h	Sat May 25 00:34:07 2002
-+++ ircd-hybrid-7+lmh/include/hash.h	Mon Jul 22 22:32:20 2002
-@@ -39,6 +39,9 @@
-  */
- #define CH_MAX 16384
- 
-+/* hostname hash table size */
-+#define HOST_MAX 131072
-+
- /*
-  * RESV hash table size
-  *
-@@ -79,6 +82,10 @@
- extern struct Client* find_client(const char* name);
- extern struct Client* find_server(const char* name);
- extern struct Client* hash_find_server(const char* name);
-+
-+struct Client *find_hostname(const char *);
-+void del_from_hostname_hash_table(const char *, struct Client *);
-+void add_to_hostname_hash_table(const char *, struct Client *);
- 
- extern void add_to_resv_hash_table(const char *name,
-                                    struct ResvChannel *resv_p);
-diff -urN ircd-hybrid-7/include/irc_string.h ircd-hybrid-7+lmh/include/irc_string.h
---- ircd-hybrid-7/include/irc_string.h	Sat May 25 00:34:07 2002
-+++ ircd-hybrid-7+lmh/include/irc_string.h	Mon Jul 22 22:32:20 2002
-@@ -115,11 +115,16 @@
- /*
-  * character macros
-  */
-+#ifndef USE_ASCII_CASEMAP
- extern const unsigned char ToLowerTab[];
- #define ToLower(c) (ToLowerTab[(unsigned char)(c)])
- 
- extern const unsigned char ToUpperTab[];
- #define ToUpper(c) (ToUpperTab[(unsigned char)(c)])
-+#else
-+#define ToLower(c) tolower(c)
-+#define ToUpper(c) toupper(c)
-+#endif
- 
- extern const unsigned int CharAttrs[];
- 
-diff -urN ircd-hybrid-7/include/modules.h ircd-hybrid-7+lmh/include/modules.h
---- ircd-hybrid-7/include/modules.h	Sat May 25 02:38:09 2002
-+++ ircd-hybrid-7+lmh/include/modules.h	Mon Jul 22 22:32:20 2002
-@@ -97,6 +97,9 @@
- extern struct Message eob_msgtab;
- extern struct Message error_msgtab;
- extern struct Message gline_msgtab;
-+#ifdef FL_DEBUG
-+extern struct Message hash_msgtab;
-+#endif
- extern struct Message help_msgtab;
- extern struct Message info_msgtab;
- extern struct Message invite_msgtab;
-diff -urN ircd-hybrid-7/include/s_conf.h ircd-hybrid-7+lmh/include/s_conf.h
---- ircd-hybrid-7/include/s_conf.h	Fri Jul 12 01:51:05 2002
-+++ ircd-hybrid-7+lmh/include/s_conf.h	Mon Jul 22 22:32:20 2002
-@@ -161,6 +161,8 @@
- #define CONF_OPER_REHASH        0x0040
- #define CONF_OPER_DIE           0x0080
- #define CONF_OPER_ADMIN         0x0100
-+#define CONF_OPER_XLINE		0x0200
-+#define CONF_OPER_FLOOD_EXEMPT	0x0400
- 
- struct config_file_entry
- {
-@@ -168,6 +170,7 @@
-   char *configfile;
-   char *klinefile;
-   char *dlinefile;
-+  char *xlinefile;
- 
-   char *glinefile;
- 
-@@ -230,6 +233,7 @@
-   int           throttle_time;
-   int           use_egd;
-   int		ping_cookie;
-+  int           use_global_limits;
-   int           use_help;
- #ifdef HAVE_LIBCRYPTO
-   struct EncCapability *default_cipher_preference;
-@@ -317,8 +321,15 @@
- extern struct admin_info  AdminInfo;        /* defined in ircd.c */
- /* End GLOBAL section */
- 
--dlink_list temporary_klines;
--dlink_list temporary_ip_klines;
-+#define TEMP_MIN	1
-+#define TEMP_HOUR	2
-+#define TEMP_DAY	3
-+#define TEMP_WEEK	4
-+
-+dlink_list temporary_min;
-+dlink_list temporary_hour;
-+dlink_list temporary_day;
-+dlink_list temporary_week;
- 
- extern void clear_ip_hash_table(void);
- extern void iphash_stats(struct Client *,struct Client *,int,char **,FBFILE*);
-@@ -352,7 +363,7 @@
- extern char *oper_flags_as_string(int);
- extern char *oper_privs_as_string(struct Client *, int);
- 
--extern int find_u_conf(char*, char*, char *);
-+extern int find_u_conf(char*, char*, char *, int);
- extern struct ConfItem *find_x_conf(char*);
- 
- extern struct ConfItem* find_tkline(const char*, const char*, struct irc_inaddr *);
-@@ -378,9 +389,15 @@
- 			       const char *oper_reason,
- 			       const char *current_date, time_t cur_time );
- extern  void    add_temp_kline(struct ConfItem *);
-+extern void	add_temp_dline(struct ConfItem *);
- extern  void    report_temp_klines(struct Client *);
- extern  void    show_temp_klines(struct Client *, dlink_list *);
--extern  void    cleanup_tklines(void *notused);
-+
-+extern void cleanup_temps_min(void *);
-+extern void cleanup_temps_hour(void *);
-+extern void cleanup_temps_day(void *);
-+extern void cleanup_temps_week(void *);
-+
- 
- extern  const   char *get_conf_name(KlineType);
- extern  int     rehash (int);
-@@ -399,6 +416,7 @@
- /* XXX consider moving these into kdparse.h */
- extern void parse_k_file(FBFILE *fb);
- extern void parse_d_file(FBFILE *fb);
-+extern void parse_x_file(FBFILE *fb);
- extern char *getfield(char *newline);
- 
- extern char *get_oper_name(struct Client *client_p);
-@@ -410,11 +428,11 @@
- #define NOT_AUTHORIZED  (-1)
- #define SOCKET_ERROR    (-2)
- #define I_LINE_FULL     (-3)
--#define TOO_MANY        (-4)
--#define BANNED_CLIENT   (-5)
--#define TOO_FAST        (-6)
--
--#define CLEANUP_TKLINES_TIME 60
-+#define BANNED_CLIENT   (-4)
-+#define TOO_FAST        (-5)
-+#define TOO_MANY_LOCAL	(-6)
-+#define TOO_MANY_GLOBAL (-7)
-+#define TOO_MANY_IDENT	(-8)
- 
- #endif /* INCLUDED_s_conf_h */
- 
-diff -urN ircd-hybrid-7/include/s_serv.h ircd-hybrid-7+lmh/include/s_serv.h
---- ircd-hybrid-7/include/s_serv.h	Sat May 25 00:34:08 2002
-+++ ircd-hybrid-7+lmh/include/s_serv.h	Mon Jul 22 22:32:20 2002
-@@ -74,12 +74,13 @@
- 
- #define CAP_TBURST	0x00040000   /* supports TBURST */
- #define CAP_PARA	0x00080000   /* supports invite broadcasting for +p */
-+#define CAP_UNKLN       0x00100000   /* supports remote unkline */
- 
- #define CAP_MASK        (CAP_QS  | CAP_EX   | CAP_CHW  | \
-                          CAP_IE  | CAP_EOB  | CAP_KLN  | \
-                          CAP_GLN | CAP_HOPS | CAP_AOPS | \
-                          CAP_UID | CAP_ZIP  | CAP_ENC | \
--                         CAP_KNOCK  | CAP_PARA)
-+                         CAP_KNOCK  | CAP_PARA | CAP_UNKLN)
- 
- #ifdef HAVE_LIBZ
- #define CAP_ZIP_SUPPORTED       CAP_ZIP
-diff -urN ircd-hybrid-7/modules/Makefile.in ircd-hybrid-7+lmh/modules/Makefile.in
---- ircd-hybrid-7/modules/Makefile.in	Sun Jun 16 17:31:25 2002
-+++ ircd-hybrid-7+lmh/modules/Makefile.in	Mon Jul 22 22:32:20 2002
-@@ -103,7 +103,8 @@
-   m_wallops.c \
-   m_who.c \
-   m_whois.c \
--  m_whowas.c 
-+  m_whowas.c \
-+  m_xline.c
- 
- ALL_SRCS = $(CORE_SRCS) \
-            $(SRCS)
-diff -urN ircd-hybrid-7/modules/m_kline.c ircd-hybrid-7+lmh/modules/m_kline.c
---- ircd-hybrid-7/modules/m_kline.c	Fri Jul 12 04:29:55 2002
-+++ ircd-hybrid-7+lmh/modules/m_kline.c	Mon Jul 22 22:32:20 2002
-@@ -90,12 +90,17 @@
- static int valid_user_host(struct Client *source_p, char *user, char *host);
- static int valid_wild_card(char *user, char *host);
- static int already_placed_kline(struct Client*, char*, char*);
-+
- static void apply_kline(struct Client *source_p, struct ConfItem *aconf,
-                         const char *reason, const char *oper_reason,
- 			const char *current_date, time_t cur_time);
--
-+static void apply_dline(struct Client *source_p, struct ConfItem *aconf,
-+		        const char *reason, const char *oper_reason,
-+			const char *current_date, time_t cur_time);
- static void apply_tkline(struct Client *source_p, struct ConfItem *aconf,
-                          const char *current_date, int temporary_kline_time);
-+static void apply_tdline(struct Client *source_p, struct ConfItem *aconf,
-+		         const char *current_date, int temporary_kline_time);
- 
- 
- char buffer[IRCD_BUFSIZE];
-@@ -315,7 +320,7 @@
-   tkline_time = atoi(parv[2]);
- 
-   if (find_u_conf((char *)source_p->user->server,
--		  source_p->username, source_p->host))
-+		  source_p->username, source_p->host, CONF_OPER_K))
-     {
-       sendto_realops_flags(FLAGS_ALL, L_ALL,
- 			   "*** Received K-Line for [%s@%s] [%s], from %s!%s@%s on %s",
-@@ -395,6 +400,43 @@
-   check_klines();
- }
- 
-+/* apply_dline
-+ *
-+ * input	- dline info
-+ * output	- none
-+ * side effects - dline is added to hashtable
-+ */
-+static void apply_dline(struct Client *source_p, struct ConfItem *aconf,
-+		        const char *reason, const char *oper_reason,
-+			const char *current_date, time_t cur_time)
-+{
-+  add_conf_by_address(aconf->host, CONF_DLINE, NULL, aconf);
-+  WriteKlineOrDline(DLINE_TYPE, source_p, NULL, aconf->host, reason,
-+		    oper_reason, current_date, cur_time);
-+}
-+
-+/* apply_tdline
-+ *
-+ * input	- dline info
-+ * output	- none
-+ * side effects - tdline is added
-+ */
-+static void apply_tdline(struct Client *source_p, struct ConfItem *aconf,
-+		         const char *current_date, int tdline_time)
-+{
-+  aconf->hold = CurrentTime + tdline_time;
-+  add_temp_dline(aconf);
-+  sendto_realops_flags(FLAGS_ALL, L_ALL,
-+		       "%s added temporary %d min. D-Line for [%s] [%s]",
-+		       source_p->name, tdline_time/60, 
-+		       aconf->host, aconf->passwd);
-+
-+  sendto_one(source_p, ":%s NOTICE %s :Added temporary %d min. D-Line for [%s]",
-+             me.name, source_p->name, tdline_time/60, aconf->host);
-+  ilog(L_TRACE, "%s added temporary %d min. D-Line for [%s] [%s]",
-+       source_p->name, tdline_time/60, aconf->host, aconf->passwd);
-+}
-+
- /*
-  * valid_tkline()
-  * 
-@@ -429,8 +471,8 @@
-   if(result == 0)
-     result = 1;
- 
--  if(result > (24*60))
--    result = (24*60); /* Max it at 24 hours */
-+  if(result > (24*60*7*4))
-+    result = (24*60*7*4); /* Max it at 4 weeks */
- 
-   result = (time_t)result * (time_t)60;  /* turn it into seconds */
- 
-@@ -575,6 +617,8 @@
-   char dlbuffer[1024];
-   const char* current_date;
-   time_t cur_time;
-+  time_t tdline_time = 0;
-+  int loc = 0;
- 
-   if (!IsOperK(source_p))
-     {
-@@ -583,7 +627,23 @@
-       return;
-     }
- 
--  dlhost = parv[1];
-+  loc++;
-+
-+  tdline_time = valid_tkline(source_p, parv[loc]);
-+
-+  if(tdline_time == -1)
-+    return;
-+  else if(tdline_time) 
-+    loc++;
-+
-+  if(parc < loc+1)
-+  {
-+    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
-+	       me.name, source_p->name, "DLINE");
-+    return;
-+  }
-+  
-+  dlhost = parv[loc];
-   strlcpy(cidr_form_host, dlhost, HOSTLEN);
-   cidr_form_host[HOSTLEN] = '\0';
- 
-@@ -594,7 +654,7 @@
-               me.name, parv[0]);
-    return;
- #else
--      if (!(target_p = find_chasing(source_p, parv[1], NULL)))
-+      if (!(target_p = find_chasing(source_p, parv[loc], NULL)))
-         return;
- 
-       if(!target_p->user)
-@@ -660,14 +720,15 @@
- #endif
-     }
- 
-+  loc++;
- 
--  if (parc > 2) /* host :reason */
-+  if (parc >= loc+1) /* host :reason */
-     {
--      if (valid_comment(source_p,parv[2]) == 0)
-+      if (valid_comment(source_p,parv[loc]) == 0)
- 	return;
- 
--      if(*parv[2])
--        reason = parv[2];
-+      if(*parv[loc])
-+        reason = parv[loc];
-       else
-         reason = "No reason";
-     }
-@@ -735,18 +796,23 @@
-       oper_reason++;
-     }
- 
--  ircsprintf(dlbuffer, "%s (%s)",reason, current_date);
--
-   aconf->status = CONF_DLINE;
-   DupString(aconf->host, dlhost);
--  DupString(aconf->passwd, dlbuffer);
-+  
-+  if(tdline_time)
-+  {
-+    ircsprintf(dlbuffer, "Temporary D-line %d min. - %s (%s)",
-+	       (int)(tdline_time/60), reason, current_date);
-+    DupString(aconf->passwd, dlbuffer);
-+    apply_tdline(source_p, aconf, current_date, tdline_time);
-+  }
-+  else
-+  {
-+    ircsprintf(dlbuffer, "%s (%s)",reason, current_date);
-+    DupString(aconf->passwd, dlbuffer);
-+    apply_dline(source_p, aconf, reason, oper_reason, current_date, cur_time);
-+  }
- 
--  add_conf_by_address(aconf->host, CONF_DLINE, NULL, aconf);
--  /*
--   * Write dline to configuration file
--   */
--  WriteKlineOrDline(DLINE_TYPE, source_p, NULL, dlhost, reason,
--		    oper_reason, current_date, cur_time);
-   check_klines();
- } /* m_dline() */
- 
-diff -urN ircd-hybrid-7/modules/m_trace.c ircd-hybrid-7+lmh/modules/m_trace.c
---- ircd-hybrid-7/modules/m_trace.c	Sun Jul  7 06:45:08 2002
-+++ ircd-hybrid-7+lmh/modules/m_trace.c	Mon Jul 22 22:32:20 2002
-@@ -278,9 +278,9 @@
-     }
-     
-   for (cltmp = ClassList; doall && cltmp; cltmp = cltmp->next)
--    if (Links(cltmp) > 0)
-+    if (CurrUsers(cltmp) > 0)
-       sendto_one(source_p, form_str(RPL_TRACECLASS), me.name,
--                 parv[0], ClassName(cltmp), Links(cltmp));
-+                 parv[0], ClassName(cltmp), CurrUsers(cltmp));
- 		 
-   sendto_one(source_p, form_str(RPL_ENDOFTRACE),me.name, parv[0],tname);
- }
-diff -urN ircd-hybrid-7/modules/m_unkline.c ircd-hybrid-7+lmh/modules/m_unkline.c
---- ircd-hybrid-7/modules/m_unkline.c	Thu Jun 27 00:38:57 2002
-+++ ircd-hybrid-7+lmh/modules/m_unkline.c	Mon Jul 22 22:32:20 2002
-@@ -42,15 +42,17 @@
- #include "s_gline.h"
- #include "parse.h"
- #include "modules.h"
-+#include "s_serv.h"
- 
- 
- static void mo_unkline(struct Client*, struct Client*, int, char**);
-+static void ms_unkline(struct Client*, struct Client*, int, char**);
- static void mo_undline(struct Client*, struct Client*, int, char**);
- static void mo_ungline(struct Client*, struct Client*, int, char**);
- 
- struct Message msgtabs[] = {
-   {"UNKLINE", 0, 0, 2, 0, MFLG_SLOW, 0,
--   {m_unregistered, m_not_oper, m_error, mo_unkline}},
-+   {m_unregistered, m_not_oper, ms_unkline, mo_unkline}},
-   {"UNDLINE", 0, 0, 2, 0, MFLG_SLOW, 0,
-    {m_unregistered, m_not_oper, m_error, mo_undline}}, 
-   {"UNGLINE", 0, 0, 2, 0, MFLG_SLOW, 0,
-@@ -76,8 +78,10 @@
- const char *_version = "$Revision: 1.12 $";
- #endif
- 
-+static void remove_permkline_match(struct Client *, char *, char *);
- static int flush_write(struct Client *, FBFILE* , char *, char *);
--static int remove_tkline_match(char *,char *);
-+static int remove_temp_match(char *,char *);
-+static int remove_temp_match_list(char *, char *, dlink_list *);
- 
- 
- /*
-@@ -93,19 +97,14 @@
- static void mo_unkline (struct Client *client_p,struct Client *source_p,
-                        int parc,char *parv[])
- {
--  FBFILE *in, *out;
--  int pairme=0,error_on_write = NO;
--  char buf[BUFSIZE], buff[BUFSIZE], temppath[BUFSIZE], *user, *host, *p;
--  const char  *filename;                /* filename to use for unkline */
--  mode_t oldumask;
-+  char *user, *host;
- 
--  ircsprintf(temppath, "%s.tmp", ConfigFileEntry.klinefile);
--  
-   if (!IsOperUnkline(source_p))
-     {
-       sendto_one(source_p,":%s NOTICE %s :You need unkline = yes;",me.name,parv[0]);
-       return;
-     }
-+
-   if (parc < 2)
-     {
-       sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
-@@ -135,7 +134,21 @@
-       return;
-     }
- 
--  if (remove_tkline_match(host, user))
-+  /* possible remote kline.. */
-+  if(parc > 3)
-+  {
-+    if(irccmp(parv[2], "ON") == 0)
-+    {
-+      sendto_server(NULL, source_p, NULL, CAP_UNKLN, NOCAPS, LL_ICLIENT,
-+		    ":%s UNKLINE %s %s %s",
-+		    source_p->name, parv[3], user, host);
-+      
-+      if(match(parv[3], me.name) == 0)
-+        return;
-+    }
-+  }
-+
-+  if(remove_temp_match(host, user))
-     {
-       sendto_one(source_p,
- 		 ":%s NOTICE %s :Un-klined [%s@%s] from temporary k-lines",
-@@ -148,10 +161,92 @@
-       return;
-     }
- 
-+  remove_permkline_match(source_p, host, user);
-+}
-+
-+/* ms_unkline()
-+ *
-+ * input	- pointer to servere
-+ * 		- pointer to client
-+ * 		- parm count
-+ * 		- params
-+ * output	- none
-+ * side effects - kline is removed if matching shared {} is found.
-+ */
-+static void ms_unkline(struct Client *client_p, struct Client *source_p,
-+		     int parc, char *parv[])
-+{
-+  char *kuser;
-+  char *khost;
-+  
-+  if(parc != 4)
-+    return;
-+
-+  /* parv[0]  parv[1]        parv[2]  parv[3]
-+   * oper     target server  user     host    */
-+  sendto_server(client_p, source_p, NULL, CAP_UNKLN, NOCAPS, LL_ICLIENT,
-+		":%s UNKLINE %s %s %s",
-+		parv[0], parv[1], parv[2], parv[3]);
-+
-+  kuser = parv[2];
-+  khost = parv[3];
-+
-+  if(!match(parv[1], me.name))
-+    return;
-+
-+  if(!IsPerson(source_p))
-+    return;
-+
-+  if(find_u_conf((char *)source_p->user->server, source_p->username,
-+                 source_p->host, CONF_OPER_UNKLINE))
-+  {
-+    sendto_realops_flags(FLAGS_ALL, L_ALL,
-+	       "*** Received Un-kline for [%s@%s], from %s",
-+	       kuser, khost, get_oper_name(source_p));
-+
-+    if(remove_temp_match(khost, kuser))
-+    {
-+      sendto_one(source_p,
-+	         ":%s NOTICE %s :Un-klined [%s@%s] from temporary k-lines",
-+		 me.name, parv[0],kuser, khost);
-+
-+      sendto_realops_flags(FLAGS_ALL, L_ALL,
-+	                   "%s has removed the temporary K-Line for: [%s@%s]",
-+			   get_oper_name(source_p), kuser, khost);
-+
-+      ilog(L_NOTICE, "%s removed temporary K-Line for [%s@%s]",
-+	   source_p->name, kuser, khost);
-+      return;
-+    }
-+
-+    remove_permkline_match(source_p, khost, kuser);    
-+  }
-+}
-+
-+/* remove_permkline_match()
-+ *
-+ * hunts for a permanent kline, and removes it.
-+ */
-+static void remove_permkline_match(struct Client *source_p,
-+	                           char *host, char *user)
-+{
-+  FBFILE *in, *out;
-+  int pairme = 0;
-+  int error_on_write = NO;
-+  char buf[BUFSIZE];
-+  char buff[BUFSIZE];
-+  char temppath[BUFSIZE];
-+  const char *filename;
-+  mode_t oldumask;
-+  char *p;
-+  
-+  ircsprintf(temppath, "%s.tmp", ConfigFileEntry.klinefile);
-+  
-   filename = get_conf_name(KLINE_TYPE);
-+
-   if ((in = fbopen(filename, "r")) == 0)
-     {
--      sendto_one(source_p, ":%s NOTICE %s :Cannot open %s", me.name, parv[0],
-+      sendto_one(source_p, ":%s NOTICE %s :Cannot open %s", me.name, source_p->name,
- 		 filename);
-       return;
-     }
-@@ -159,8 +254,8 @@
-   oldumask = umask(0);
-   if ((out = fbopen(temppath, "w")) == 0)
-     {
--      sendto_one(source_p, ":%s NOTICE %s :Cannot open %s", me.name, parv[0],
--		 temppath);
-+      sendto_one(source_p, ":%s NOTICE %s :Cannot open %s",
-+	         me.name, source_p->name, temppath);
-       fbclose(in);
-       umask(oldumask);
-       return;
-@@ -231,6 +326,11 @@
-     {
-       sendto_one(source_p, ":%s NOTICE %s :No K-Line for %s@%s",
-                  me.name, source_p->name,user,host);
-+
-+      if(!MyClient(source_p))
-+        sendto_realops_flags(FLAGS_ALL, L_ALL, 
-+			"*** Remote Un-Kline for [%s@%s] is not K-Lined.",
-+			user, host);
-       return;
-     }
- 
-@@ -245,6 +345,8 @@
-   return; 
- }
- 
-+    
-+  
- /*
-  * flush_write()
-  *
-@@ -287,30 +389,45 @@
-  * Side effects: Any matching tklines are removed.
-  */
- static int
--remove_tkline_match(char *host, char *user)
-+remove_temp_match(char *host, char *user)
- {
--  struct ConfItem *tk_c;
--  dlink_node *tk_n;
-+  if(remove_temp_match_list(host, user, &temporary_hour) ||
-+     remove_temp_match_list(host, user, &temporary_day) ||
-+     remove_temp_match_list(host, user, &temporary_min) ||
-+     remove_temp_match_list(host, user, &temporary_week))
-+    return YES;
-+
-+  return NO;
-+}
-+
-+static int
-+remove_temp_match_list(char *host, char *user, dlink_list *temp_list)
-+{
-+  struct ConfItem *aconf;
-+  dlink_node *ptr;
-   struct irc_inaddr addr, caddr;
-   int nm_t, cnm_t, bits, cbits;
-   nm_t = parse_netmask(host, &addr, &bits);
- 
--  for (tk_n=temporary_klines.head; tk_n; tk_n=tk_n->next)
-+  for(ptr = temp_list->head; ptr; ptr = ptr->next)
-     {
--      tk_c = (struct ConfItem*)tk_n->data;
--      cnm_t = parse_netmask(tk_c->host, &caddr, &cbits);
--      if (cnm_t != nm_t || irccmp(user, tk_c->user))
-+      aconf = (struct ConfItem*)ptr->data;
-+
-+      cnm_t = parse_netmask(aconf->host, &caddr, &cbits);
-+
-+      if (cnm_t != nm_t || (user && irccmp(user, aconf->user)))
- 	continue;
--      if ((nm_t==HM_HOST && !irccmp(tk_c->host, host)) ||
-+
-+      if ((nm_t==HM_HOST && !irccmp(aconf->host, host)) ||
- 	  (nm_t==HM_IPV4 && bits==cbits && match_ipv4(&addr, &caddr, bits))
- #ifdef IPV6
- 	  || (nm_t==HM_IPV6 && bits==cbits && match_ipv6(&addr, &caddr, bits))
- #endif
- 	  )
- 	{
--	  dlinkDelete(tk_n, &temporary_klines);
--	  free_dlink_node(tk_n);
--	  delete_one_address_conf(tk_c->host, tk_c);
-+	  dlinkDelete(ptr, temp_list);
-+	  free_dlink_node(ptr);
-+	  delete_one_address_conf(aconf->host, aconf);
- 	  return YES;
- 	}
-     }
-@@ -333,7 +450,8 @@
-   FBFILE* in;
-   FBFILE* out;
-   char  buf[BUFSIZE], buff[BUFSIZE], temppath[BUFSIZE], *p;
--  const char  *filename,*cidr, *found_cidr;
-+  const char  *filename, *found_cidr;
-+  char *cidr;
-   int pairme = NO, error_on_write = NO;
-   mode_t oldumask;
- 
-@@ -356,6 +474,18 @@
-       return;
-     }
- #endif
-+
-+  if(remove_temp_match(cidr, NULL))
-+  {
-+    sendto_one(source_p,
-+	       ":%s NOTICE %s :Un-dlined [%s] from temporary D-lines",
-+	       me.name, parv[0], cidr);
-+    sendto_realops_flags(FLAGS_ALL, L_ALL,
-+                         "%s has removed the temporary D-Line for: [%s]",
-+			 get_oper_name(source_p), cidr);
-+    ilog(L_NOTICE, "%s removed temporary D-Line for [%s]", parv[0], cidr);
-+    return;
-+  }
- 
-   filename = get_conf_name(DLINE_TYPE);
- 
-diff -urN ircd-hybrid-7/modules/m_xline.c ircd-hybrid-7+lmh/modules/m_xline.c
---- ircd-hybrid-7/modules/m_xline.c	Thu Jan  1 01:00:00 1970
-+++ ircd-hybrid-7+lmh/modules/m_xline.c	Mon Jul 22 22:32:20 2002
-@@ -0,0 +1,146 @@
-+/* modules/m_xline.c
-+ * Copyright (C) 2002 Hybrid Development Team
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions are
-+ * met:
-+ *
-+ * 1.Redistributions of source code must retain the above copyright notice,
-+ *   this list of conditions and the following disclaimer.
-+ * 2.Redistributions in binary form must reproduce the above copyright
-+ *   notice, this list of conditions and the following disclaimer in the
-+ *   documentation and/or other materials provided with the distribution.
-+ * 3.The name of the author may not be used to endorse or promote products
-+ *   derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * $Id: lmh.diff,v 1.12 2002/07/22 21:37:24 leeh Exp $
-+ */
-+
-+#include "stdinc.h"
-+#include "tools.h"
-+#include "handlers.h"
-+#include "send.h"
-+#include "channel.h"
-+#include "client.h"
-+#include "common.h"
-+#include "config.h"
-+#include "class.h"
-+#include "ircd.h"
-+#include "numeric.h"
-+#include "memory.h"
-+#include "s_log.h"
-+#include "s_serv.h"
-+#include "whowas.h"
-+#include "irc_string.h"
-+#include "hash.h"
-+#include "msg.h"
-+#include "parse.h"
-+#include "modules.h"
-+#include "s_conf.h"
-+
-+static void mo_xline(struct Client *client_p, struct Client *source_p,
-+                    int parc, char *parv[]);
-+
-+struct Message xline_msgtab = {
-+  "XLINE", 0, 0, 3, 0, MFLG_SLOW, 0,
-+  {m_unregistered, m_not_oper, m_ignore, mo_xline}
-+};
-+
-+void
-+_modinit(void)
-+{
-+  mod_add_cmd(&xline_msgtab);
-+}
-+
-+void
-+_moddeinit(void)
-+{
-+  mod_del_cmd(&xline_msgtab);
-+}
-+
-+char *_version = "$Revision: 1.12 $";
-+
-+/* m_xline()
-+ *
-+ * parv[1] - thing to xline
-+ * parv[2] - optional type/reason
-+ * parv[3] - reason
-+ */
-+void 
-+mo_xline(struct Client *client_p, struct Client *source_p,
-+         int parc, char *parv[])
-+{
-+  char buffer[BUFSIZE*2];
-+  FBFILE *out;
-+  struct ConfItem *aconf;
-+  char *reason;
-+  int xtype = 1;
-+
-+  if(!IsOperXline(source_p))
-+  {
-+    sendto_one(source_p, ":%s NOTICE %s :You need xline = yes;",
-+               me.name, source_p->name);
-+    return;
-+  }
-+
-+  if(parc > 3)
-+  {
-+    xtype = atoi(parv[2]);
-+    reason = parv[3];
-+  }
-+  else
-+  {
-+    if(IsDigit(*parv[2]))
-+    {
-+      xtype = atoi(parv[2]);
-+      reason = "No Reason";
-+    }
-+    else
-+      reason = parv[2];
-+  }
-+
-+  sendto_realops_flags(FLAGS_ALL, L_ALL,
-+		       "%s added X-line for [%s] [%s]",
-+		       get_oper_name(source_p), parv[1], reason);
-+  sendto_one(source_p, ":%s NOTICE %s :Added X-line for [%s] [%s]",
-+             me.name, source_p->name, parv[1], reason);
-+  ilog(L_TRACE, "%s added X-line for [%s] [%s]",
-+       source_p->name, parv[1], reason);
-+  
-+  aconf = make_conf();
-+  aconf->status = CONF_XLINE;
-+  DupString(aconf->host, parv[1]);
-+  DupString(aconf->passwd, reason);
-+  aconf->port = xtype;
-+
-+  collapse(aconf->host);
-+  conf_add_x_conf(aconf);
-+
-+  if((out = fbopen(ConfigFileEntry.xlinefile, "a")) == NULL)
-+  {
-+    sendto_realops_flags(FLAGS_ALL, L_ALL,
-+		         "*** Problem opening %s", ConfigFileEntry.xlinefile);
-+    return;
-+  }
-+
-+  ircsprintf(buffer, "\"%s\",\"%d\",\"%s\",\"%s\",%lu\n",
-+             parv[1], xtype, reason, get_oper_name(source_p), CurrentTime);
-+
-+  if(fbputs(buffer, out) == -1)
-+    sendto_realops_flags(FLAGS_ALL, L_ALL,
-+		         "*** Problem writing to %s", ConfigFileEntry.xlinefile);
-+
-+  fbclose(out);
-+}
-diff -urN ircd-hybrid-7/src/class.c ircd-hybrid-7+lmh/src/class.c
---- ircd-hybrid-7/src/class.c	Sat May 25 00:34:45 2002
-+++ ircd-hybrid-7+lmh/src/class.c	Mon Jul 22 22:32:20 2002
-@@ -45,19 +45,19 @@
- 
- struct Class* ClassList;
- 
--static struct Class *make_class()
-+struct Class *
-+make_class(void)
- {
-   struct Class        *tmp;
- 
-   tmp = (struct Class *)MyMalloc(sizeof(struct Class));
--  tmp->className = NULL;
--  tmp->servname = NULL;
-+  memset(tmp, 0, sizeof(struct Class));
-   return tmp;
- }
- 
- void free_class(struct Class *tmp)
- {
--  MyFree(tmp->className);
-+  MyFree(tmp->class_name);
-   MyFree((char *)tmp);
- }
- 
-@@ -161,57 +161,40 @@
-   return (DEFAULT_CONNECTFREQUENCY);
- }
- 
--/*
-- * add_class
-+/* add_class()
-  *
-- * inputs	- classname to use
-- * 		- ping frequency
-- *		- connection frequency
-- * 		- maximum links
-- *		- max sendq
-- * output	- NONE
-- * side effects -
-- * When adding a class, check to see if it is already present first.
-- * if so, then update the information for that class, rather than create
-- * a new entry for it and later delete the old entry.
-- * if no present entry is found, then create a new one and add it in
-- * immediately after the first one (class 0).
-+ * input	- class to add
-+ * output	-
-+ * side effects - class is added to ClassList if new, else old class
-+ *                is updated with new values.
-  */
--void    add_class(char *classname,
--                  int ping,
--                  int confreq,
--                  int maxli,
--                  long sendq)
-+void
-+add_class(struct Class *classptr)
- {
--  struct Class *t, *p;
-+  struct Class *tmpptr;
- 
--  if(!classname)
--    return;
-+  tmpptr = find_class(classptr->class_name);
- 
--  t = find_class(classname);
--  if (t == ClassList)
--    {
--      p = make_class();
--      p->next = t->next;
--      t->next = p;
--    }
-+  if(tmpptr == ClassList)
-+  {
-+    classptr->next = tmpptr->next;
-+    tmpptr->next = classptr;
-+    CurrUsers(classptr) = 0;
-+  }
-   else
--    p = t;
--  Debug((DEBUG_DEBUG,
--         "Add Class %s: p %x t %x - cf: %d pf: %d ml: %d sq: %l",
--         classname, p, t, confreq, ping, maxli, sendq));
--
--  /* classname already known to be non NULL */
--  MyFree(ClassName(p));
--  DupString(ClassName(p),classname);
--  ConFreq(p) = confreq;
--  PingFreq(p) = ping;
--  MaxLinks(p) = maxli;
--  MaxSendq(p) = (sendq > 0) ? sendq : DEFAULT_SENDQ;
--  if (p != t)
--    Links(p) = 0;
-+  {
-+    MaxUsers(tmpptr) = MaxUsers(classptr);
-+    MaxLocal(tmpptr) = MaxLocal(classptr);
-+    MaxGlobal(tmpptr) = MaxGlobal(classptr);
-+    MaxIdent(tmpptr) = MaxIdent(classptr);
-+    PingFreq(tmpptr) = PingFreq(classptr);
-+    MaxSendq(tmpptr) = MaxSendq(classptr);
-+    
-+    free_class(classptr);
-+  }
- }
- 
-+
- /*
-  * find_class
-  *
-@@ -249,14 +232,10 @@
- 
-   for (cltmp2 = cltmp = ClassList; cltmp; cltmp = cltmp2->next)
-     {
--      Debug((DEBUG_DEBUG,
--             "ClassName %s Class %d : CF: %d PF: %d ML: %d LI: %d SQ: %ld",
--             ClassName(cltmp),ClassType(cltmp), ConFreq(cltmp), PingFreq(cltmp),
--             MaxLinks(cltmp), Links(cltmp), MaxSendq(cltmp)));
--      if (MaxLinks(cltmp) < 0)
-+      if (MaxUsers(cltmp) < 0)
-         {
-           cltmp2->next = cltmp->next;
--          if (Links(cltmp) <= 0)
-+          if (CurrUsers(cltmp) <= 0)
-             free_class(cltmp);
-         }
-       else
-@@ -275,14 +254,11 @@
- {
-   ClassList = make_class();
- 
--  ClassType(ClassList) = 0;
-   DupString(ClassName(ClassList),"default");
-   ConFreq(ClassList) = DEFAULT_CONNECTFREQUENCY;
-   PingFreq(ClassList) = DEFAULT_PINGFREQUENCY;
--  MaxLinks(ClassList) = ConfigFileEntry.maximum_links;
-+  MaxUsers(ClassList) = 1;
-   MaxSendq(ClassList) = DEFAULT_SENDQ;
--  Links(ClassList) = 0;
--  ClassList->next = NULL;
- }
- 
- /*
-@@ -299,7 +275,8 @@
-   for (cltmp = ClassList; cltmp; cltmp = cltmp->next)
-     sendto_one(source_p, form_str(RPL_STATSYLINE), me.name, source_p->name,
-                'Y', ClassName(cltmp), PingFreq(cltmp), ConFreq(cltmp),
--               MaxLinks(cltmp), MaxSendq(cltmp));
-+               MaxUsers(cltmp), MaxSendq(cltmp),
-+	       MaxLocal(cltmp), MaxIdent(cltmp), MaxGlobal(cltmp), MaxIdent(cltmp));
- }
- 
- /*
-@@ -311,7 +288,7 @@
-  */
- long    get_sendq(struct Client *client_p)
- {
--  int   sendq = DEFAULT_SENDQ, retc = BAD_CLIENT_CLASS;
-+  int   sendq = DEFAULT_SENDQ;
-   dlink_node      *ptr;
-   struct Class    *cl;
-   struct ConfItem *aconf;
-@@ -326,7 +303,7 @@
-         if ( !(cl = aconf->c_class))
-           continue;
- 
--        if (ClassType(cl) > retc)
-+	if(ClassName(cl))
-           sendq = MaxSendq(cl);
-       }
-   return sendq;
-diff -urN ircd-hybrid-7/src/client.c ircd-hybrid-7+lmh/src/client.c
---- ircd-hybrid-7/src/client.c	Sat Jul 13 01:48:22 2002
-+++ ircd-hybrid-7+lmh/src/client.c	Mon Jul 22 22:32:20 2002
-@@ -998,6 +998,9 @@
- 
- 	if (HasID(source_p))
- 	  del_from_id_hash_table(source_p->user->id, source_p);
-+
-+	if(ConfigFileEntry.use_global_limits)
-+	  del_from_hostname_hash_table(source_p->host, source_p);
-   
-         /* again, this is all that is needed */
-     }
-diff -urN ircd-hybrid-7/src/hash.c ircd-hybrid-7+lmh/src/hash.c
---- ircd-hybrid-7/src/hash.c	Fri Jun  7 22:59:17 2002
-+++ ircd-hybrid-7+lmh/src/hash.c	Mon Jul 22 22:32:20 2002
-@@ -39,6 +39,8 @@
- #include "fdlist.h"
- #include "fileio.h"
- #include "memory.h"
-+#include "msg.h"
-+#include "handlers.h"
- 
- /* New hash code */
- /*
-@@ -47,11 +49,19 @@
- 
- static unsigned int hash_channel_name(const char* name);
- 
-+#ifdef FL_DEBUG
-+struct Message hash_msgtab = {
-+  "HASH", 0, 0, 1, 0, MFLG_SLOW, 0,
-+  {m_ignore, m_ignore, m_ignore, mo_hash}
-+};
-+#endif
-+
- #ifdef DEBUGMODE
- static struct HashEntry* clientTable = NULL;
- static struct HashEntry* channelTable = NULL;
- static struct HashEntry* idTable = NULL;
- static struct HashEntry* resvTable = NULL;
-+static struct HashEntry *hostTable = NULL;
- static int clhits;
- static int clmiss;
- static int chhits;
-@@ -64,6 +74,7 @@
- static struct HashEntry channelTable[CH_MAX];
- static struct HashEntry idTable[U_MAX];
- static struct HashEntry resvTable[R_MAX];
-+static struct HashEntry hostTable[HOST_MAX];
- 
- #endif
- 
-@@ -93,7 +104,6 @@
- }
- 
- /*
-- *
-  * look in whowas.c for the missing ...[WW_MAX]; entry
-  */
- 
-@@ -175,6 +185,17 @@
-   return (h & (CH_MAX - 1));
- }
- 
-+static unsigned int
-+hash_hostname(const char *name)
-+{
-+  int i = 30;
-+  unsigned int h = 0;
-+
-+  while(*name && --i)
-+    h = (h << 4) - (h + (unsigned char)ToLower(*name++));
-+
-+  return (h & (HOST_MAX - 1));
-+}
- 
- /*
-  * hash_resv_channel()
-@@ -232,7 +253,7 @@
- }
- 
- static void
--clear_channel_hash_table()
-+clear_channel_hash_table(void)
- {
- #ifdef DEBUGMODE
-   chmiss = 0;
-@@ -245,6 +266,16 @@
- }
- 
- static void
-+clear_hostname_hash_table(void)
-+{
-+#ifdef DEBUGMODE
-+  if(!hostTable)
-+    hostTable = (struct HashEntry *)MyMalloc(HOST_MAX * sizeof(struct HashEntry));
-+#endif
-+  memset(hostTable, 0, sizeof(struct HashEntry) * HOST_MAX);
-+}
-+
-+static void
- clear_resv_hash_table()
- {
- #ifdef DEBUGMODE
-@@ -263,6 +294,7 @@
-   clear_client_hash_table();
-   clear_channel_hash_table();
-   clear_id_hash_table();
-+  clear_hostname_hash_table();
-   clear_resv_hash_table();
- }
- 
-@@ -301,6 +333,24 @@
-   ++clientTable[hashv].hits;
- }
- 
-+void
-+add_to_hostname_hash_table(const char *hostname, struct Client *client_p)
-+{
-+  unsigned int hashv;
-+
-+  assert(hostname != NULL);
-+  assert(client_p != NULL);
-+
-+  if(hostname == NULL || client_p == NULL)
-+    return;
-+
-+  hashv = hash_hostname(hostname);
-+  client_p->hostnext = (struct Client *)hostTable[hashv].list;
-+  hostTable[hashv].list = (void *)client_p;
-+  hostTable[hashv].links++;
-+  hostTable[hashv].hits++;
-+}
-+
- /*
-  * add_to_resv_hash_table
-  */
-@@ -445,6 +495,37 @@
-     }
- }
- 
-+void
-+del_from_hostname_hash_table(const char *hostname, struct Client *client_p)
-+{
-+  struct Client *target_p;
-+  struct Client *last_p = NULL;
-+  unsigned int hashv;
-+
-+  if(hostname == NULL || client_p == NULL)
-+    return;
-+
-+  hashv = hash_hostname(hostname);
-+  for(target_p = (struct Client *)hostTable[hashv].list; target_p;
-+      target_p = target_p->hostnext)
-+  {
-+    if(target_p == client_p)
-+    {
-+      if(last_p)
-+        last_p->hostnext = client_p->hostnext;
-+      else
-+        hostTable[hashv].list = (void *)client_p->hostnext;
-+
-+      if(hostTable[hashv].links > 0)
-+        hostTable[hashv].links--;
-+
-+      return;
-+    }
-+
-+    last_p = target_p;
-+  }
-+}
-+  
- /*
-  * del_from_resv_hash_table()
-  */
-@@ -552,6 +633,25 @@
-   return (NULL);
- }
- 
-+struct Client *
-+find_hostname(const char *hostname)
-+{
-+  struct Client *target_p;
-+  unsigned int hashv;
-+
-+  if(hostname == NULL)
-+    return NULL;
-+
-+  hashv = hash_hostname(hostname);
-+  for(target_p = (struct Client *)hostTable[hashv].list; target_p;
-+      target_p = target_p->hostnext)
-+  {
-+    if(irccmp(target_p->host, hostname) == 0)
-+      return target_p;
-+  }
-+
-+  return NULL;
-+}
- 
- /*
-  * Whats happening in this next loop ? Well, it takes a name like
-@@ -784,8 +884,72 @@
-   return(NULL);
- }  
- 
-+#ifdef FL_DEBUG
-+void
-+mo_hash(struct Client *source_p, struct Client *client_p, 
-+        int argc,char *argv[])
-+{
-+  int i;
-+  struct Client *target_p;
-+  u_long used_count;
-+  int deepest_link;
-+  u_long average_link;
-+  int this_link;
-+  int node[11];
-+
-+  for(i = 0; i < 11; i++)
-+    node[i] = 0;
-+
-+  deepest_link = used_count = this_link = average_link = 0;
-+
-+  sendto_one(source_p, ":%s %d %s :Hostname hash statistics",
-+               me.name, RPL_STATSDEBUG, source_p->name);
-+  
-+  for(i = 0; i < HOST_MAX; i++)
-+  {
-+    this_link = 0;
-+
-+    for(target_p = hostTable[i].list; target_p; target_p = target_p->hostnext)
-+    {
-+      used_count++;
-+      this_link++;
-+    }
- 
-+    if(this_link > deepest_link)
-+      deepest_link = this_link;
- 
-+    if(this_link >= 10)
-+    {
-+      int j = 0;
-+      for(target_p = hostTable[i].list; target_p; target_p = target_p->hostnext) 
-+      {
-+        sendto_one(source_p, ":%s %d %s :Node[%d][%d] %s",
-+                   me.name, RPL_STATSDEBUG, source_p->name, i, j,
-+		   target_p->host);
-+	j++;
-+      }
- 
-+      this_link = 10;
-+    }
- 
-+    node[this_link]++;
-+  }
- 
-+  for(i = 1; i < 11; i++)
-+    average_link += node[i] * i;
-+    
-+  sendto_one(source_p, ":%s %d %s :Hash Size: %d - Used %lu %f%% - Free %lu %f%%",
-+             me.name, RPL_STATSDEBUG, source_p->name, HOST_MAX,
-+	     used_count, (float)((used_count / HOST_MAX) * 100), 
-+	     HOST_MAX - used_count, 
-+	     (float)((float)((float)(HOST_MAX - used_count) / HOST_MAX) * 100));
-+  
-+  sendto_one(source_p, ":%s %d %s :Deepest Link: %d - Average  %f",
-+             me.name, RPL_STATSDEBUG, source_p->name, deepest_link,
-+	     (float)(average_link / used_count));
-+
-+  for(i = 0; i < 11; i++)
-+    sendto_one(source_p, ":%s %d %s :Nodes with %d entries: %d",
-+               me.name, RPL_STATSDEBUG, source_p->name, i, node[i]);
-+}
-+#endif
-diff -urN ircd-hybrid-7/src/ircd.c ircd-hybrid-7+lmh/src/ircd.c
---- ircd-hybrid-7/src/ircd.c	Fri Jul 19 13:31:47 2002
-+++ ircd-hybrid-7+lmh/src/ircd.c	Mon Jul 22 22:32:20 2002
-@@ -261,6 +261,8 @@
-    STRING, "File to use for ircd.conf"},
-   {"klinefile",  &ConfigFileEntry.klinefile, 
-    STRING, "File to use for klines.conf"},
-+  {"xlinefile",  &ConfigFileEntry.xlinefile,
-+   STRING, "File to use for xlines.conf"},
-   {"logfile",    &logFileName, 
-    STRING, "File to use for ircd.log"},
-   {"pidfile",    &pidFileName,
-@@ -568,10 +570,12 @@
-   memset(&oper_list, 0, sizeof(oper_list));
-   memset(&lazylink_channels, 0, sizeof(lazylink_channels));
- 
-+#if 0
-   lclient_list.head = lclient_list.tail = NULL;
-   oper_list.head = oper_list.tail = NULL;
-   serv_list.head = serv_list.tail = NULL;
-   global_serv_list.head = global_serv_list.tail = NULL;
-+#endif
- 
-   GlobalClientList = &me;       /* Pointer to beginning of Client list */
- 
-@@ -590,6 +594,7 @@
-   ConfigFileEntry.klinefile = KPATH;    /* Server kline file */
-   ConfigFileEntry.dlinefile = DLPATH;   /* dline file */
-   ConfigFileEntry.glinefile = GPATH;    /* gline log file */
-+  ConfigFileEntry.xlinefile = XPATH;
- 
-   myargv = argv;
-   umask(077);                /* better safe than sorry --SRB */
-@@ -740,7 +745,10 @@
- 
-   eventAddIsh("cleanup_glines", cleanup_glines, NULL, CLEANUP_GLINES_TIME);
- 
--  eventAddIsh("cleanup_tklines", cleanup_tklines, NULL, CLEANUP_TKLINES_TIME);
-+  eventAddIsh("cleanup_temps_min", cleanup_temps_min, NULL, 60);
-+  eventAddIsh("cleanup_temps_hour", cleanup_temps_hour, NULL, 3600);
-+  eventAddIsh("cleanup_temps_day", cleanup_temps_day, NULL, 86400);
-+  eventAddIsh("cleanup_temps_week", cleanup_temps_week, NULL, 604800);
- 
-   /* We want try_connections to be called as soon as possible now! -- adrian */
-   /* No, 'cause after a restart it would cause all sorts of nick collides */
-diff -urN ircd-hybrid-7/src/ircd_lexer.l ircd-hybrid-7+lmh/src/ircd_lexer.l
---- ircd-hybrid-7/src/ircd_lexer.l	Mon Jul 22 11:44:00 2002
-+++ ircd-hybrid-7+lmh/src/ircd_lexer.l	Mon Jul 22 22:32:20 2002
-@@ -167,6 +167,7 @@
- exempt		{ return EXEMPT; }
- fakename	{ return FAKENAME; }
- flatten_links	{ return FLATTEN_LINKS; }
-+flood_exempt	{ return FLOOD_EXEMPT; }
- fname_foperlog  { return FNAME_FOPERLOG; }
- fname_operlog   { return FNAME_OPERLOG; }
- fname_userlog   { return FNAME_USERLOG; }
-@@ -221,7 +222,9 @@
- no_join_on_split   { return NO_JOIN_ON_SPLIT; }
- no_oper_flood   { return NO_OPER_FLOOD; }
- no_tilde	{ return NO_TILDE; }
--number_per_ip	{ return NUMBER_PER_IP; }
-+number_per_ident	{ return NUMBER_PER_IDENT; }
-+number_per_ip		{ return NUMBER_PER_IP; }
-+number_per_ip_global	{ return NUMBER_PER_IP_GLOBAL; }
- oper		{ return OPERATOR; }
- oper_log        { return OPER_LOG; }
- operator	{ return OPERATOR; }
-@@ -256,6 +259,7 @@
- use_anonops	{ return USE_ANONOPS; }
- use_egd 	{ return USE_EGD; }
- use_except	{ return USE_EXCEPT; }
-+use_global_limits	{ return USE_GLOBAL_LIMITS; }
- use_halfops     { return USE_HALFOPS; }
- use_help        { return USE_HELP; }
- use_invex	{ return USE_INVEX; }
-@@ -267,6 +271,7 @@
- vhost	{ return VHOST; }
- vhost6	{ return VHOST6; }
- warn		{ return WARN; }
-+xline		{ return XLINE; }
- yes		{ return TYES; }
- 
- failed_oper_notice      { return FAILED_OPER_NOTICE; }
-diff -urN ircd-hybrid-7/src/ircd_parser.y ircd-hybrid-7+lmh/src/ircd_parser.y
---- ircd-hybrid-7/src/ircd_parser.y	Fri Jul 12 00:40:22 2002
-+++ ircd-hybrid-7+lmh/src/ircd_parser.y	Mon Jul 22 22:32:20 2002
-@@ -37,6 +37,7 @@
- #include "event.h"
- #include "s_log.h"
- #include "client.h"	/* for FLAGS_ALL only */
-+#include "class.h"
- #include "irc_string.h"
- #include "ircdauth.h"
- #include "memory.h"
-@@ -57,6 +58,8 @@
- 
- int yyparse();
- 
-+static struct Class *yy_class = NULL;
-+
- static struct ConfItem *yy_achead = NULL;
- static struct ConfItem *yy_aconf = NULL;
- static struct ConfItem *yy_aprev = NULL;
-@@ -70,12 +73,6 @@
- 
- static dlink_node *node;
- 
--char  *class_name_var;
--int   class_ping_time_var;
--int   class_number_per_ip_var;
--int   class_max_number_var;
--int   class_sendq_var;
--
- static char  *listener_address;
- 
- char *resv_reason;
-@@ -130,6 +127,7 @@
- %token  FAILED_OPER_NOTICE
- %token  FAKENAME
- %token  FLATTEN_LINKS
-+%token	FLOOD_EXEMPT
- %token  FNAME_FOPERLOG
- %token  FNAME_OPERLOG
- %token  FNAME_USERLOG
-@@ -188,7 +186,9 @@
- %token  NO_OPER_FLOOD
- %token  NO_TILDE
- %token  NUMBER
-+%token  NUMBER_PER_IDENT
- %token  NUMBER_PER_IP
-+%token  NUMBER_PER_IP_GLOBAL
- %token  OPERATOR
- %token  OPER_LOG
- %token  OPER_ONLY_UMODES
-@@ -270,6 +270,7 @@
- %token	USE_ANONOPS
- %token  USE_EGD
- %token  USE_EXCEPT
-+%token	USE_GLOBAL_LIMITS
- %token  USE_HALFOPS
- %token  USE_HELP
- %token  USE_INVEX
-@@ -280,6 +281,7 @@
- %token  VHOST6
- %token  WARN
- %token  WARN_NO_NLINE
-+%token	XLINE
- 
- %type   <string>   QSTRING
- %type   <number>   NUMBER
-@@ -749,8 +751,8 @@
- oper_items:     oper_items oper_item |
-                 oper_item;
- 
--oper_item:      oper_name  | oper_user | oper_password |
--                oper_class | oper_global_kill | oper_remote |
-+oper_item:      oper_name  | oper_user | oper_password | oper_flood_exempt |
-+                oper_class | oper_global_kill | oper_remote | oper_xline |
-                 oper_kline | oper_unkline | oper_gline | oper_nick_changes |
-                 oper_die | oper_rehash | oper_admin | oper_rsa_public_key_file | error;
- 
-@@ -875,6 +877,10 @@
-               |
-               UNKLINE '=' TNO ';' { yy_achead->port &= ~CONF_OPER_UNKLINE; } ;
- 
-+oper_xline: XLINE '=' TYES ';' { yy_achead->port |= CONF_OPER_XLINE; }
-+            |
-+            XLINE '=' TNO ';' { yy_achead->port &= ~CONF_OPER_XLINE; };
-+
- oper_gline: GLINE '=' TYES ';' { yy_achead->port |= CONF_OPER_GLINE;}
-             |
-             GLINE '=' TNO ';' { yy_achead->port &= ~CONF_OPER_GLINE; };
-@@ -895,28 +901,24 @@
-             |
-             ADMIN '=' TNO ';' { yy_achead->port &= ~CONF_OPER_ADMIN;} ;
- 
-+oper_flood_exempt: FLOOD_EXEMPT '=' TYES ';' { yy_achead->port |= CONF_OPER_FLOOD_EXEMPT; }
-+                   |
-+		   FLOOD_EXEMPT '=' TNO ';' { yy_achead->port &= ~CONF_OPER_FLOOD_EXEMPT; };
-+
- /***************************************************************************
-  *  section class
-  ***************************************************************************/
- 
- class_entry:    CLASS 
-   {
--    MyFree(class_name_var);
--    class_name_var = NULL;
--    class_ping_time_var = 0;
--    class_number_per_ip_var = 0;
--    class_max_number_var = 0;
--    class_sendq_var = 0;
-+    yy_class = make_class();
-   }
-   '{' class_items '}' ';'
-   {
--
--    add_class(class_name_var,class_ping_time_var,
--              class_number_per_ip_var, class_max_number_var,
--              class_sendq_var );
--
--    MyFree(class_name_var);
--    class_name_var = NULL;
-+    if(yy_class->class_name)
-+      add_class(yy_class);
-+    else
-+      free_class(yy_class);
-   };
- 
- class_items:    class_items class_item |
-@@ -925,6 +927,8 @@
- class_item:     class_name |
-                 class_ping_time |
-                 class_number_per_ip |
-+		class_number_per_ip_global |
-+		class_number_per_ident |
-                 class_connectfreq |
-                 class_max_number |
-                 class_sendq |
-@@ -932,33 +936,42 @@
- 
- class_name:     NAME '=' QSTRING ';' 
-   {
--    MyFree(class_name_var);
--    DupString(class_name_var, yylval.string);
-+    DupString(yy_class->class_name, yylval.string);
-   };
- 
- class_ping_time:        PING_TIME '=' timespec ';'
-   {
--    class_ping_time_var = $3;
-+    yy_class->ping_freq = $3;
-   };
- 
- class_number_per_ip:    NUMBER_PER_IP '=' NUMBER ';'
-   {
--    class_number_per_ip_var = $3;
-+    yy_class->max_local = $3;
-+  };
-+
-+class_number_per_ip_global: NUMBER_PER_IP_GLOBAL '=' NUMBER ';'
-+  {
-+    yy_class->max_global = $3;
-+  };
-+
-+class_number_per_ident: NUMBER_PER_IDENT '=' NUMBER ';'
-+  {
-+    yy_class->max_ident = $3;
-   };
- 
- class_connectfreq:     CONNECTFREQ '=' timespec ';'
-   {
--    class_number_per_ip_var = $3;
-+    yy_class->con_freq = $3;
-   };
- 
- class_max_number:       MAX_NUMBER '=' NUMBER ';'
-   {
--    class_max_number_var = $3;
-+    yy_class->max_total = $3;
-   };
- 
- class_sendq:    SENDQ '=' sizespec ';'
-   {
--    class_sendq_var = $3;
-+    yy_class->max_sendq = $3;
-   };
- 
- 
-@@ -1303,6 +1316,7 @@
-     yy_aconf->name = NULL;
-     yy_aconf->user = NULL;
-     yy_aconf->host = NULL;
-+    yy_aconf->port = CONF_OPER_K;
-   }
-   '{' shared_items '}' ';'
-   {
-@@ -1313,7 +1327,8 @@
- shared_items:		shared_items shared_item |
- 			shared_item;
- 
--shared_item:		shared_name | shared_user | error;
-+shared_item:		shared_name | shared_user | shared_kline |
-+                        shared_unkline | error;
- 
- shared_name:		NAME '=' QSTRING ';'
-   {
-@@ -1341,6 +1356,14 @@
-     }
-   };
- 
-+shared_kline:  KLINE '=' TYES ';' { yy_aconf->port |= CONF_OPER_K; };
-+               |
-+	       KLINE '=' TNO ';' { yy_aconf->port &= ~CONF_OPER_K; };
-+
-+shared_unkline: UNKLINE '=' TYES ';' { yy_aconf->port |= CONF_OPER_UNKLINE; };
-+                |
-+		UNKLINE '=' TNO ';' { yy_aconf->port &= ~CONF_OPER_UNKLINE; };
-+
- /***************************************************************************
-  *  section connect
-  ***************************************************************************/
-@@ -1970,7 +1993,7 @@
-                     general_oper_umodes |
-                     general_caller_id_wait | general_default_floodcount |
-                     general_min_nonwildcard |
--                    general_servlink_path | general_use_help |
-+                    general_servlink_path | general_use_global_limits | general_use_help |
-                     general_default_cipher_preference |
-                     general_compression_level | general_client_flood |
-                     general_throttle_time | general_havent_read_conf |
-@@ -2332,6 +2355,23 @@
-   {
-     ConfigFileEntry.ping_cookie = 0;
-   } ;
-+
-+general_use_global_limits: USE_GLOBAL_LIMITS '=' TYES ';'
-+  {
-+    if(ConfigFileEntry.use_global_limits == 0)
-+      ilog(L_ERROR, "Ignoring config file entry 'use_global_limits = yes' "
-+                    "-- can only be changed on boot");
-+    else
-+      ConfigFileEntry.use_global_limits = 1;
-+  }
-+    | USE_GLOBAL_LIMITS '=' TNO ';'
-+  {
-+    if(ConfigFileEntry.use_global_limits == 1)
-+      ilog(L_ERROR, "Ignoring config file entry 'use_global_limits = no' "
-+                    "-- can only be changed on boot");
-+    else
-+      ConfigFileEntry.use_global_limits = 0;
-+  };
- 
- general_use_help: USE_HELP '=' TYES ';'
-   {
-diff -urN ircd-hybrid-7/src/kdparse.c ircd-hybrid-7+lmh/src/kdparse.c
---- ircd-hybrid-7/src/kdparse.c	Sat Jul  6 17:58:57 2002
-+++ ircd-hybrid-7+lmh/src/kdparse.c	Mon Jul 22 22:32:20 2002
-@@ -110,6 +110,40 @@
-     }
- }
- 
-+void
-+parse_x_file(FBFILE *file)
-+{
-+  struct ConfItem *aconf;
-+  char *reason_field = NULL;
-+  char *host_field = NULL;
-+  char *port_field = NULL;
-+  char line[BUFSIZE];
-+  char *p;
-+
-+  while(fbgets(line, sizeof(line), file))
-+  {
-+    if((p = strchr(line, '\n')))
-+      *p = '\0';
-+
-+    if((*line == '\0') || (line[0] == '#'))
-+      continue;
-+
-+    if((host_field = getfield(line)) == NULL)
-+      continue;
-+
-+    if((port_field = getfield(NULL)) == NULL)
-+      continue;
-+
-+    if((reason_field = getfield(NULL)) == NULL)
-+      continue;
-+
-+    aconf = make_conf();
-+    aconf->status = CONF_XLINE;
-+    conf_add_fields(aconf, host_field, reason_field, "", port_field, NULL);
-+    conf_add_x_conf(aconf);
-+  }
-+}
-+
- /*
-  * getfield
-  *
-diff -urN ircd-hybrid-7/src/messages.tab ircd-hybrid-7+lmh/src/messages.tab
---- ircd-hybrid-7/src/messages.tab	Thu Jul 18 13:47:40 2002
-+++ ircd-hybrid-7+lmh/src/messages.tab	Mon Jul 22 22:32:20 2002
-@@ -238,7 +238,7 @@
- /* 215 RPL_STATSILINE, */       ":%s 215 %s %c %s * %s@%s %d %s",
- /* 216 RPL_STATSKLINE, */       ":%s 216 %s %c %s * %s :%s",
- /* 217 RPL_STATSQLINE, */       ":%s 217 %s %c %s :%s",
--/* 218 RPL_STATSYLINE, */       ":%s 218 %s %c %s %d %d %d %lu",
-+/* 218 RPL_STATSYLINE, */       ":%s 218 %s %c %s %d %d %d %lu %d.%d %d.%d",
- /* 219 RPL_ENDOFSTATS, */       ":%s 219 %s %s :End of /STATS report",
- /* 220 RPL_STATSPLINE, */       ":%s 220 %s %c %d %s %d :%s",
- /* 221 RPL_UMODEIS, */          ":%s 221 %s %s",
-diff -urN ircd-hybrid-7/src/modules.c ircd-hybrid-7+lmh/src/modules.c
---- ircd-hybrid-7/src/modules.c	Thu Jul 18 13:47:40 2002
-+++ ircd-hybrid-7+lmh/src/modules.c	Mon Jul 22 22:32:20 2002
-@@ -110,6 +110,10 @@
- 
- extern struct Message error_msgtab;
- 
-+#ifdef FL_DEBUG
-+extern struct Message hash_msgtab;
-+#endif
-+
- void
- modules_init(void)
- {
-@@ -119,6 +123,9 @@
- 	mod_add_cmd(&modlist_msgtab);
- 	mod_add_cmd(&modrestart_msgtab);
- 	mod_add_cmd(&error_msgtab);
-+#ifdef FL_DEBUG
-+	mod_add_cmd(&hash_msgtab);
-+#endif
- }
- 
- /* mod_find_path()
-diff -urN ircd-hybrid-7/src/packet.c ircd-hybrid-7+lmh/src/packet.c
---- ircd-hybrid-7/src/packet.c	Sun Jul 21 22:06:19 2002
-+++ ircd-hybrid-7+lmh/src/packet.c	Mon Jul 22 22:32:20 2002
-@@ -108,7 +108,8 @@
-   else if(IsClient(client_p)) 
-   {
- 
--    if (ConfigFileEntry.no_oper_flood && IsOper(client_p))
-+    if(IsOper(client_p) && (ConfigFileEntry.no_oper_flood ||
-+        IsOperFloodExempt(client_p)))
-       checkflood = 0;
-     /*
-      * Handle flood protection here - if we exceed our flood limit on
-@@ -135,6 +136,10 @@
-         if(lclient_p->sent_parsed >= lclient_p->allow_read)
-           break;
-       }
-+
-+      /* can flood as much as they want until they sendq off. */
-+      else if(IsOperFloodExempt(client_p))
-+        ;
-       
-       /* allow opers 4 times the amount of messages as users. why 4?
-        * why not. :) --fl_
-diff -urN ircd-hybrid-7/src/s_conf.c ircd-hybrid-7+lmh/src/s_conf.c
---- ircd-hybrid-7/src/s_conf.c	Mon Jul 22 11:44:00 2002
-+++ ircd-hybrid-7+lmh/src/s_conf.c	Mon Jul 22 22:35:08 2002
-@@ -74,7 +74,8 @@
- static void     read_conf(FBFILE*);
- static void     clear_out_old_conf(void);
- static void     flush_deleted_I_P(void);
--static void     expire_tklines(dlink_list *);
-+static void	add_temp_line(struct ConfItem *);
-+static void     expire_temps(dlink_list *, int);
- static int 	is_attached(struct Client *client_p, struct ConfItem *aconf);
- 
- FBFILE* conf_fbfile_in;
-@@ -438,18 +439,40 @@
-       (void)exit_client(client_p, source_p, &me, "Socket Error");
-       break;
- 
--    case TOO_MANY:
-+    case TOO_MANY_LOCAL:
-       sendto_realops_flags(FLAGS_FULL, L_ALL, 
--                           "Too many on IP for %s (%s).",
--			   get_client_name(source_p, SHOW_IP),
--			   source_p->localClient->sockhost);
-+                           "Too many local connections for %s",
-+			   get_client_name(source_p, SHOW_IP));
- 			   
--      ilog(L_INFO,"Too many connections on IP from %s.",
--	   get_client_name(source_p, SHOW_IP));
-+      ilog(L_INFO,"Too many local connections from %s",
-+           get_client_name(source_p, SHOW_IP));
-       
-       ServerStats->is_ref++;
--      (void)exit_client(client_p, source_p, &me, 
--			"No more connections allowed on that IP" );
-+      exit_client(client_p, source_p, &me, "Too many host connections (local)");
-+      break;
-+
-+    case TOO_MANY_GLOBAL:
-+      sendto_realops_flags(FLAGS_FULL, L_ALL,
-+		           "Too many global connections for %s",
-+			   get_client_name(source_p, SHOW_IP));
-+      ilog(L_INFO, "Too many global connections from %s",
-+           get_client_name(source_p, SHOW_IP));
-+
-+      ServerStats->is_ref++;
-+      exit_client(client_p, source_p, &me,
-+		  "Too many host connections (global)");
-+      break;
-+
-+    case TOO_MANY_IDENT:
-+      sendto_realops_flags(FLAGS_FULL, L_ALL,
-+		           "Too many user connections for %s",
-+			   get_client_name(source_p, SHOW_IP));
-+      ilog(L_INFO, "Too many user connections from %s",
-+           get_client_name(source_p, SHOW_IP));
-+
-+      ServerStats->is_ref++;
-+      exit_client(client_p, source_p, &me,
-+                  "Too many user connections (global)");
-       break;
- 
-     case I_LINE_FULL:
-@@ -612,12 +635,55 @@
-   SetIpHash(client_p);
-   ip_found->count++;
- 
--  /* only check it if its non zero */
--  if ( aconf->c_class /* This should never non NULL *grin* */ &&
--       ConfConFreq(aconf) && ip_found->count > ConfConFreq(aconf))
-+  if(ConfigFileEntry.use_global_limits)
-+  {
-+    struct Client *target_p;
-+    int local_count = 0;
-+    int global_count = 0;
-+    int ident_count = 0;
-+    int unidented = 0;
-+
-+    if(IsConfExemptLimits(aconf))
-+      return(attach_conf(client_p, aconf));
-+
-+    if(*client_p->username == '~')
-+      unidented = 1;
-+
-+    for(target_p = find_hostname(client_p->host); target_p;
-+        target_p = target_p->hostnext)
-+    {
-+      if(irccmp(client_p->host, target_p->host) != 0)
-+        continue;
-+
-+      if(MyConnect(target_p))
-+        local_count++;
-+
-+      global_count++;
-+
-+      if(unidented)
-+      {
-+	if(*target_p->username == '~')
-+          ident_count++;
-+      }
-+      else if(irccmp(target_p->username, client_p->username) == 0)
-+        ident_count++;
-+
-+      if(ConfMaxLocal(aconf) && local_count >= ConfMaxLocal(aconf))
-+        return(TOO_MANY_LOCAL);
-+      else if(ConfMaxGlobal(aconf) && global_count >= ConfMaxGlobal(aconf))
-+        return(TOO_MANY_GLOBAL);
-+      else if(ConfMaxIdent(aconf) && ident_count >= ConfMaxIdent(aconf))
-+        return(TOO_MANY_IDENT);
-+    }
-+  }
-+  else
-+  {
-+    /* only check it if its non zero */
-+    if(aconf->c_class &&
-+       ConfMaxLocal(aconf) && ip_found->count > ConfMaxLocal(aconf))
-     {
-       if(!IsConfExemptLimits(aconf))
--        return(TOO_MANY); /* Already at maximum allowed ip#'s */
-+        return(TOO_MANY_LOCAL); /* Already at maximum allowed ip#'s */
-       else
-         {
-           sendto_one(client_p,
-@@ -625,6 +691,7 @@
-                      me.name,client_p->name);
-         }
-     }
-+  }
- 
-   return(attach_conf(client_p, aconf));
- }
-@@ -694,14 +761,15 @@
-   for(ptr = ip_hash_table[hash_index = hash_ip(ip_in)]; ptr;
-       ptr = ptr->next)
-   {
--   if(!memcmp(&ptr->ip, ip_in, sizeof(struct irc_inaddr)))
--   {
--    return(ptr);
--   }
-+    if(memcmp(&ptr->ip, ip_in, sizeof(struct irc_inaddr)) == 0)
-+    {
-+      return(ptr);
-+    }
-   }
--  if ((ptr = ip_hash_table[hash_index]) != (IP_ENTRY *)NULL)
-+
-+  if ((ptr = ip_hash_table[hash_index]) != NULL)
-     {
--      if( free_ip_entries == (IP_ENTRY *)NULL)
-+      if(free_ip_entries == NULL)
- 	outofmemory();
- 
-       newptr = ip_hash_table[hash_index] = free_ip_entries;
-@@ -909,10 +977,10 @@
-             {
-               if (aconf->status & CONF_CLIENT_MASK)
-                 {
--                  if (ConfLinks(aconf) > 0)
--                    --ConfLinks(aconf);
-+                  if (ConfCurrUsers(aconf) > 0)
-+                    --ConfCurrUsers(aconf);
-                 }
--              if (ConfMaxLinks(aconf) == -1 && ConfLinks(aconf) == 0)
-+              if (ConfMaxUsers(aconf) == -1 && ConfCurrUsers(aconf) == 0)
-                 {
-                   free_class(ClassPtr(aconf));
-                   ClassPtr(aconf) = NULL;
-@@ -978,7 +1046,7 @@
-   if ((aconf->status & CONF_OPERATOR) == 0)
-     {
-       if ((aconf->status & CONF_CLIENT) &&
--          ConfLinks(aconf) >= ConfMaxLinks(aconf) && ConfMaxLinks(aconf) > 0)
-+          ConfCurrUsers(aconf) >= ConfMaxUsers(aconf) && ConfMaxUsers(aconf) > 0)
-         {
-           if (!IsConfExemptLimits(aconf))
-             {
-@@ -1004,7 +1072,7 @@
- 
-   aconf->clients++;
-   if (aconf->status & CONF_CLIENT_MASK)
--    ConfLinks(aconf)++;
-+    ConfCurrUsers(aconf)++;
-   return(0);
- }
- 
-@@ -1109,7 +1177,7 @@
-         continue;
-       if (tmp->status & CONF_OPERATOR)
-         {
--          if (tmp->clients < ConfMaxLinks(tmp))
-+          if (tmp->clients < ConfMaxUsers(tmp))
-             return(tmp);
-           else
-             continue;
-@@ -1163,14 +1231,15 @@
-   struct ConfItem* conf;
-   assert(name != NULL);
-   if(name == NULL)
--    return NULL;
-+    return(NULL);
-+
-   for (conf = ConfigItemList; conf; conf = conf->next)
-     {
-       if (conf->status == status && conf->name &&
-           match(name, conf->name))
--        return conf;
-+        return(conf);
-     }
--  return NULL;
-+  return(NULL);
- }
- 
- /*
-@@ -1233,7 +1302,7 @@
-  * side effects - looks for a matches on all fields
-  */
- int 
--find_u_conf(char *server,char *user,char *host)
-+find_u_conf(char *server,char *user,char *host, int flag)
- {
-   struct ConfItem *aconf;
- 
-@@ -1245,8 +1314,15 @@
-       if (match(aconf->name,server))
- 	{
- 	  if (BadPtr(aconf->user) || BadPtr(aconf->host))
--	    return(YES);
--	  if(match(aconf->user,user) && match(aconf->host,host))
-+	  {
-+            if(aconf->port & flag)
-+  	      return(YES);
-+	    else
-+              return(NO);
-+	  }
-+
-+	  if(match(aconf->user,user) && match(aconf->host,host) &&
-+             aconf->port & flag)
- 	    return(YES);
- 
- 	}
-@@ -1391,7 +1467,7 @@
-   ConfigFileEntry.max_targets = MAX_TARGETS_DEFAULT;
-   DupString(ConfigFileEntry.servlink_path, SLPATH);
-   ConfigFileEntry.egdpool_path = NULL;
--  
-+
- #ifdef HAVE_LIBCRYPTO
-   /* jdc -- This is our default value for a cipher.  According to the
-    *        CRYPTLINK document (doc/cryptlink.txt), BF/128 must be supported
-@@ -1505,6 +1581,9 @@
-   if(ConfigChannel.use_anonops == -1)
-     ConfigChannel.use_anonops = 0;
- 
-+  if(ConfigFileEntry.use_global_limits == -1)
-+    ConfigFileEntry.use_global_limits = 1;
-+
-   GlobalSetOptions.idletime = (ConfigFileEntry.idletime * 60);
- }
- 
-@@ -1519,14 +1598,6 @@
- {
-   (void)collapse(aconf->host);
-   (void)collapse(aconf->user);
--  Debug((DEBUG_NOTICE,
--	 "Read Init: (%d) (%s) (%s) (%s) (%d) (%d)",
--	 aconf->status, 
--	 aconf->host ? aconf->host : "<NULL>",
--	 aconf->passwd ? aconf->passwd : "<NULL>",
--	 aconf->user ? aconf->user : "<NULL>",
--	 aconf->port,
--	 aconf->c_class ? ConfClassType(aconf): 0 ));
- 
-   aconf->next = ConfigItemList;
-   ConfigItemList = aconf;
-@@ -1639,14 +1710,15 @@
-   struct ConfItem *aconf;
-   assert(client_p != NULL);
-   if(client_p == NULL)
--    return NULL;
-+    return(NULL);
-+
-   aconf = find_address_conf(client_p->host, client_p->username,
- 			    &client_p->localClient->ip,
- 			    client_p->localClient->aftype);
-   if (aconf == NULL)
--    return aconf;
-+    return(aconf);
-   if(aconf->status & CONF_KILL)
--    return aconf;
-+    return(aconf);
-   return(NULL);
- }
- 
-@@ -1660,40 +1732,80 @@
- void
- add_temp_kline(struct ConfItem *aconf)
- {
--  dlink_node *kill_node;
--  kill_node = make_dlink_node();
--  dlinkAdd(aconf, kill_node, &temporary_klines);
-+  add_temp_line(aconf);
-   aconf->flags |= CONF_FLAGS_TEMPORARY;
-   add_conf_by_address(aconf->host, CONF_KILL, aconf->user, aconf);
- }
- 
--/*
-- * cleanup_tklines
-+/* add_temp_dline
-  *
-- * inputs       - NONE
-- * output       - NONE
-- * side effects - call function to expire tklines
-- *                This is an event started off in ircd.c
-+ * input	- pointer to struct ConfItem
-+ * output	- none
-+ * side effects - added to tkline link list and address hash
-  */
-+void add_temp_dline(struct ConfItem *aconf)
-+{
-+  add_temp_line(aconf);
-+  aconf->flags |= CONF_FLAGS_TEMPORARY;
-+  add_conf_by_address(aconf->host, CONF_DLINE, aconf->user, aconf);
-+}
-+
- void
--cleanup_tklines(void *notused)
-+cleanup_temps_min(void *notused)
- {
--  expire_tklines(&temporary_klines);
-+  expire_temps(&temporary_min, TEMP_MIN);
-+}
-+
-+void
-+cleanup_temps_hour(void *notused)
-+{
-+  expire_temps(&temporary_hour, TEMP_HOUR);
-+}
-+
-+void
-+cleanup_temps_day(void *notused)
-+{
-+  expire_temps(&temporary_day, TEMP_DAY);
-+}
-+
-+void
-+cleanup_temps_week(void *notused)
-+{
-+  expire_temps(&temporary_week, TEMP_WEEK);
-+}
-+
-+static void
-+add_temp_line(struct ConfItem *aconf)
-+{
-+  dlink_node *m;
-+
-+  m = make_dlink_node();
-+  
-+  if(aconf->hold > CurrentTime + (10080*60))
-+    dlinkAdd(aconf, m, &temporary_week);
-+  else if(aconf->hold > CurrentTime + (1440*60))
-+    dlinkAdd(aconf, m, &temporary_day);
-+  else if(aconf->hold > CurrentTime + (60*60))
-+    dlinkAdd(aconf, m, &temporary_hour);
-+  else
-+    dlinkAdd(aconf, m, &temporary_min);
- }
- 
- /*
-- * expire_tklines
-+ * expire_temps
-  *
-- * inputs       - tkline list pointer
-+ * inputs       - list pointer
-+ * 		- type
-  * output       - NONE
-  * side effects - expire tklines
-  */
- static void
--expire_tklines(dlink_list *tklist)
-+expire_temps(dlink_list *tklist, int type)
- {
-   dlink_node *kill_node;
-   dlink_node *next_node;
-   struct ConfItem *kill_ptr;
-+
-   for (kill_node = tklist->head; kill_node; kill_node = next_node)
-     {
-       kill_ptr = kill_node->data;
-@@ -1702,15 +1814,48 @@
-       if (kill_ptr->hold <= CurrentTime)
- 	{
-           /* Alert opers that a TKline expired - Hwy */
--          sendto_realops_flags(FLAGS_ALL, L_ALL,
-+          if(kill_ptr->status & CONF_KILL)
-+            sendto_realops_flags(FLAGS_ALL, L_ALL,
- 			       "Temporary K-line for [%s@%s] expired",
- 			       (kill_ptr->user) ? kill_ptr->user : "*",
- 			       (kill_ptr->host) ? kill_ptr->host : "*");
- 
-+	  /* temp dline */
-+	  else
-+            sendto_realops_flags(FLAGS_ALL, L_ALL,
-+			       "Temporary D-line for [%s] expired",
-+			       kill_ptr->host);
-+
- 	  delete_one_address_conf(kill_ptr->host, kill_ptr);
- 	  dlinkDelete(kill_node, tklist);
- 	  free_dlink_node(kill_node);
- 	}
-+      
-+      else if((type == TEMP_WEEK && kill_ptr->hold < CurrentTime + 10080) ||
-+              (type == TEMP_DAY && kill_ptr->hold < CurrentTime + 1440) ||
-+	      (type == TEMP_HOUR && kill_ptr->hold < CurrentTime + 60))
-+      {
-+        /* expires within the hour.. */
-+        if(kill_ptr->hold < CurrentTime + (60*60))
-+	{
-+          dlinkDelete(kill_node, tklist);
-+	  dlinkAdd(kill_ptr, kill_node, &temporary_min);
-+	}
-+
-+	/* expires within the day */
-+	else if(kill_ptr->hold < CurrentTime + (1440*60))
-+	{
-+          dlinkDelete(kill_node, tklist);
-+	  dlinkAdd(kill_ptr, kill_node, &temporary_hour);
-+	}
-+
-+	/* expires within the week */
-+	else if(kill_ptr->hold < CurrentTime + (10080*60))
-+	{
-+          dlinkDelete(kill_node, tklist);
-+	  dlinkAdd(kill_ptr, kill_node, &temporary_day);
-+	}
-+      }
-     }
- }
- 
-@@ -1751,6 +1896,15 @@
-   else
-     *privs_ptr++ = 'k';
- 
-+  if(port & CONF_OPER_XLINE)
-+  {
-+    if(client_p)
-+      SetOperXline(client_p);
-+    *privs_ptr++ = 'X';
-+  }
-+  else
-+    *privs_ptr++ = 'x';
-+
-   if(port & CONF_OPER_N)
-     {
-       if(client_p)
-@@ -1811,7 +1965,13 @@
-     }
-   else
-     *privs_ptr++ = 'a';
--  
-+
-+  if(port & CONF_OPER_FLOOD_EXEMPT)
-+    {
-+      if(client_p)
-+        SetOperFloodExempt(client_p);
-+    }
-+
-   *privs_ptr = '\0';
- 
-   return(privs_out);
-@@ -1951,6 +2111,7 @@
- {
-   FBFILE *file;
-   const char *filename, *kfilename, *dfilename; /* kline or conf filename */
-+  const char *xfilename;
- 
-   conf_fbfile_in = NULL;
- 
-@@ -1985,6 +2146,7 @@
-     /* set to 'undefined' */
-     ConfigChannel.use_halfops = -1;
-     ConfigChannel.use_anonops = -1;
-+    ConfigFileEntry.use_global_limits = -1;
-   }
-   else
-   {
-@@ -2031,6 +2193,25 @@
- 	  fbclose(file);
- 	}
-     }
-+
-+  xfilename = ConfigFileEntry.xlinefile;
-+  if(irccmp(filename, xfilename) && irccmp(kfilename, xfilename))
-+  {
-+    if((file = fbopen(xfilename, "r")) == NULL)
-+    {
-+      if(cold)
-+        ilog(L_ERROR, "Failed reading xline file %s", xfilename);
-+      else
-+        sendto_realops_flags(FLAGS_ALL, L_ALL,
-+			     "Can't open %s file xlines could be missing!",
-+			     xfilename);
-+    }
-+    else
-+    {
-+      parse_x_file(file);
-+      fbclose(file);
-+    }
-+  }
- }
- 
- /*
-@@ -2084,7 +2265,7 @@
-   assert(ClassList != NULL);
-   
-   for (cltmp = ClassList->next; cltmp; cltmp = cltmp->next)
--    MaxLinks(cltmp) = -1;
-+    MaxUsers(cltmp) = -1;
- 
-   clear_out_address_conf();
-   clear_special_conf(&x_conf);
-@@ -2324,7 +2505,7 @@
-       return;
-     }
- 
--  if (ConfMaxLinks(aconf) < 0)
-+  if (ConfMaxUsers(aconf) < 0)
-     {
-       ClassPtr(aconf) = find_class(0);
-       MyFree(aconf->className);
-diff -urN ircd-hybrid-7/src/s_debug.c ircd-hybrid-7+lmh/src/s_debug.c
---- ircd-hybrid-7/src/s_debug.c	Sat May 25 00:34:51 2002
-+++ ircd-hybrid-7+lmh/src/s_debug.c	Mon Jul 22 22:32:20 2002
-@@ -44,7 +44,6 @@
- #include "linebuf.h"
- #include "memory.h"
- 
--
- /*
-  * Option string.  Must be before #ifdef DEBUGMODE.
-  */
-@@ -393,11 +392,20 @@
-              number_servers_cached,
-              (int)mem_servers_cached);
- 
--  count_ip_hash(&number_ips_stored,&mem_ips_stored);
--  sendto_one(source_p, ":%s %d %s :iphash %u(%d)",
--             me.name, RPL_STATSDEBUG, source_p->name,
--             number_ips_stored,
--             (int)mem_ips_stored);
-+  if(ConfigFileEntry.use_global_limits)
-+  {
-+    sendto_one(source_p, ":%s %d %s :hostname hash %d(%u)",
-+	       me.name, RPL_STATSDEBUG, source_p->name,
-+	       HOST_MAX, HOST_MAX * sizeof(struct HashEntry));
-+  }
-+  else
-+  {
-+    count_ip_hash(&number_ips_stored,&mem_ips_stored);
-+    sendto_one(source_p, ":%s %d %s :iphash %u(%d)",
-+               me.name, RPL_STATSDEBUG, source_p->name,
-+               number_ips_stored,
-+               (int)mem_ips_stored);
-+  }
- 
-   total_memory = totww + total_channel_memory + conf_memory +
-     class_count * sizeof(struct Class);
-diff -urN ircd-hybrid-7/src/s_serv.c ircd-hybrid-7+lmh/src/s_serv.c
---- ircd-hybrid-7/src/s_serv.c	Sun Jul 21 13:53:26 2002
-+++ ircd-hybrid-7+lmh/src/s_serv.c	Mon Jul 22 22:32:20 2002
-@@ -104,6 +104,7 @@
-   { "ZIP",   CAP_ZIP },
-   { "TBURST", CAP_TBURST },
-   { "PARA",  CAP_PARA },
-+  { "UNKLN", CAP_UNKLN },
-   { 0,           0 }
- };
- 
-@@ -549,7 +550,6 @@
-   time_t             next = 0;
-   struct Class*      cltmp;
-   struct ConfItem*   con_conf = NULL;
--  int                con_class = 0;
- 
-   Debug((DEBUG_NOTICE,"Connection check at: %s", myctime(CurrentTime)));
- 
-@@ -586,10 +586,8 @@
-        */
-       client_p = find_server(aconf->name);
-       
--      if (!client_p && (Links(cltmp) < MaxLinks(cltmp)) &&
--          (!connecting || (ClassType(cltmp) > con_class)))
-+      if (!client_p && (CurrUsers(cltmp) < MaxUsers(cltmp)) && !connecting)
-         {
--          con_class = ClassType(cltmp);
-           con_conf = aconf;
-           /* We connect only one at time... */
-           connecting = TRUE;
-diff -urN ircd-hybrid-7/src/s_user.c ircd-hybrid-7+lmh/src/s_user.c
---- ircd-hybrid-7/src/s_user.c	Sat Jul 20 16:47:53 2002
-+++ ircd-hybrid-7+lmh/src/s_user.c	Mon Jul 22 22:32:20 2002
-@@ -452,6 +452,9 @@
-   if (IsDead(source_p))
-     return CLIENT_EXITED;
-   
-+  if(ConfigFileEntry.use_global_limits)
-+    add_to_hostname_hash_table(source_p->host, source_p);
-+
-   source_p->umodes |= FLAGS_INVISIBLE;
- 
-   Count.invisi++;
-@@ -526,6 +529,9 @@
-   /* Increment our total user count here */
-   if (++Count.total > Count.max_tot)
-     Count.max_tot = Count.total;
-+
-+  if(ConfigFileEntry.use_global_limits)
-+    add_to_hostname_hash_table(source_p->host, source_p);
- 
-   source_p->servptr = find_server(user->server);
- 
-diff -urN ircd-hybrid-7/src/version.c.SH ircd-hybrid-7+lmh/src/version.c.SH
---- ircd-hybrid-7/src/version.c.SH	Tue Nov 13 08:59:01 2001
-+++ ircd-hybrid-7+lmh/src/version.c.SH	Mon Jul 22 22:32:20 2002
-@@ -51,11 +51,12 @@
- 
- #include "patchlevel.h"
- #include "serno.h"
-+#include "config.h"
- 
- char *generation = "$generation";
- char *creation = "$creation";
- char *platform = "$uname";
--char *ircd_version = PATCHLEVEL;
-+char *ircd_version = IRCDNAME;
- char *serno = SERIALNUM;
- 
- char *infotext[] =
diff -uNrd ircd-hybrid-7rc3/contrib/m_clearchan.c ircd-hoho-2r15/contrib/m_clearchan.c
--- ircd-hybrid-7rc3/contrib/m_clearchan.c	Mon Jun 10 21:49:18 2002
+++ ircd-hoho-2r15/contrib/m_clearchan.c	Wed Dec 31 19:00:00 1969
@@ -1,370 +0,0 @@
-/*
- *   IRC - Internet Relay Chat, contrib/m_clearchan.c
- *   Copyright (C) 2002 Hybrid Development Team
- *
- *   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: m_clearchan.c,v 1.30 2002/06/11 01:49:18 androsyn Exp $
- */
-#include "stdinc.h"
-#include "tools.h"
-#include "handlers.h"
-#include "channel.h"
-#include "channel_mode.h"
-#include "client.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "whowas.h"
-#include "irc_string.h"
-#include "hash.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "vchannel.h"
-#include "list.h"
-
-
-#define MSG_CLEARCHAN "CLEARCHAN"
-
-extern BlockHeap *ban_heap;
-
-static void mo_clearchan(struct Client *client_p, struct Client *source_p,
-                         int parc, char *parv[]);
-
-static void kick_list(struct Client *client_p, struct Client *source_p, struct Channel *chptr,
-                      dlink_list *list,char *chname);
-
-static void remove_our_modes(int type,
-                      struct Channel *chptr, struct Channel *top_chptr,
-                      struct Client *source_p);
-static void remove_a_mode(int hide_or_not,
-                          struct Channel *chptr, struct Channel *top_chptr,
-                          struct Client *source_p, dlink_list *list, char flag);
-static void free_channel_list(dlink_list *list);
-
-static char    *mbuf;
-
-
-struct Message clearchan_msgtab = {
-  MSG_CLEARCHAN, 0, 0, 2, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_not_oper, m_ignore, mo_clearchan}
-};
-
-void
-_modinit(void)
-{
-  mod_add_cmd(&clearchan_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&clearchan_msgtab);
-}
-
-char *_version = "$Revision: 1.30 $";
-
-/*
-** mo_clearchan
-**      parv[0] = sender prefix
-**      parv[1] = channel
-*/
-static void mo_clearchan(struct Client *client_p, struct Client *source_p,
-                        int parc, char *parv[])
-{
-  struct Channel *chptr, *root_chptr;
-  int on_vchan = 0;
-
-  /* admins only */
-  if (!IsOperAdmin(source_p))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
-      return;
-    }
-
-  /* XXX - we might not have CBURSTed this channel if we are a lazylink
-   * yet. */
-  chptr= hash_find_channel(parv[1]);
-  root_chptr = chptr;
-
-#ifdef VCHANS
-  if (chptr && parc > 2 && parv[2][0] == '!')
-    {
-      chptr = find_vchan(chptr, parv[2]);
-      if (root_chptr != chptr)
-        on_vchan++;
-    }
-#endif
-
-  if( chptr == NULL )
-    {
-      sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
-		 me.name, parv[0], parv[1]);
-      return;
-    }
-
-  if(IsMember(source_p, chptr))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :*** Please part %s before using CLEARCHAN",
-                 me.name, source_p->name, parv[1]);
-      return;
-    }
-
-  if (!on_vchan)
-    {
-     sendto_wallops_flags(FLAGS_WALLOP, &me, 
-              "CLEARCHAN called for [%s] by %s!%s@%s",
-              parv[1], source_p->name, source_p->username, source_p->host);
-     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
-                   ":%s WALLOPS :CLEARCHAN called for [%s] by %s!%s@%s",
-                   me.name, parv[1], source_p->name, source_p->username,
-                   source_p->host);
-     ilog(L_NOTICE, "CLEARCHAN called for [%s] by %s!%s@%s",
-         parv[1], source_p->name, source_p->username, source_p->host);
-    }
-  else
-    {
-     sendto_wallops_flags(FLAGS_WALLOP, &me,
-              "CLEARCHAN called for [%s %s] by %s!%s@%s",
-              parv[1], parv[2], source_p->name, source_p->username,
-              source_p->host);
-     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
-                   ":%s WALLOPS :CLEARCHAN called for [%s %s] by %s!%s@%s",
-                   me.name, parv[1], parv[2], source_p->name,
-                   source_p->username, source_p->host);
-     ilog(L_NOTICE, "CLEARCHAN called for [%s %s] by %s!%s@%s",
-         parv[1], parv[2], source_p->name, source_p->username, source_p->host);
-    }
-
-  /* Kill all the modes we have about the channel.. making everyone a peon */  
-  remove_our_modes(0, chptr, root_chptr, source_p);
-  
-  /* SJOIN the user to give them ops, and lock the channel */
-
-  sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS,
-                LL_ICLIENT, ":%s SJOIN %lu %s +ntsi :@%s",
-                me.name, (unsigned long) (chptr->channelts - 1),
-                chptr->chname, source_p->name);
-  sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
-                       source_p->name,
-                       source_p->username,
-                       source_p->host,
-                       root_chptr->chname);
-  sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +o %s",
-                       me.name, chptr->chname, source_p->name);
-
-  add_user_to_channel(chptr, source_p, CHFL_CHANOP);
-
-  /* Take the TS down by 1, so we don't see the channel taken over
-   * again. */
-  if (chptr->channelts)
-    chptr->channelts--;
-  
-#ifdef VCHANS
-  if (on_vchan)
-    add_vchan_to_client_cache(source_p,root_chptr,chptr);
-#endif
-
-  chptr->mode.mode =
-    MODE_SECRET | MODE_TOPICLIMIT | MODE_INVITEONLY | MODE_NOPRIVMSGS;
-  free_topic(chptr);
-  chptr->mode.key[0] = 0;
-
-  /* Kick the users out and join the oper */
-  kick_list(client_p, source_p, chptr, &chptr->peons, chptr->chname);
-
-}
-
-void kick_list(struct Client *client_p, struct Client *source_p, struct Channel *chptr,
-	       dlink_list *list,char *chname)
-{
-  struct Client *who;
-  dlink_node *m;
-  dlink_node *next_m;
-
-  for (m = list->head; m; m = next_m)
-    {
-      next_m = m->next;
-      who = m->data;
-      sendto_channel_local(ALL_MEMBERS, chptr,
-			   ":%s KICK %s %s :CLEARCHAN",
-			   source_p->name, chname, who->name);
-      sendto_server(NULL, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
-                    ":%s KICK %s %s :CLEARCHAN", source_p->name,
-                    chname, who->name);
-      remove_user_from_channel(chptr, who);
-    }
-
-  /* Join the user themselves to the channel down here, so they dont see a nicklist 
-   * or people being kicked */
-  sendto_one(source_p, ":%s!%s@%s JOIN %s",
-	     source_p->name,
-	     source_p->username,
-	     source_p->host,
-	     chname);
-
-  channel_member_names(source_p, chptr, chname, 1);
-
-}
-
-
-/*
- * remove_our_modes
- *
- * inputs       - hide from ops or not int flag
- *              - pointer to channel to remove modes from
- *              - if vchan basechannel pointer
- *              - client pointer
- * output       - NONE
- * side effects - Go through the local members, remove all their
- *                chanop modes etc., this side lost the TS.
- */
-static void remove_our_modes( int hide_or_not,
-                              struct Channel *chptr, struct Channel *top_chptr,
-                              struct Client *source_p)
-{
-  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops, 'o');
-#ifdef REQUIRE_OANDV
-  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops_voiced, 'o');
-#endif
-#ifdef HALFOPS
-  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->halfops, 'h');
-#endif
-  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->voiced, 'v');
-#ifdef REQUIRE_OANDV
-  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops_voiced, 'v');
-#endif
-
-  /* Move all voice/ops etc. to non opped list */
-  dlinkMoveList(&chptr->chanops, &chptr->peons);
-#ifdef HALFOPS
-  dlinkMoveList(&chptr->halfops, &chptr->peons);
-#endif
-  dlinkMoveList(&chptr->voiced, &chptr->peons);
-#ifdef REQUIRE_OANDV
-  dlinkMoveList(&chptr->chanops_voiced, &chptr->peons);
-#endif
-  dlinkMoveList(&chptr->locchanops, &chptr->locpeons);
-#ifdef HALFOPS
-  dlinkMoveList(&chptr->lochalfops, &chptr->locpeons);
-#endif
-  dlinkMoveList(&chptr->locvoiced, &chptr->locpeons);
-#ifdef REQUIRE_OANDV
-  dlinkMoveList(&chptr->locchanops_voiced, &chptr->locpeons);
-#endif
-
-  /* Clear all +beI modes */
-  free_channel_list(&chptr->banlist);
-  free_channel_list(&chptr->exceptlist);
-  free_channel_list(&chptr->invexlist);
-  chptr->banlist.head = chptr->exceptlist.head = chptr->invexlist.head = NULL;
-  chptr->banlist.tail = chptr->exceptlist.tail = chptr->invexlist.tail = NULL;
-}
-
-
-/*
- * remove_a_mode
- *
- * inputs       -
- * output       - NONE
- * side effects - remove ONE mode from a channel
- */
-static void remove_a_mode( int hide_or_not,
-                           struct Channel *chptr, struct Channel *top_chptr,
-                           struct Client *source_p, dlink_list *list, char flag)
-{
-  dlink_node *ptr;
-  struct Client *target_p;
-  char buf[BUFSIZE];
-  char lmodebuf[MODEBUFLEN];
-  char *lpara[MAXMODEPARAMS];
-  char *chname;
-  int count = 0;
-
-  mbuf = lmodebuf;
-  *mbuf++ = '-';
-
-  lpara[0] = lpara[1] = lpara[2] = lpara[3] = "";
-
-  chname = chptr->chname;
-
-  ircsprintf(buf,":%s MODE %s ", me.name, chname);
-
-  for (ptr = list->head; ptr && ptr->data; ptr = ptr->next)
-    {
-      target_p = ptr->data;
-      lpara[count++] = target_p->name;
-
-      *mbuf++ = flag;
-      if (count >= MAXMODEPARAMS)
-        {
-          *mbuf   = '\0';
-          sendto_channel_local(hide_or_not, chptr,
-                               ":%s MODE %s %s %s %s %s %s",
-                               me.name,
-                               chname,
-                               lmodebuf,
-                               lpara[0], lpara[1], lpara[2], lpara[3] );
-
-          mbuf = lmodebuf;
-          *mbuf++ = '-';
-          count = 0;
-          lpara[0] = lpara[1] = lpara[2] = lpara[3] = "";
-        }
-    }
-
-  if(count != 0)
-    {
-      *mbuf   = '\0';
-      sendto_channel_local(hide_or_not, chptr,
-                           ":%s MODE %s %s %s %s %s %s",
-                           me.name,
-                           chname,
-                           lmodebuf,
-                           lpara[0], lpara[1], lpara[2], lpara[3] );
-
-    }
-}
-
-
-/*
- * free_channel_list
- *
- * inputs       - pointer to dlink_list
- * output       - NONE
- * side effects -
- */
-static void free_channel_list(dlink_list *list)
-{
-  dlink_node *ptr;
-  dlink_node *next_ptr;
-  struct Ban *actualBan;
-
-  for (ptr = list->head; ptr; ptr = next_ptr)
-    {
-      next_ptr = ptr->next;
-
-      actualBan = ptr->data;
-      MyFree(actualBan->banstr);
-      MyFree(actualBan->who);
-      BlockHeapFree(ban_heap, actualBan);
-
-      free_dlink_node(ptr);
-    }
-}
-
diff -uNrd ircd-hybrid-7rc3/contrib/m_flags.c ircd-hoho-2r15/contrib/m_flags.c
--- ircd-hybrid-7rc3/contrib/m_flags.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/m_flags.c	Wed Dec 31 19:00:00 1969
@@ -1,435 +0,0 @@
-/*
- *  m_flags.c: Implements comstud-style mode flags.
- *
- *  Copyright 2002 by W. Campbell and the ircd-hybrid development team
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are
- *  met:
- *
- *  1.Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer. 
- *  2.Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution. 
- *  3.The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission. 
- *
- *  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- *
- *  $Id: m_flags.c,v 1.9 2002/05/24 23:48:34 androsyn Exp $
- */
-
-/* List of ircd includes from ../include/ */
-#include "stdinc.h"
-#include "handlers.h"
-#include "client.h"
-#include "common.h"     /* FALSE bleah */
-#include "ircd.h"
-#include "irc_string.h"
-#include "numeric.h"
-#include "fdlist.h"
-#include "s_bsd.h"
-#include "s_conf.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-
-#include "s_user.h"    /* send_umode_out() */
-
-
-static void m_flags(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void mo_flags(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-
-static char *set_flags_to_string(struct Client *client_p);
-static char *unset_flags_to_string(struct Client *client_p);
-
-struct Message test_msgtab = {
-  "FLAGS", 0, 0, 0, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_flags, m_ignore, mo_flags}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  mod_add_cmd(&test_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&test_msgtab);
-}
-
-const char *_version = "$Revision: 1.9 $";
-#endif
-
-/* FLAGS requires it's own mini parser, since the last parameter in it can
-** contain a number of FLAGS.  CS handles FLAGS mode1 mode2 OR
-** FLAGS :mode1 mode2, but not both mixed.
-**
-** The best way to match a flag to a mode is with a simple table
-*/
-
-struct FlagTable
-{
-  char *name;
-  int mode;
-  int oper;
-};
-
-static struct FlagTable flag_table[] =
-{
-  /* name		mode it represents	oper only? */
-  { "OWALLOPS",		FLAGS_OPERWALL,		1 },
-  { "SWALLOPS",		FLAGS_WALLOP,		0 },
-  { "STATSNOTICES",	FLAGS_SPY,		1 },
-    /* We don't have a separate OKILL and SKILL modes */
-  { "OKILLS",		FLAGS_SKILL,		0 },
-  { "SKILLS",		FLAGS_SKILL,		0 },
-  { "SNOTICES",		FLAGS_SERVNOTICE,	0 },
-    /* We don't have separate client connect and disconnect modes */
-  { "CLICONNECTS",	FLAGS_CCONN,		1 },
-  { "CLIDISCONNECTS",	FLAGS_CCONN,		1 },
-    /* I'm taking a wild guess here... */
-  { "THROTTLES",	FLAGS_REJ,		1 },
-#if 0
-    /* This one is special...controlled via an oper block option */
-  { "NICKCHANGES",	FLAGS_NCHANGE,		1 },
-    /* NICKCHANGES must be checked for separately */
-#endif
-    /* I'm assuming this is correct... */
-  { "IPMISMATCHES",	FLAGS_UNAUTH,		1 },
-  { "LWALLOPS",		FLAGS_LOCOPS,		1 },
-    /* These aren't separate on Hybrid */
-  { "CONNECTS",		FLAGS_EXTERNAL,		1 },
-  { "SQUITS",		FLAGS_EXTERNAL,		1 },
-    /* Now we have our Hybrid specific flags */
-  { "FULL",		FLAGS_FULL,		1 },
-    /* Not in CS, but we might as well put it here */
-  { "INVISIBLE",	FLAGS_INVISIBLE,	0 },
-  { "BOTS",		FLAGS_BOTS,		1 },
-  { "CALLERID",		FLAGS_CALLERID,		0 },
-  { "UNAUTH",		FLAGS_UNAUTH,		1 },
-  { "DEBUG",		FLAGS_DEBUG,		1 },
-  { NULL,		0,			0 }
-};
-
-/* We won't control CALLERID or INVISIBLE in here */
-
-#define FL_ALL_USER_FLAGS (FLAGS_WALLOP | FLAGS_SKILL | FLAGS_SERVNOTICE )
-
-/* and we don't control NCHANGES here either */
-
-#define FL_ALL_OPER_FLAGS (FL_ALL_USER_FLAGS | FLAGS_CCONN | FLAGS_REJ |\
-                           FLAGS_FULL | FLAGS_SPY | FLAGS_DEBUG |\
-                           FLAGS_OPERWALL | FLAGS_BOTS | FLAGS_EXTERNAL |\
-                           FLAGS_UNAUTH | FLAGS_LOCOPS )
-
-/*
-** m_flags
-**      parv[0] = sender prefix
-**      parv[1] = parameter
-*/
-static void m_flags(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{
-  int i,j;
-  int isadd;
-  int setflags;
-  int isgood;
-  char *p;
-  char *flag;
-
-  if (parc < 2)
-  {
-    /* Generate a list of what flags you have and what you are missing,
-    ** and send it to the user
-    */
-    sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-               me.name, parv[0], set_flags_to_string(source_p));
-    sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-               me.name, parv[0], unset_flags_to_string(source_p));
-    return;
-  }
-
-  /* Preserve the current flags */
-  setflags = source_p->umodes;
-
-/* XXX - change this to support a multiple last parameter like ISON */
-
-  for (i = 1; i < parc; i++)
-  {
-    for (flag = strtoken(&p, parv[i], " "); flag;
-         flag = strtoken(&p, NULL, " "))
-    {
-      /* We default to being in ADD mode */
-      isadd = 1;
-
-      /* We default to being in BAD mode */
-      isgood = 0;
-
-      if (!isalpha(flag[0]))
-      {
-        if (flag[0] == '-')
-          isadd = 0;
-        else if (flag[0] == '+')
-          isadd = 1;
-        flag++;
-      }
-
-      /* support ALL here */
-      if (!irccmp(flag, "ALL"))
-      {
-        if (isadd)
-          source_p->umodes |= FL_ALL_USER_FLAGS;
-        else
-          source_p->umodes &= ~FL_ALL_USER_FLAGS;
-        sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-                   me.name, parv[0], set_flags_to_string(source_p));
-        sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-                   me.name, parv[0], unset_flags_to_string(source_p));
-        send_umode_out(client_p, source_p, setflags);
-        return;
-      }
-
-      for (j = 0; flag_table[j].name; j++)
-      {
-        if (!flag_table[j].oper && !irccmp(flag, flag_table[j].name))
-        {
-          if (isadd)
-            source_p->umodes |= flag_table[j].mode;
-          else
-            source_p->umodes &= ~ (flag_table[j].mode);
-          isgood = 1;
-          continue;
-        }
-      }
-      /* This for ended without matching a valid FLAG, here is where
-      ** I want to operate differently than ircd-comstud, and just ignore
-      ** the invalid flag, send a warning and go on.
-      */
-      if (!isgood)
-        sendto_one(source_p, ":%s NOTICE %s :Invalid FLAGS: %s (IGNORING)",
-                   me.name, parv[0], flag);
-    }
-  }
-
-  /* All done setting the flags, print the notices out to the user
-  ** telling what flags they have and what flags they are missing
-  */
-  sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-             me.name, parv[0], set_flags_to_string(source_p));
-  sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-             me.name, parv[0], unset_flags_to_string(source_p));
-
-  send_umode_out(client_p, source_p, setflags);
-}
-
-/*
-** mo_flags
-**      parv[0] = sender prefix
-**      parv[1] = parameter
-*/
-static void mo_flags(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{		 
-  int i,j;
-  int isadd;
-  int setflags;
-  int isgood;
-  char *p;
-  char *flag;
-
-  if (parc < 2)
-  {
-    /* Generate a list of what flags you have and what you are missing,
-    ** and send it to the user
-    */
-    sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-               me.name, parv[0], set_flags_to_string(source_p));
-    sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-               me.name, parv[0], unset_flags_to_string(source_p));
-    return;
-  }
-
-  /* Preserve the current flags */
-  setflags = source_p->umodes;
-
-/* XXX - change this to support a multiple last parameter like ISON */
-
-  for (i = 1; i < parc; i++)
-  {
-    for (flag = strtoken(&p, parv[i], " "); flag;
-         flag = strtoken(&p, NULL, " "))
-    {
-      /* We default to being in ADD mode */
-      isadd = 1;
-
-      /* We default to being in BAD mode */
-      isgood = 0;
-
-      if (!isalpha(flag[0]))
-      {
-        if (flag[0] == '-')
-          isadd = 0;
-        else if (flag[0] == '+')
-          isadd = 1;
-        flag++;
-      }
-
-      /* support ALL here */
-      if (!irccmp(flag, "ALL"))
-      {
-        if (isadd)
-          source_p->umodes |= FL_ALL_OPER_FLAGS;
-        else
-          source_p->umodes &= ~FL_ALL_OPER_FLAGS;
-        sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-                   me.name, parv[0], set_flags_to_string(source_p));
-        sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-                   me.name, parv[0], unset_flags_to_string(source_p));
-        send_umode_out(client_p, source_p, setflags);
-        return;
-      }
-
-      if (!irccmp(flag, "NICKCHANGES"))
-      {
-        if (!IsOperN(source_p))
-        {
-          sendto_one(source_p,
-                     ":%s NOTICE %s :*** You need oper and N flag for +n",
-                     me.name,parv[0]);
-          continue;
-        }
-        if (isadd)
-          source_p->umodes |= FLAGS_NCHANGE;
-        else
-          source_p->umodes &= ~FLAGS_NCHANGE;
-        isgood = 1;
-        continue;
-      }
-
-      for (j = 0; flag_table[j].name; j++)
-      {
-        if (!irccmp(flag, flag_table[j].name))
-        {
-          if (isadd)
-            source_p->umodes |= flag_table[j].mode;
-          else
-            source_p->umodes &= ~ (flag_table[j].mode);
-          isgood = 1;
-          continue;
-        }
-      }
-      /* This for ended without matching a valid FLAG, here is where
-      ** I want to operate differently than ircd-comstud, and just ignore
-      ** the invalid flag, send a warning and go on.
-      */
-      if (!isgood)
-        sendto_one(source_p, ":%s NOTICE %s :Invalid FLAGS: %s (IGNORING)",
-                   me.name, parv[0], flag);
-    }
-  }
-
-  /* All done setting the flags, print the notices out to the user
-  ** telling what flags they have and what flags they are missing
-  */
-  sendto_one(source_p, ":%s NOTICE %s :Current flags:%s",
-             me.name, parv[0], set_flags_to_string(source_p));
-  sendto_one(source_p, ":%s NOTICE %s :Current missing flags:%s",
-             me.name, parv[0], unset_flags_to_string(source_p));
-
-  send_umode_out(client_p, source_p, setflags);
-}
-
-static char *set_flags_to_string(struct Client *client_p)
-{
-  /* XXX - list all flags that we have set on the client */
-  static char setflags[BUFSIZE + 1];
-  int i;
-
-  /* Clear it to begin with, we'll be doing a lot of ircsprintf's */
-  setflags[0] = '\0';
-
-  /* Unlike unset_flags_to_string(), we don't have to care about oper
-  ** flags and not showing them
-  */
-
-  for (i = 0; flag_table[i].name; i++)
-  {
-    if (client_p->umodes & flag_table[i].mode)
-    {
-      ircsprintf(setflags, "%s %s", setflags, flag_table[i].name);
-    }
-  }
-
-#if 0
-  if (IsOper(client_p) && IsOperN(client_p))
-  {
-#endif
-    /* You can only be set +NICKCHANGES if you are an oper and
-    ** IsOperN(client_p) is true
-    */
-    if (client_p->umodes & FLAGS_NCHANGE)
-    {
-      ircsprintf(setflags, "%s %s", setflags, "NICKCHANGES");
-    }
-#if 0
-  }
-#endif
-
-  return setflags;
-}
-
-static char *unset_flags_to_string(struct Client *client_p)
-{
-  /* Inverse of above */
-  /* XXX - list all flags that we do NOT have set on the client */
-  static char setflags[BUFSIZE + 1];
-  int i,isoper;
-
-  /* Clear it to begin with, we'll be doing a lot of ircsprintf's */
-  setflags[0] = '\0';
-
-  if (IsOper(client_p))
-    isoper = 1;
-  else
-    isoper = 0;
-
-  for (i = 0; flag_table[i].name; i++)
-  {
-    if ( !(client_p->umodes & flag_table[i].mode))
-    {
-      if (!isoper && flag_table[i].oper)
-        continue;
-      ircsprintf(setflags, "%s %s", setflags, flag_table[i].name);
-    }
-  }
-
-  if (IsOper(client_p) && IsOperN(client_p))
-  {
-    if ( !(client_p->umodes & FLAGS_NCHANGE))
-    {
-      ircsprintf(setflags, "%s %s", setflags, "NICKCHANGES");
-    }
-  }
-
-  return setflags;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_force.c ircd-hoho-2r15/contrib/m_force.c
--- ircd-hybrid-7rc3/contrib/m_force.c	Mon Jun 10 21:49:18 2002
+++ ircd-hoho-2r15/contrib/m_force.c	Wed Dec 31 19:00:00 1969
@@ -1,314 +0,0 @@
-/* contrib/m_force.c
- * Copyright (C) 2002 Hybrid Development Team
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are
- *  met:
- *
- *  1.Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *  2.Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  3.The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: m_force.c,v 1.14 2002/06/11 01:49:18 androsyn Exp $
- */
-
-#include "stdinc.h"
-#include "handlers.h"
-#include "client.h"
-#include "common.h"     /* FALSE bleah */
-#include "ircd.h"
-#include "irc_string.h"
-#include "numeric.h"
-#include "fdlist.h"
-#include "hash.h"
-#include "s_bsd.h"
-#include "s_conf.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "channel.h"
-#include "channel_mode.h"
-
-
-static void mo_forcejoin(struct Client *client_p, struct Client *source_p,
-                         int parc, char *parv[]);
-static void mo_forcepart(struct Client *client_p, struct Client *source_p,
-		         int parc, char *parv[]);
-
-struct Message forcejoin_msgtab = {
-  "FORCEJOIN", 0, 0, 3, 0, MFLG_SLOW, 0,
-  {m_ignore, m_not_oper, mo_forcejoin, mo_forcejoin}
-};
-struct Message forcepart_msgtab = {
-  "FORCEPART", 0, 0, 3, 0, MFLG_SLOW, 0,
-  {m_ignore, m_not_oper, mo_forcepart, mo_forcepart}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  mod_add_cmd(&forcejoin_msgtab);
-  mod_add_cmd(&forcepart_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&forcejoin_msgtab);
-  mod_del_cmd(&forcepart_msgtab);
-}
-
-char *_version = "$Revision: 1.14 $";
-#endif
-
-/*
- * m_forcejoin
- *      parv[0] = sender prefix
- *      parv[1] = user to force
- *      parv[2] = channel to force them into
- */
-static void mo_forcejoin(struct Client *client_p, struct Client *source_p,
-                         int parc, char *parv[])
-{
-  struct Client *target_p;
-  struct Channel *chptr;
-  int type;
-  char mode;
-  char sjmode;
-  char *newch;
-
-  if(!IsAdmin(source_p))
-  {
-    sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
-    return;
-  }
-
-  if((hunt_server(client_p, source_p, ":%s FORCEJOIN %s %s", 1, parc, parv)) != HUNTED_ISME)
-    return;
-
-  /* if target_p is not existant, print message
-   * to source_p and bail - scuzzy
-   */
-  if ((target_p = find_client(parv[1])) == NULL)
-  {
-    sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name,
-	       source_p->name, parv[1]);
-    return;
-  }
-
-  if(!IsClient(target_p))
-    return;
-
-  /* select our modes from parv[2] if they exist... (chanop)*/
-  if(*parv[2] == '@')
-  {
-    type = CHFL_CHANOP;
-    mode = 'o';
-    sjmode = '@';
-  }
-#ifdef HALFOPS
-  else if(*parv[2] == '%')
-  {
-    type = CHFL_HALFOP;
-    mode = 'h';
-    sjmode = '%';
-  }
-#endif
-  else if(*parv[2] == '+')
-  {
-    type = CHFL_VOICE;
-    mode = 'v';
-    sjmode = '+';
-  }
-  else
-  {
-    type = CHFL_PEON;
-    mode = sjmode = '\0';
-  }
-    
-  if(mode != '\0')
-    parv[2]++;
-    
-  if((chptr = hash_find_channel(parv[2])) != NULL)
-    {
-      if(IsMember(target_p, chptr))
-      {
-        /* debugging is fun... */
-        sendto_one(source_p, ":%s NOTICE %s :*** Notice -- %s is already in %s", me.name,
-		   source_p->name, target_p->name, chptr->chname);
-	return;
-      }
-
-      add_user_to_channel(chptr, target_p, type);
-
-      if (chptr->chname[0] != '&')
-        sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
-	              ":%s SJOIN %lu %s + :%c%s",
-	              me.name, (unsigned long) chptr->channelts,
-	              chptr->chname, type ? sjmode : ' ', target_p->name);
-
-      sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN :%s",
-                             target_p->name, target_p->username,
-                             target_p->host, chptr->chname);
-
-      if(type)
-        sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +%c %s",
-	                     me.name, chptr->chname, mode, target_p->name);
-        
-      if(chptr->topic != NULL)
-      {
-	sendto_one(target_p, form_str(RPL_TOPIC), me.name,
-	           target_p->name, chptr->chname, chptr->topic);
-        sendto_one(target_p, form_str(RPL_TOPICWHOTIME),
-	           me.name, source_p->name, chptr->chname,
-	           chptr->topic_info, chptr->topic_time);
-      }
-
-      channel_member_names(target_p, chptr, chptr->chname, 1);
-    }
-  else
-    {
-      newch = parv[2];
-      if (!check_channel_name(newch))
-      {
-        sendto_one(source_p, form_str(ERR_BADCHANNAME), me.name,
-		   source_p->name, (unsigned char*)newch);
-	return;
-      }
-
-      /* channel name must begin with & or # */
-      if (!IsChannelName(newch))
-      {
-        sendto_one(source_p, form_str(ERR_BADCHANNAME), me.name,
-		   source_p->name, (unsigned char*)newch);
-        return;
-      }
-
-     /* it would be interesting here to allow an oper
-      * to force target_p into a channel that doesn't exist
-      * even more so, into a local channel when we disable
-      * local channels... but...
-      * I don't want to break anything - scuzzy
-      */
-      if (ConfigServerHide.disable_local_channels &&
-	  (*newch == '&'))
-      {
-        sendto_one(source_p, ":%s NOTICE %s :No such channel (%s)", me.name,
-		   source_p->name, newch);
-        return;
-      }
-
-      /* newch can't be longer than CHANNELLEN */
-      if (strlen(newch) > CHANNELLEN)
-      {
-	sendto_one(source_p, ":%s NOTICE %s :Channel name is too long", me.name,
-		   source_p->name);
-        return;
-      }
-
-      chptr = get_or_create_channel(target_p, newch, NULL);
-      add_user_to_channel(chptr, target_p, CHFL_CHANOP);
-
-      /* send out a join, make target_p join chptr */
-      if (chptr->chname[0] != '&')
-        sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
-                      ":%s SJOIN %lu %s +nt :@%s", me.name,
-		      (unsigned long) chptr->channelts, chptr->chname,
-		      target_p->name);
-
-      sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN :%s",
-                             target_p->name, target_p->username,
-                             target_p->host, chptr->chname);
-
-      chptr->mode.mode |= MODE_TOPICLIMIT;
-      chptr->mode.mode |= MODE_NOPRIVMSGS;
-
-      sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +nt", me.name,
-                           chptr->chname);
-
-      target_p->localClient->last_join_time = CurrentTime;
-      channel_member_names(target_p, chptr, chptr->chname, 1);
-
-      /* we do this to let the oper know that a channel was created, this will be
-       * seen from the server handling the command instead of the server that
-       * the oper is on.
-       */
-      sendto_one(source_p, ":%s NOTICE %s :*** Notice -- Creating channel %s", me.name,
-		 source_p->name, chptr->chname);
-    }
-}
-
-
-static void mo_forcepart(struct Client *client_p, struct Client *source_p,
-		         int parc, char *parv[])
-{
-  struct Client *target_p;
-  struct Channel *chptr;
-
-  if(!IsAdmin(source_p))
-  {
-    sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
-    return;
-  }
-
-  if((hunt_server(client_p, source_p, ":%s FORCEPART %s %s", 1, parc, parv)) != HUNTED_ISME)
-    return;
-
-  /* if target_p == NULL then let the oper know */
-  if ((target_p = find_client(parv[1])) == NULL)
-  {
-    sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name,
-               source_p->name, parv[1]);
-    return;
-  }
-
-  if(!IsClient(target_p))
-    return;
-
-  if((chptr = hash_find_channel(parv[2])) == NULL)
-  {
-    sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
-               me.name, parv[0], parv[1]);
-    return;
-  }
-
-  if (!IsMember(target_p, chptr))
-  {
-    sendto_one(source_p, form_str(ERR_USERNOTINCHANNEL),
-               me.name, parv[0], parv[2], parv[1]);
-    return;
-  }
-  
-  if (chptr->chname[0] != '&')
-    sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
-		  ":%s PART %s :%s",
-		  target_p->name, chptr->chname,
-		  target_p->name);
-
-  sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s PART %s :%s",
-                       target_p->name, target_p->username,
- 	               target_p->host,chptr->chname,
-		       target_p->name);
-  remove_user_from_channel(chptr, target_p);
-}
-
diff -uNrd ircd-hybrid-7rc3/contrib/m_jupe.c ircd-hoho-2r15/contrib/m_jupe.c
--- ircd-hybrid-7rc3/contrib/m_jupe.c	Sun Jul  7 06:30:17 2002
+++ ircd-hoho-2r15/contrib/m_jupe.c	Wed Dec 31 19:00:00 1969
@@ -1,201 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  m_jupe.c: Jupes a server.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: m_jupe.c,v 1.34 2002/07/07 10:30:17 leeh Exp $
- */
-
-#include "stdinc.h"
-#include "tools.h"
-#include "irc_string.h"
-#include "handlers.h"
-#include "channel.h"
-#include "client.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "whowas.h"
-#include "irc_string.h"
-#include "hash.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "class.h"
-#include "common.h"
-#include "event.h"
-
-#include "fdlist.h"
-#include "list.h"
-#include "s_conf.h"
-#include "scache.h"
-
-
-static void mo_jupe(struct Client *client_p, struct Client *source_p,
-		 int parc, char *parv[]);
-static int bogus_host(char *host);
-
-struct Message jupe_msgtab = {
-  "JUPE", 0, 0, 3, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_not_oper, mo_jupe, mo_jupe}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  mod_add_cmd(&jupe_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&jupe_msgtab);
-}
-
-const char *_version = "$Revision: 1.34 $";
-#endif
-
-/*
-** mo_jupe
-**      parv[0] = sender prefix
-**      parv[1] = server we're juping
-**      parv[2] = reason for jupe
-*/
-static void mo_jupe(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  struct Client *target_p;
-  struct Client *ajupe;
-  dlink_node *m;
-  char reason[REALLEN+2];
-
-  if(!ServerInfo.hub)
-    return;
-
-  if(!IsOperAdmin(source_p))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :You must be an admin to use this command",
-                 me.name, parv[0]);
-      return;
-    }
-
-  if (bogus_host(parv[1]))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :Invalid servername: %s",
-                 me.name, parv[0], parv[1]);
-      return;
-    }
-
-  if(match(parv[1], me.name))
-  {
-    sendto_one(source_p, ":%s NOTICE %s :I cant jupe myself!",
-	       me.name, source_p->name);
-    return;
-  }
-
-  sendto_wallops_flags(FLAGS_WALLOP, &me,
-                       "JUPE for %s requested by %s: %s",
-			 parv[1], get_oper_name(source_p), parv[2]);
-
-  sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
-                ":%s WALLOPS :JUPE for %s requested by %s!%s@%s: %s",
-                parv[0], parv[1], source_p->name, 
-                source_p->username, source_p->host, parv[2]);
-  ilog(L_NOTICE, "JUPE for %s requested by %s: %s",
-                parv[1], get_oper_name(source_p), parv[2]);
-
-  target_p= find_server(parv[1]);
-
-  if(target_p)
-    exit_client(client_p, target_p, &me, parv[2]);
-
-  sendto_server(NULL, NULL, NULL, NOCAPS, NOCAPS, NOFLAGS,
-                ":%s SERVER %s 1 :JUPED: %s",
-                me.name, parv[1], parv[2]);
-
-  sendto_realops_flags(FLAGS_ALL, L_ALL,
-                       "Link with %s established: (JUPED) link",
-		       parv[1]);
-
-  ajupe = make_client(NULL);
-
-  /* make_client() adds client to unknown_list */
-  m = dlinkFind(&unknown_list, ajupe);
-  if(m != NULL)
-    dlinkDelete(m, &unknown_list);
-  free_dlink_node(m);
-
-  make_server(ajupe);
-  ajupe->hopcount = 1;
-  strlcpy(ajupe->name,parv[1],HOSTLEN);
-
-  /* we need to give 7 chars to prepend "JUPED: " */
-  if(strlen(parv[2]) > (REALLEN-7))
-    parv[2][REALLEN-7] = '\0';
-  ircsprintf(reason, "%s %s", "JUPED:", parv[2]);
-  
-  strlcpy(ajupe->info,reason,REALLEN);
-  ajupe->serv->up = me.name;
-  ajupe->servptr = &me;
-  SetServer(ajupe);
-  SetDead(ajupe);
-  
-  Count.server++;
-  Count.myserver++;
-
-  /* Some day, all these lists will be consolidated *sigh* */
-  add_client_to_list(ajupe);
-  add_to_client_hash_table(ajupe->name, ajupe);
-  add_client_to_llist(&(ajupe->servptr->serv->servers), ajupe);
-  add_server_to_list(ajupe);
-}
-
-
-/*  
- * bogus_host
- *   
- * inputs       - hostname
- * output       - 1 if a bogus hostname input, 0 if its valid
- * side effects - none
- */
-int bogus_host(char *host)
-{
-  int bogus_server = 0;
-  char *s;
-  int dots = 0;
- 
-  for( s = host; *s; s++ )
-    {
-      if (!IsServChar(*s))  
-        {
-          bogus_server = 1;
-          break;
-        }
-      if ('.' == *s)
-        ++dots;
-    }
-     
-  if (!dots || bogus_server || strlen(host) > HOSTLEN)
-    return 1;
-     
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_ltrace.c ircd-hoho-2r15/contrib/m_ltrace.c
--- ircd-hybrid-7rc3/contrib/m_ltrace.c	Wed Jul 31 18:52:58 2002
+++ ircd-hoho-2r15/contrib/m_ltrace.c	Wed Dec 31 19:00:00 1969
@@ -1,377 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  m_ltrace.c: Traces a path to a client/server.
- *
- *  Copyright (C) 2002 Hybrid Development Team
- *
- *  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
- *
- *  $Id: m_ltrace.c,v 1.4 2002/07/31 22:52:58 leeh Exp $
- */
-
-#include "stdinc.h"
-#include "handlers.h"
-#include "class.h"
-#include "hook.h"
-#include "client.h"
-#include "hash.h"
-#include "common.h"
-#include "hash.h"
-#include "irc_string.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "fdlist.h"
-#include "s_bsd.h"
-#include "s_serv.h"
-#include "send.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-
-
-static void m_ltrace(struct Client *, struct Client *, int, char **);
-static void mo_ltrace(struct Client*, struct Client*, int, char**);
-static struct Client* next_client_double(struct Client *next, const char* ch);
-static void ltrace_spy(struct Client *);
-
-struct Message ltrace_msgtab = {
-  "LTRACE", 0, 0, 0, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_ltrace, mo_ltrace, mo_ltrace}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  hook_add_event("doing_ltrace");
-  mod_add_cmd(&ltrace_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_event("doing_ltrace");
-  mod_del_cmd(&ltrace_msgtab);
-}
-
-const char *_version = "$Revision: 1.4 $";
-#endif
-
-static int report_this_status(struct Client *source_p, struct Client *target_p,int dow,
-                              int link_u_p, int link_u_s);
-
-/*
- * m_ltrace()
- *
- *	parv[0] = sender prefix
- *	parv[1] = target client/server to trace
- */
-static void m_ltrace(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  char *tname;
-
-  if (parc > 1)
-    tname = parv[1];
-  else
-    tname = me.name;
-  sendto_one(source_p, form_str(RPL_ENDOFTRACE), me.name, parv[0], tname);
-}
-
-/*
- * mo_ltrace
- *      parv[0] = sender prefix
- *      parv[1] = servername
- */
-static void mo_ltrace(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  struct Client       *target_p = NULL;
-  char  *tname;
-  int   doall, link_s[MAXCONNECTIONS], link_u[MAXCONNECTIONS];
-  int   wilds, dow;
-  dlink_node *ptr;
-  char *looking_for = parv[0];
-
-  if(!IsClient(source_p))
-    return;
-
-  if (parc > 1)
-    tname = parv[1];
-  else
-    tname = me.name;
-
-  if(!IsOper(source_p))
-  {
-    sendto_one(source_p, form_str(RPL_ENDOFTRACE), me.name, parv[0], tname);
-    return;
-  }
-
-  if (parc > 2)
-    if (hunt_server(client_p, source_p, ":%s LTRACE %s :%s", 2, parc, parv))
-      return;
-
-  switch (hunt_server(client_p, source_p, ":%s LTRACE :%s", 1, parc, parv))
-    {
-    case HUNTED_PASS: /* note: gets here only if parv[1] exists */
-      {
-        struct Client *ac2ptr;
-        
-        ac2ptr = next_client_double(GlobalClientList, tname);
-        if (ac2ptr)
-          sendto_one(source_p, form_str(RPL_TRACELINK), me.name, looking_for,
-                     ircd_version, debugmode, tname, ac2ptr->from->name);
-        else
-          sendto_one(source_p, form_str(RPL_TRACELINK), me.name, looking_for,
-                     ircd_version, debugmode, tname, "ac2ptr_is_NULL!!");
-        return;
-      }
-    case HUNTED_ISME:
-      break;
-    default:
-      return;
-    }
-
-  ltrace_spy(source_p);
-
-  doall = (parv[1] && (parc > 1)) ? match(tname, me.name): TRUE;
-  wilds = !parv[1] || strchr(tname, '*') || strchr(tname, '?');
-  dow = wilds || doall;
-  
-  set_time();
-
-  /* lusers cant issue ltrace.. */
-  if(!IsOper(source_p) || !dow)
-    {
-      const char* name;
-      const char* class_name;
-      char ipaddr[HOSTIPLEN];
-
-      target_p = find_client(tname);
-      
-      if(target_p && IsPerson(target_p)) 
-      {
-        name = get_client_name(target_p, HIDE_IP);
-        inetntop(target_p->localClient->aftype, &IN_ADDR(target_p->localClient->ip), ipaddr, HOSTIPLEN);
-
-        class_name = get_client_class(target_p);
-
-        if (IsOper(target_p))
-          sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
-                     me.name, parv[0], class_name, name, 
-#ifndef HIDE_SPOOF_IPS
-                     MyOper(source_p) ? ipaddr :
-#endif
-		     (IsIPSpoof(target_p) ? "255.255.255.255" : ipaddr),
-                     CurrentTime - target_p->lasttime,
-                     (target_p->user) ? (CurrentTime - target_p->user->last) : 0);
-      }
-      
-      sendto_one(source_p, form_str(RPL_ENDOFTRACE),me.name,
-                 parv[0], tname);
-      return;
-    }
-
-  memset((void *)link_s,0,sizeof(link_s));
-  memset((void *)link_u,0,sizeof(link_u));
-
-  /*
-   * Count up all the servers and clients in a downlink.
-   */
-  if (doall)
-   {
-    for (target_p = GlobalClientList; target_p; target_p = target_p->next)
-     {
-      if (IsPerson(target_p))
-        {
-          link_u[target_p->from->localClient->fd]++;
-        }
-      else if (IsServer(target_p))
-	{
-	  link_s[target_p->from->localClient->fd]++;
-	}
-     }
-   }
-   
-  /* report all opers */
-  for (ptr = lclient_list.head; ptr; ptr = ptr->next)
-    {
-      target_p = ptr->data;
-
-      if(!IsOper(target_p))
-	continue;
-
-      if (!doall && wilds && !match(tname, target_p->name))
-        continue;
-
-      if (!dow && irccmp(tname, target_p->name))
-        continue;
-
-      report_this_status(source_p,target_p,dow,0,0);
-    }
-
-  /* report all servers */
-  for (ptr = serv_list.head; ptr; ptr = ptr->next)
-    {
-      target_p = ptr->data;
-
-      if (!doall && wilds && !match(tname, target_p->name))
-        continue;
-      if (!dow && irccmp(tname, target_p->name))
-        continue;
-
-      report_this_status(source_p, target_p, dow,
-                               link_u[target_p->localClient->fd],
-                               link_s[target_p->localClient->fd]);
-    }
-
-  sendto_one(source_p, form_str(RPL_ENDOFTRACE),me.name, parv[0],tname);
-}
-
-
-
-
-/*
- * report_this_status
- *
- * inputs	- pointer to client to report to
- * 		- pointer to client to report about
- * output	- counter of number of hits
- * side effects - NONE
- */
-static int report_this_status(struct Client *source_p, struct Client *target_p,
-                              int dow, int link_u_p, int link_s_p)
-{
-  const char* name;
-  const char* class_name;
-  char  ip[HOSTIPLEN];
-
-  inetntop(target_p->localClient->aftype, &IN_ADDR(target_p->localClient->ip), ip, HOSTIPLEN);
-  name = get_client_name(target_p, HIDE_IP);
-  class_name = get_client_class(target_p);
-
-  set_time();
-
-  switch(target_p->status)
-    {
-    case STAT_CONNECTING:
-      sendto_one(source_p, form_str(RPL_TRACECONNECTING), me.name,
-                 source_p->name, class_name, 
-		 IsOperAdmin(source_p) ? name : target_p->name);
-		   
-      break;
-
-    case STAT_HANDSHAKE:
-      sendto_one(source_p, form_str(RPL_TRACEHANDSHAKE), me.name,
-                 source_p->name, class_name, 
-                 IsOperAdmin(source_p) ? name : target_p->name);
-		   
-      break;
-      
-    case STAT_ME:
-    case STAT_UNKNOWN:
-      break;
-
-    case STAT_CLIENT:
-      if (IsAdmin(target_p))
-	sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
-                   me.name, source_p->name, class_name, name,
-#ifndef HIDE_SPOOF_IPS
-                   IsOperAdmin(source_p) ? ip : 
-#endif
-                   (IsIPSpoof(target_p) ? "255.255.255.255" : ip),
-                   CurrentTime - target_p->lasttime,
-                   (target_p->user) ? (CurrentTime - target_p->user->last) : 0);
-		       
-      else if (IsOper(target_p))
-	sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
-		   me.name, source_p->name, class_name, name, 
-#ifndef HIDE_SPOOF_IPS
-		   MyOper(source_p) ? ip : 
-#endif
-		   (IsIPSpoof(target_p) ? "255.255.255.255" : ip),
-		   CurrentTime - target_p->lasttime,
-		   (target_p->user)?(CurrentTime - target_p->user->last):0);
-
-      break;
-    case STAT_SERVER:
-      if(!IsOperAdmin(source_p))
-        name = get_client_name(target_p, MASK_IP);
-
-      sendto_one(source_p, form_str(RPL_TRACESERVER),
-		 me.name, source_p->name, class_name, link_s_p,
-		 link_u_p, name, *(target_p->serv->by) ?
-		 target_p->serv->by : "*", "*",
-		 me.name, CurrentTime - target_p->lasttime);
-      break;
-      
-    default: /* ...we actually shouldn't come here... --msa */
-      sendto_one(source_p, form_str(RPL_TRACENEWTYPE), me.name,
-		 source_p->name, name);
-      break;
-    }
-
-  return 0;
-}
-
-/* ltrace_spy()
- *
- * input        - pointer to client
- * output       - none
- * side effects - hook event doing_trace is called
- */
-static void ltrace_spy(struct Client *source_p)
-{
-  struct hook_spy_data data;
-
-  data.source_p = source_p;
-
-  hook_call_event("doing_ltrace", &data);
-}
-
-/* 
- * this slow version needs to be used for hostmasks *sigh
- *
- * next_client_double - find the next matching client. 
- * The search can be continued from the specified client entry. 
- * Normal usage loop is:
- *
- *      for (x = client; x = next_client_double(x,mask); x = x->next)
- *              HandleMatchingClient;
- *            
- */
-static struct Client* 
-next_client_double(struct Client *next, /* First client to check */
-                   const char* ch)      /* search string (may include wilds) */
-{
-  struct Client *tmp = next;
-
-  next = find_client(ch);
-
-  if (next == NULL)
-    next = tmp;
-
-  if (tmp && tmp->prev == next)
-    return NULL;
-  if (next != tmp)
-    return next;
-  for ( ; next; next = next->next)
-    {
-      if (match(ch,next->name) || match(next->name,ch))
-        break;
-    }
-  return next;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_map.c ircd-hoho-2r15/contrib/m_map.c
--- ircd-hybrid-7rc3/contrib/m_map.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/m_map.c	Wed Dec 31 19:00:00 1969
@@ -1,156 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  m_map.c: Sends an Undernet compatible map to a user.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: m_map.c,v 1.12 2002/05/24 23:48:34 androsyn Exp $
- */
-
-#include "stdinc.h"
-#include "client.h"
-#include "modules.h"
-#include "handlers.h"
-#include "numeric.h"
-#include "send.h"
-#include "s_conf.h"
-
-#define USER_COL       50 /* display | Users: %d at col 50 */
-
-static void m_map(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void mo_map(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void dump_map(struct Client *client_p,struct Client *root, char *pbuf);
-
-struct Message map_msgtab = {
-  "MAP", 0, 0, 0, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_map, m_ignore, mo_map}
-};
-
-#ifndef STATIC_MODULES
-void _modinit(void)
-{
-  mod_add_cmd(&map_msgtab);
-}
-
-void _moddeinit(void)
-{
-  mod_del_cmd(&map_msgtab);
-}
-
-const char *_version = "$Revision: 1.12 $";
-#endif
-
-static char buf[BUFSIZE];
-
-/* m_map
-**	parv[0] = sender prefix
-*/
-static void m_map(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  if (!ConfigServerHide.flatten_links)
-  {
-    dump_map(client_p,&me,buf);
-    sendto_one(client_p, form_str(RPL_MAPEND), me.name, client_p->name);
-    return;
-  }
-
-  m_not_oper(client_p,source_p,parc,parv);
-  return;
-}
-
-/*
-** mo_map
-**      parv[0] = sender prefix
-*/
-static void mo_map(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  dump_map(client_p,&me,buf);
-  sendto_one(client_p, form_str(RPL_MAPEND), me.name, client_p->name);
-}
-
-/*
-** dump_map
-**   dumps server map, called recursively.
-*/
-static void dump_map(struct Client *client_p,struct Client *root_p, char *pbuf)
-{
-  int cnt = 0, i = 0, len;
-  int users = 0;
-  struct Client *server_p,*user_p;
-        
-  *pbuf= '\0';
-       
-  strncat(pbuf,root_p->name,BUFSIZE - ((size_t) pbuf - (size_t) buf));
-  len = strlen(buf);
-  buf[len] = ' ';
-	
-  if (len < USER_COL)
-  {
-     for (i = len+1; i < USER_COL; i++)
-     {
-       buf[i] = '-';
-     }
-  }
-	
-  /* FIXME: add serv->usercnt */
-  for( user_p = root_p->serv->users; user_p; user_p = user_p->lnext )
-    users++;
-        
-  snprintf(buf + USER_COL, BUFSIZE - USER_COL,
-           " | Users: %5d (%4.1f%%)", users,
-           100 * (float) users / (float) Count.total);
-        
-  sendto_one(client_p, form_str(RPL_MAP),me.name,client_p->name,buf);
-        
-  if ((server_p = root_p->serv->servers))
-  {
-    for (; server_p; server_p = server_p->lnext)
-    {
-      cnt++;
-    }
-    
-    if (cnt)
-    {
-      if (pbuf > buf + 3)
-      {
-        pbuf[-2] = ' ';
-        if (pbuf[-3] == '`')
-          pbuf[-3] = ' ';
-      }
-    }
-  }
-  for (i = 1,server_p = root_p->serv->servers; server_p; server_p=server_p->lnext)
-  {
-    *pbuf = ' ';
-    if (i < cnt)
-      *(pbuf + 1) = '|';
-    else
-      *(pbuf + 1) = '`';
-      
-    *(pbuf + 2) = '-';
-    *(pbuf + 3) = ' ';
-    dump_map(client_p,server_p,pbuf+4);
- 
-    i++;
-   }
-}
-
diff -uNrd ircd-hybrid-7rc3/contrib/m_mkpasswd.c ircd-hoho-2r15/contrib/m_mkpasswd.c
--- ircd-hybrid-7rc3/contrib/m_mkpasswd.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/m_mkpasswd.c	Wed Dec 31 19:00:00 1969
@@ -1,168 +0,0 @@
-/*
- *  m_mkpasswd.c: Encrypts a password online, DES or MD5.
- *
- *  Copyright 2002 W. Campbell and the ircd-hybrid development team
- *  Based on mkpasswd.c, originally by Nelson Minar (minar@reed.edu)
- *
- *  You can use this code in any way as long as these names remain.
- *
- *  $Id: m_mkpasswd.c,v 1.9 2002/05/24 23:48:34 androsyn Exp $
- */
-
-/* List of ircd includes from ../include/ */
-#include "stdinc.h"
-#include "handlers.h"
-#include "client.h"
-#include "common.h"     /* FALSE bleah */
-#include "ircd.h"
-#include "irc_string.h"
-#include "numeric.h"
-#include "fdlist.h"
-#include "s_bsd.h"
-#include "s_conf.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-
-#include <string.h>
-
-extern char *crypt();
-
-static void m_mkpasswd(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static void mo_mkpasswd(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static char *make_salt(void);
-static char *make_md5_salt(void);
-
-static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
-
-struct Message test_msgtab = {
-  "MKPASSWD", 0, 0, 1, 2, MFLG_SLOW, 0,
-  {m_unregistered, m_mkpasswd, m_ignore, mo_mkpasswd}
-};
-
-#ifndef STATIC_MODULES
-void _modinit(void)
-{
-  mod_add_cmd(&test_msgtab);
-}
-
-void _moddeinit(void)
-{
-  mod_del_cmd(&test_msgtab);
-}
-
-const char *_version = "$Revision: 1.9 $";
-#endif
-
-static void m_mkpasswd(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{
-  static time_t last_used = 0;
-  int is_md5 = 0;
-
-  if ((last_used + ConfigFileEntry.pace_wait) > CurrentTime)
-    {
-      /* safe enough to give this on a local connect only */
-      sendto_one(source_p,form_str(RPL_LOAD2HI),me.name,parv[0]);
-      return;
-    }
-  else
-    {
-      last_used = CurrentTime;
-    }
-
-  if (parc == 3)
-  {
-    if (!irccmp(parv[2], "MD5"))
-    {
-      is_md5 = 1;
-    }
-    else if (!irccmp(parv[2], "DES"))
-    {
-      /* Not really needed, but we may want to have a default encryption
-       * setting somewhere down the road
-       */
-      is_md5 = 0;
-    }
-    else
-    {
-      sendto_one(source_p, ":%s NOTICE %s :MKPASSWD syntax error:  MKPASSWD pass [DES|MD5]", me.name, parv[0]);
-      return;
-    }
-  }
-
-  if(parc == 1)
-    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
-               me.name, parv[0], "MKPASSWD");
-  else
-    sendto_one(source_p, ":%s NOTICE %s :Encryption for [%s]:  %s",
-               me.name, parv[0], parv[1], crypt(parv[1],
-               is_md5 ? make_md5_salt() : make_salt()));
-}
-
-/*
-** mo_test
-**      parv[0] = sender prefix
-**      parv[1] = parameter
-*/
-static void mo_mkpasswd(struct Client *client_p, struct Client *source_p,
-                   int parc, char *parv[])
-{		 
-  int is_md5 = 0;
-
-  if (parc == 3)
-  {
-    if (!irccmp(parv[2], "MD5"))
-    {
-      is_md5 = 1;
-    }
-    else if (!irccmp(parv[2], "DES"))
-    {
-      /* Not really needed, but we may want to have a default encryption
-       * setting somewhere down the road
-       */
-      is_md5 = 0;
-    }
-    else
-    {
-      sendto_one(source_p, ":%s NOTICE %s :MKPASSWD syntax error:  MKPASSWD pass [DES|MD5]", me.name, parv[0]);
-      return;
-    }
-  }
-
-  if (parc == 1)
-    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
-               me.name, parv[0], "MKPASSWD");
-  else
-    sendto_one(source_p, ":%s NOTICE %s :Encryption for [%s]:  %s",
-               me.name, parv[0], parv[1], crypt(parv[1],
-               is_md5 ? make_md5_salt() : make_salt()));
-}
-
-static char *make_salt(void)
-{
-  static char salt[3];
-  salt[0] = saltChars[random() % 64];
-  salt[1] = saltChars[random() % 64];
-  salt[2] = '\0';
-  return salt;
-}
-
-static char *make_md5_salt(void)
-{
-  static char salt[13];
-  int i;
-  salt[0] = '$';
-  salt[1] = '1';
-  salt[2] = '$';
-  for (i=3; i<11; i++)
-    salt[i] = saltChars[random() % 64];
-  salt[11] = '$';
-  salt[12] = '\0';
-  return salt;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_ojoin.c ircd-hoho-2r15/contrib/m_ojoin.c
--- ircd-hybrid-7rc3/contrib/m_ojoin.c	Mon Jun 10 21:49:18 2002
+++ ircd-hoho-2r15/contrib/m_ojoin.c	Wed Dec 31 19:00:00 1969
@@ -1,203 +0,0 @@
-/*   contrib/m_ojoin.c
- *   Copyright (C) 2002 Hybrid Development Team
- *
- *   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: m_ojoin.c,v 1.11 2002/06/11 01:49:18 androsyn Exp $
- */
-
-#include "stdinc.h"
-#include "tools.h"
-#include "handlers.h"
-#include "channel.h"
-#include "client.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "whowas.h"
-#include "irc_string.h"
-#include "hash.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "vchannel.h"
-#include "list.h"
-#include "channel_mode.h"
-
-static void mo_ojoin(struct Client *client_p, struct Client *source_p,
-                         int parc, char *parv[]);
-
-struct Message ojoin_msgtab = {
-  "OJOIN", 0, 0, 2, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_not_oper, m_ignore, mo_ojoin}
-};
-
-void
-_modinit(void)
-{
-  mod_add_cmd(&ojoin_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&ojoin_msgtab);
-}
-
-char *_version = "$Revision: 1.11 $";
-
-/*
-** mo_ojoin
-**      parv[0] = sender prefix
-**      parv[1] = channel
-*/
-static void mo_ojoin(struct Client *client_p, struct Client *source_p,
-                        int parc, char *parv[])
-{
-  struct Channel *chptr, *root_chptr;
-  int move_me = 0;
-#ifdef VCHANS
-  int on_vchan = 0;
-#endif
-
-  /* admins only */
-  if (!IsOperAdmin(source_p))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
-      return;
-    }
-
-  /* XXX - we might not have CBURSTed this channel if we are a lazylink
-   * yet. */
-  if (*parv[1] == '@' || *parv[1] == '%' || *parv[1] == '+')
-    {
-      parv[1]++;
-      move_me = 1;
-    }
-
-  chptr= hash_find_channel(parv[1]);
-  root_chptr = chptr;
-
-#ifdef VCHANS
-  if (chptr && parc > 2 && parv[2][0] == '!')
-    {
-      chptr = find_vchan(chptr, parv[2]);
-      if (root_chptr != chptr)
-        on_vchan++;
-    }
-#endif
-
-  if( chptr == NULL )
-    {
-      sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
-		 me.name, parv[0], parv[1]);
-      return;
-    }
-
-  if(IsMember(source_p, chptr))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :Please part %s before using OJOIN",
-                 me.name, source_p->name, parv[1]);
-      return;
-    }
-
-  if (move_me == 1)
-    parv[1]--;
-
-  if (*parv[1] == '@') 
-    {
-       add_user_to_channel(chptr, source_p, CHFL_CHANOP);
-       if (chptr->chname[0] != '&')
-         sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT, 
-                 ":%s SJOIN %lu %s + :@%s", me.name, chptr->channelts,
-                 chptr->chname, source_p->name);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
-                       source_p->name,
-                       source_p->username,
-                       source_p->host,
-                       root_chptr->chname);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +o %s",
-                       me.name, chptr->chname, source_p->name);
-
-    }
-#ifdef HALFOPS
-  else if (*parv[1] == '%')
-    {
-       add_user_to_channel(chptr, source_p, CHFL_HALFOP);
-       if (chptr->chname[0] != '&')
-         sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT, 
-                 ":%s SJOIN %lu %s + :%%%s", me.name, chptr->channelts,
-                 chptr->chname, source_p->name);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
-                       source_p->name,
-                       source_p->username,
-                       source_p->host,
-                       root_chptr->chname);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +h %s",
-                       me.name, chptr->chname, source_p->name);
-    }
-#endif
-  else if (*parv[1] == '+')
-    {
-       add_user_to_channel(chptr, source_p, CHFL_VOICE);
-       if (chptr->chname[0] != '&')
-         sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT, 
-                 ":%s SJOIN %lu %s + :+%s", me.name, chptr->channelts,
-                 chptr->chname, source_p->name);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
-                       source_p->name,
-                       source_p->username,
-                       source_p->host,
-                       root_chptr->chname);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +v %s",
-                       me.name, chptr->chname, source_p->name);
-    }
-  else
-    {
-       add_user_to_channel(chptr, source_p, CHFL_PEON);
-       if (chptr->chname[0] != '&')
-         sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT, 
-                       ":%s SJOIN %lu %s + :%s",
-                       me.name, chptr->channelts,
-		       chptr->chname, source_p->name);
-       sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
-                       source_p->name,
-                       source_p->username,
-                       source_p->host,
-                       root_chptr->chname);
-    }
-
-  /* send the topic... */
-  if (chptr->topic != NULL)
-  {
-    sendto_one(source_p, form_str(RPL_TOPIC), me.name,
-	       source_p->name, chptr->chname, chptr->topic);
-    sendto_one(source_p, form_str(RPL_TOPICWHOTIME), me.name,
-	       source_p->name, chptr->chname, chptr->topic_info,
-	       chptr->topic_time);
-  }
-
-  /* XXX - check this isn't too big above... */
-#ifdef VCHANS
-  if (on_vchan)
-    add_vchan_to_client_cache(source_p,root_chptr,chptr);
-#endif
-
-  source_p->localClient->last_join_time = CurrentTime;
-  channel_member_names(source_p, chptr, chptr->chname, 1);
-}
-
diff -uNrd ircd-hybrid-7rc3/contrib/m_opme.c ircd-hoho-2r15/contrib/m_opme.c
--- ircd-hybrid-7rc3/contrib/m_opme.c	Sun Jul 14 18:11:55 2002
+++ ircd-hoho-2r15/contrib/m_opme.c	Wed Dec 31 19:00:00 1969
@@ -1,206 +0,0 @@
-/*   contrib/m_opme.c
- *   Copyright (C) 2002 Hybrid Development Team
- *
- *   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: m_opme.c,v 1.27 2002/07/14 22:11:55 leeh Exp $
- */
-#include "stdinc.h"
-#include "tools.h"
-#include "handlers.h"
-#include "channel.h"
-#include "client.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_log.h"
-#include "s_serv.h"
-#include "send.h"
-#include "whowas.h"
-#include "irc_string.h"
-#include "hash.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "vchannel.h"
-
-
-static void mo_opme(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static int chan_is_opless(struct Channel *chptr);
-
-struct Message opme_msgtab = {
-  "OPME", 0, 0, 2, 0, MFLG_SLOW, 0,
-  {m_unregistered, m_not_oper, m_ignore, mo_opme}
-};
-
-void
-_modinit(void)
-{
-  mod_add_cmd(&opme_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&opme_msgtab);
-}
-
-char *_version = "$Revision: 1.27 $";
-
-static int chan_is_opless(struct Channel *chptr)
-{
-  if (chptr->chanops.head)
-	  return 0;
-  else
-	  return 1;
-}
-
-/*
-** mo_opme
-**      parv[0] = sender prefix
-**      parv[1] = channel
-*/
-static void mo_opme(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  struct Channel *chptr, *root_chptr;
-  int on_vchan = 0;
-  dlink_node *ptr;
-  dlink_node *locptr;
-  
-  /* admins only */
-  if (!IsAdmin(source_p))
-    {
-      sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name,
-                 parv[0]);
-      return;
-    }
-
-  /* XXX - we might not have CBURSTed this channel if we are a lazylink
-   * yet. */
-  chptr= hash_find_channel(parv[1]);
-  root_chptr = chptr;
-
-#ifdef VCHANS
-  if (chptr && parc > 2 && parv[2][0] == '!')
-    {
-      chptr = find_vchan(chptr, parv[2]);
-      if (root_chptr != chptr)
-		  on_vchan++;
-    }
-#endif
-  
-  if( chptr == NULL )
-    {
-      sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
-		 me.name, parv[0], parv[1]);
-      return;
-    }
-
-  if (!chan_is_opless(chptr))
-  {
-    sendto_one(source_p, ":%s NOTICE %s :%s Channel is not opless",
-               me.name, parv[0], parv[1]);
-    return;
-  }
-
-  if ((ptr = find_user_link(&chptr->peons, source_p)))
-	  dlinkDelete(ptr, &chptr->peons);
-  else if ((ptr = find_user_link(&chptr->voiced, source_p)))
-	  dlinkDelete(ptr, &chptr->voiced);
-#ifdef HALFOPS
-  else if ((ptr = find_user_link(&chptr->halfops, source_p)))
-	  dlinkDelete(ptr, &chptr->halfops);
-#endif
-  else if ((ptr = find_user_link(&chptr->chanops, source_p)))
-	  dlinkDelete(ptr, &chptr->chanops);
-#ifdef REQUIRE_OANDV
-  else if((ptr = find_user_link(&chptr->chanops_voiced, source_p)))
-    dlinkDelete(ptr, &chptr->chanops_voiced);
-#endif
-  else
-    {
-       /* Theyre not even on the channel, bail. */
-       return;      
-    }
-
-  if((locptr = find_user_link(&chptr->locpeons, source_p)))
-    dlinkDelete(locptr, &chptr->locpeons);
-  else if((locptr = find_user_link(&chptr->locvoiced, source_p)))
-    dlinkDelete(locptr, &chptr->locvoiced);
-#ifdef HALFOPS
-  else if((locptr = find_user_link(&chptr->lochalfops, source_p)))
-    dlinkDelete(locptr, &chptr->lochalfops);
-#endif
-  else if((locptr = find_user_link(&chptr->locchanops, source_p)))
-    dlinkDelete(locptr, &chptr->locchanops);
-  
-#ifdef REQUIRE_OANDV
-  else if((locptr = find_user_link(&chptr->locchanops_voiced, source_p)))
-    dlinkDelete(locptr, &chptr->locchanops_voiced);
-#endif
-
-  else
-    return;
-
-  dlinkAdd(source_p, ptr, &chptr->chanops);
-  dlinkAdd(source_p, locptr, &chptr->locchanops);
-
-  if (!on_vchan)
-    {
-     sendto_wallops_flags(FLAGS_WALLOP, &me,
-                          "OPME called for [%s] by %s!%s@%s",
-                          parv[1], source_p->name, source_p->username,
-                          source_p->host);
-     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
-                   ":%s WALLOPS :OPME called for [%s] by %s!%s@%s",
-                   me.name, parv[1], source_p->name, source_p->username,
-                   source_p->host);
-     ilog(L_NOTICE, "OPME called for [%s] by %s!%s@%s",
-                   parv[1], source_p->name, source_p->username,
-                   source_p->host);
-    }
-  else
-    {
-     sendto_wallops_flags(FLAGS_WALLOP, &me,
-                          "OPME called for [%s %s] by %s!%s@%s",
-                          parv[1], parv[2], source_p->name,
-                          source_p->username, source_p->host);
-     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
-                   ":%s WALLOPS :OPME called for [%s %s] by %s!%s@%s",
-                   me.name, parv[1], parv[2], source_p->name,
-                   source_p->username, source_p->host);
-     ilog(L_NOTICE, "OPME called for [%s %s] by %s!%s@%s",
-                   parv[1], parv[2], source_p->name, source_p->username,
-                   source_p->host);
-    }
-
-  sendto_server(NULL, source_p, chptr, CAP_UID, NOCAPS, NOFLAGS,
-                 ":%s PART %s", ID(source_p), parv[1]);
-  sendto_server(NULL, source_p, chptr, NOCAPS, CAP_UID, NOFLAGS,
-                ":%s PART %s", source_p->name, parv[1]);
-  sendto_server(NULL, source_p, chptr, CAP_UID, NOCAPS, NOFLAGS,
-                ":%s SJOIN %ld %s + :@%s",
-                me.name, (signed long) chptr->channelts,
-                parv[1],
-                source_p->name /* XXX ID(source_p) */ );
-  sendto_server(NULL, source_p, chptr, NOCAPS, CAP_UID, NOFLAGS,
-                ":%s SJOIN %ld %s + :@%s",
-                me.name, (signed long) chptr->channelts,
-                parv[1], source_p->name);
-  sendto_channel_local(ALL_MEMBERS, chptr,
-                       ":%s MODE %s +o %s",
-                       me.name, parv[1], source_p->name);
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_tburst.c ircd-hoho-2r15/contrib/m_tburst.c
--- ircd-hybrid-7rc3/contrib/m_tburst.c	Sat Jul  6 18:20:09 2002
+++ ircd-hoho-2r15/contrib/m_tburst.c	Wed Dec 31 19:00:00 1969
@@ -1,162 +0,0 @@
-/*  contrib/m_tburst.c
- *  Copyright (C) 2002 Hybrid Development Team
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are
- *  met:
- *
- *  1.Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *  2.Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  3.The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- *
- *  $Id: m_tburst.c,v 1.11 2002/07/06 22:20:09 leeh Exp $
- */
-
-#include "stdinc.h"
-#include "handlers.h"
-#include "client.h"
-#include "common.h"
-#include "ircd.h"
-#include "send.h"
-#include "msg.h"
-#include "modules.h"
-#include "hook.h"
-#include "hash.h"
-#include "s_serv.h"
-#include "s_conf.h"
-
-
-/* TBURST_PROPAGATE
- *
- * If this is defined, when we receive a TBURST thats successful
- * (ie: our topic changes), the TBURST will be propagated to other
- * servers that support TBURST
- */
-#define TBURST_PROPAGATE
-
-
-
-static void ms_tburst(struct Client *, struct Client *, int, char **);
-static void set_topic(struct Client *, struct Channel *, 
-		      time_t, char *, char *);
-static void set_tburst_capab();
-static void unset_tburst_capab();
-int send_tburst(struct hook_burst_channel *);
-
-struct Message tburst_msgtab = {
-  "TBURST", 0, 0, 6, 0, MFLG_SLOW, 0,
-  {m_ignore, m_ignore, ms_tburst, m_ignore}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  mod_add_cmd(&tburst_msgtab);
-  hook_add_hook("burst_channel", (hookfn *)send_tburst);
-  set_tburst_capab();
-}
-
-void
-_moddeinit(void)
-{
-  mod_del_cmd(&tburst_msgtab);
-  hook_del_hook("burst_channel", (hookfn *)send_tburst);
-  unset_tburst_capab();
-}
-
-const char *_version = "$Revision: 1.11 $";
-#endif
-
-/* ms_tburst()
- * 
- *      parv[0] = sender prefix
- *      parv[1] = channel timestamp
- *      parv[2] = channel
- *      parv[3] = topic timestamp
- *      parv[4] = topic setter
- *      parv[5] = topic
- */
-static void ms_tburst(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  struct Channel *chptr;
-  time_t newchannelts;
-  time_t newtopicts;
-
-  newchannelts = atol(parv[1]);
-  newtopicts = atol(parv[3]);
-
-  if((chptr = hash_find_channel(parv[2])))
-  {
-    if(chptr->channelts < newchannelts)
-      return;
-
-    else if(chptr->channelts == newchannelts)
-    {
-      if(chptr->topic == NULL || (chptr->topic_time > newtopicts))
-	set_topic(source_p, chptr, newtopicts, parv[4], parv[5]);
-      else
-	return;
-    }
-
-    else
-      set_topic(source_p, chptr, newtopicts, parv[4], parv[5]);
-  }
-}
-
-static void set_topic(struct Client *source_p, struct Channel *chptr, 
-		      time_t newtopicts, char *topicwho, char *topic)
-{
-  set_channel_topic(chptr, topic, topicwho, newtopicts);
-
-  sendto_channel_local(ALL_MEMBERS, chptr, ":%s TOPIC %s :%s",
-		       ConfigServerHide.hide_servers ? me.name : source_p->name,
-		       chptr->chname, chptr->topic == NULL ? "" : chptr->topic);
-
-#ifdef TBURST_PROPAGATE
-  sendto_server(source_p, NULL, chptr, CAP_TBURST, NOCAPS, NOFLAGS,
-		":%s TBURST %ld %s %ld %s :%s",
-		source_p->name, chptr->channelts, chptr->chname,
-		chptr->topic_time, 
-                chptr->topic_info == NULL ? "" : chptr->topic_info,
-                chptr->topic == NULL ? "" : chptr->topic);
-#endif
-}
-
-static void set_tburst_capab()
-{
-  default_server_capabs |= CAP_TBURST;
-}
-
-static void unset_tburst_capab()
-{
-  default_server_capabs &= ~CAP_TBURST;
-}
-
-int send_tburst(struct hook_burst_channel *data)
-{
-  if(data->chptr->topic != NULL && IsCapable(data->client, CAP_TBURST))
-    sendto_one(data->client, ":%s TBURST %ld %s %ld %s :%s",
-               me.name, data->chptr->channelts, data->chptr->chname,
-	       data->chptr->topic_time, data->chptr->topic_info, 
-	       data->chptr->topic);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/m_whois.c ircd-hoho-2r15/contrib/m_whois.c
--- ircd-hybrid-7rc3/contrib/m_whois.c	Mon Aug 19 21:32:17 2002
+++ ircd-hoho-2r15/contrib/m_whois.c	Wed Dec 31 19:00:00 1969
@@ -1,741 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  m_whois.c: Shows who a user is.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: m_whois.c,v 1.2 2002/08/20 01:32:17 db Exp $
- */
-
-#include "stdinc.h"
-#include "tools.h"
-#include "common.h"  
-#include "handlers.h"
-#include "client.h"
-#include "hash.h"
-#include "channel.h"
-#include "channel_mode.h"
-#include "vchannel.h"
-#include "hash.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_conf.h"
-#include "s_serv.h"
-#include "send.h"
-#include "list.h"
-#include "irc_string.h"
-#include "s_conf.h"
-#include "msg.h"
-#include "parse.h"
-#include "modules.h"
-#include "hook.h"
-
-/* Add the bahamut style WHOISACTUALLY to show the users real ip on
-   remote (or local) WHOIS.
-   Added 2002-07-15 by Gozem
-*/
-
-
-static int do_whois(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[]);
-static int single_whois(struct Client *source_p, struct Client *target_p,
-                        int wilds, int glob);
-static void whois_person(struct Client *source_p,struct Client *target_p,int glob);
-static int global_whois(struct Client *source_p, char *nick, int wilds, int glob);
-
-static void m_whois(struct Client*, struct Client*, int, char**);
-static void ms_whois(struct Client*, struct Client*, int, char**);
-static void mo_whois(struct Client*, struct Client*, int, char**);
-
-
-/* show_ip() should really be a global function, but since im hacking
-   up m_whois.c it stays here thsi time -Gozem */
-/*
- * show_ip() - asks if the true IP shoudl be shown when source is
- *             askin for info about target 
- *
- * Inputs	- source_p who is asking
- *		- target_p who do we want the info on
- * Output	- returns 1 if clear IP can be showed, otherwise 0
- * Side Effects	- none
- *
- *
- * Truth tables, one if source_p is local to target_p and one if not. 
- * Key:
- *  x  Show IP
- *  -  Don't show IP
- *  ?  Ask IsIPSpoof()
- */
-
-static char show_ip_local[7][7] =
-{
-  /*Target:        A   O   L   H   S   C   E */
-  /*Source:*/    
-  /*Admin*/      {'x','x','x','x','x','x','-'},
-  /*Oper*/       {'-','?','x','?','?','?','-'},
-  /*Luser*/      {'-','-','?','-','-','-','-'},
-  /*Handshaker*/ {'-','-','-','-','-','-','-'},
-  /*Server*/     {'-','-','-','-','-','-','-'},
-  /*Connecting*/ {'-','-','-','-','-','-','-'},
-  /*Else*/       {'-','-','-','-','-','-','-'}
-};
-
-static char show_ip_remote[7][7] =
-{
-  /*Target:        A   O   L   H   S   C   E */
-  /*Source:*/    
-  /*Admin*/      {'?','?','?','?','?','-','-'},
-  /*Oper*/       {'-','?','?','?','?','-','-'},
-  /*Luser*/      {'-','-','?','-','-','-','-'},
-  /*Handshake*/  {'-','-','-','-','-','-','-'},
-  /*Server*/     {'-','-','-','-','-','-','-'},
-  /*Connecting*/ {'-','-','-','-','-','-','-'},
-  /*Else*/       {'-','-','-','-','-','-','-'}
-};
-
-int
-show_ip(struct Client* source_p, struct Client* target_p)
-{
-  int s, t, res;
-
-  if ( IsAdmin(source_p) )
-    s = 0;
-  else if ( IsOper(source_p) )
-    s = 1;
-  else if ( IsClient(source_p) )
-    s = 2;
-  else if ( IsHandshake(source_p) )
-    s= 3;
-  else if ( IsServer(source_p) )
-    s = 4;
-  else if ( IsConnecting(source_p) )
-    s = 5;
-  else
-    s = 6;
-
-  if ( IsAdmin(target_p) )
-    t = 0;
-  else if ( IsOper(target_p) )
-    t = 1;
-  else if ( IsClient(target_p) )
-    t = 2;
-  else if ( IsHandshake(target_p) )
-    t= 3;
-  else if ( IsServer(target_p) )
-    t = 4;
-  else if ( IsConnecting(target_p) )
-    t = 5;
-  else
-    t = 6;
-
-  if ( MyClient(source_p) && MyClient(target_p) )
-    res = show_ip_local[s][t];
-  else
-    res = show_ip_remote[s][t];
-
-  if ( res == '-' )
-    return 0;
-
-#ifdef HIDE_SPOOF_IPS
-  if ( IsIPSpoof(target_p) )
-    return 0;
-#endif
-
-#ifdef HIDE_SERVERS_IPS
-  if ( IsServer(target_p) || IsConnecting(target_p) || IsHandshake(target_p) )
-    return 0;
-#endif
-
-  if ( res == '?')
-    return !IsIPSpoof(target_p);
-
-  if ( res == 'x')
-    return 1;
-
-  /* This should never happen */
-  return 0;
-}
-
-
-
-struct Message whois_msgtab = {
-  "WHOIS", 0, 0, 0, 0, MFLG_SLOW, 0L,
-  {m_unregistered, m_whois, ms_whois, mo_whois}
-};
-
-#ifndef STATIC_MODULES
-void
-_modinit(void)
-{
-  hook_add_event("doing_whois");
-  mod_add_cmd(&whois_msgtab);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_event("doing_whois");
-  mod_del_cmd(&whois_msgtab);
-}
-
-const char *_version = "$Revision: 1.2 $";
-#endif
-/*
-** m_whois
-**      parv[0] = sender prefix
-**      parv[1] = nickname masklist
-*/
-static void m_whois(struct Client *client_p,
-                   struct Client *source_p,
-                   int parc,
-                   char *parv[])
-{
-  static time_t last_used = 0;
-  
-  if (parc < 2)
-    {
-      sendto_one(source_p, form_str(ERR_NONICKNAMEGIVEN),
-                 me.name, parv[0]);
-      return;
-    }
-
-  if(parc > 2)
-    {
-      /* seeing as this is going across servers, we should limit it */
-      if((last_used + ConfigFileEntry.pace_wait_simple) > CurrentTime)
-        {             
-          if(MyClient(source_p))
-            sendto_one(source_p,form_str(RPL_LOAD2HI),me.name,source_p->name);
-          return;
-        }
-      else
-        last_used = CurrentTime;
-
-      /* if we have serverhide enabled, they can either ask the clients
-       * server, or our server.. I dont see why they would need to ask
-       * anything else for info about the client.. --fl_
-       */
-      if(ConfigServerHide.disable_remote)
-        parv[1] = parv[2];
-	
-      if (hunt_server(client_p,source_p,":%s WHOIS %s :%s", 1, parc, parv) !=
-          HUNTED_ISME)
-        {
-          return;
-        }
-      parv[1] = parv[2];
-
-    }
-  do_whois(client_p,source_p,parc,parv);
-}
-
-/*
-** mo_whois
-**      parv[0] = sender prefix
-**      parv[1] = nickname masklist
-*/
-static void mo_whois(struct Client *client_p,
-                    struct Client *source_p,
-                    int parc,
-                    char *parv[])
-{
-  if(parc < 2)
-    {
-      sendto_one(source_p, form_str(ERR_NONICKNAMEGIVEN),
-                 me.name, parv[0]);
-      return;
-    }
-
-  if(parc > 2)
-    {
-      if (hunt_server(client_p,source_p,":%s WHOIS %s :%s", 1, parc, parv) !=
-          HUNTED_ISME)
-        {
-          return;
-        }
-      parv[1] = parv[2];
-    }
-
-  do_whois(client_p,source_p,parc,parv);
-}
-
-
-/* do_whois
- *
- * inputs	- pointer to 
- * output	- 
- * side effects -
- */
-static int do_whois(struct Client *client_p, struct Client *source_p,
-                    int parc, char *parv[])
-{
-  struct Client *target_p;
-  char  *nick;
-  char  *p = NULL;
-  int   found=NO;
-  int   wilds;
-  int   glob=0;
-  
-  /* This lets us make all "whois nick" queries look the same, and all
-   * "whois nick nick" queries look the same.  We have to pass it all
-   * the way down to whois_person() though -- fl */
-
-  if(parc > 2)
-    glob = 1;
-
-  nick = parv[1];
-  if ( (p = strchr(parv[1],',')) )
-    *p = '\0';
-
-  (void)collapse(nick);
-  wilds = (strchr(nick, '?') || strchr(nick, '*'));
-
-  if(!wilds)
-    {
-      if((target_p = find_client(nick)) != NULL)
-	{
-	  /* im being asked to reply to a client that isnt mine..
-	   * I cant answer authoritively, so better make it non-detailed
-	   */
-	  if(!MyClient(target_p))
-	    glob=0;
-	    
-	  if (IsServer(client_p))
-	    client_burst_if_needed(client_p,target_p);
-
-	  if(IsPerson(target_p))
-	    {
-	      (void)single_whois(source_p,target_p,wilds,glob);
-	      found = YES;
-            }
-        }
-      else
-	{
-	  if (!ServerInfo.hub && uplink && IsCapable(uplink,CAP_LL))
-	    {
-	      if(glob == 1)
-   	        sendto_one(uplink,":%s WHOIS %s :%s",
-		  	   source_p->name, nick, nick);
-	      else
-		sendto_one(uplink,":%s WHOIS %s",
-			   source_p->name, nick);
-	      return 0;
-	    }
-	}
-    }
-  else
-    {
-      /* disallow wild card whois on lazylink leafs for now */
-
-      if (!ServerInfo.hub && uplink && IsCapable(uplink,CAP_LL))
-	{
-	  return 0;
-	}
-      /* Oh-oh wilds is true so have to do it the hard expensive way */
-      found = global_whois(source_p,nick,wilds,glob);
-    }
-
-  if(found)
-    sendto_one(source_p, form_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]);
-  else
-    sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name, parv[0], nick);
-
-  return 0;
-}
-
-/*
- * global_whois()
- *
- * Inputs	- source_p client to report to
- *		- target_p client to report on
- *		- wilds whether wildchar char or not
- * Output	- if found return 1
- * Side Effects	- do a single whois on given client
- * 		  writing results to source_p
- */
-static int global_whois(struct Client *source_p, char *nick,
-                        int wilds, int glob)
-{
-  struct Client *target_p;
-  int found = NO;
-
-  for (target_p = GlobalClientList; (target_p = next_client(target_p, nick));
-       target_p = target_p->next)
-    {
-      if (IsServer(target_p))
-	continue;
-      /*
-       * I'm always last :-) and target_p->next == NULL!!
-       */
-      if (IsMe(target_p))
-	break;
-      /*
-       * 'Rules' established for sending a WHOIS reply:
-       *
-       *
-       * - if wildcards are being used dont send a reply if
-       *   the querier isnt any common channels and the
-       *   client in question is invisible and wildcards are
-       *   in use (allow exact matches only);
-       *
-       * - only send replies about common or public channels
-       *   the target user(s) are on;
-       */
-
-      if(!IsRegistered(target_p))
-	continue;
-
-      if(single_whois(source_p, target_p, wilds, glob))
-	found = 1;
-    }
-
-  return (found);
-}
-
-/*
- * single_whois()
- *
- * Inputs	- source_p client to report to
- *		- target_p client to report on
- *		- wilds whether wildchar char or not
- * Output	- if found return 1
- * Side Effects	- do a single whois on given client
- * 		  writing results to source_p
- */
-static int single_whois(struct Client *source_p,struct Client *target_p,
-                        int wilds, int glob)
-{
-  dlink_node *ptr;
-  struct Channel *chptr;
-  char *name;
-  int invis;
-  int member;
-  int showperson;
-  
-  if (target_p->name[0] == '\0')
-    name = "?";
-  else
-    name = target_p->name;
-
-  if( target_p->user == NULL )
-    {
-      sendto_one(source_p, form_str(RPL_WHOISUSER), me.name,
-		 source_p->name, name,
-		 target_p->username, target_p->host, target_p->info);
-	  sendto_one(source_p, form_str(RPL_WHOISSERVER),
-		 me.name, source_p->name, name, "<Unknown>",
-		 "*Not On This Net*");
-      return 0;
-    }
-
-  invis = IsInvisible(target_p);
-  member = (target_p->user->channel.head) ? 1 : 0;
-  showperson = (wilds && !invis && !member) || !wilds;
-
-  for (ptr = target_p->user->channel.head; ptr; ptr = ptr->next)
-    {
-      chptr = ptr->data;
-      member = IsMember(source_p, chptr);
-      if (invis && !member)
-	continue;
-      if (member || (!invis && PubChannel(chptr)))
-	{
-	  showperson = 1;
-	  break;
-	}
-      if (!invis && HiddenChannel(chptr) && !SecretChannel(chptr))
-	{
-	  showperson = 1;
-	  break;
-	}
-    }
-
-  if(showperson)
-    whois_person(source_p,target_p,glob);
-  return 0;
-}
-
-/*
- * whois_person()
- *
- * Inputs	- source_p client to report to
- *		- target_p client to report on
- * Output	- NONE
- * Side Effects	- 
- */
-static void whois_person(struct Client *source_p,struct Client *target_p, int glob)
-{
-  char buf[BUFSIZE];
-  char *chname;
-  char *server_name;
-  dlink_node  *lp;
-  struct Client *a2client_p;
-  struct Channel *chptr;
-  int cur_len = 0;
-  int mlen;
-  char *t;
-  int tlen;
-  int reply_to_send = NO;
-  struct hook_mfunc_data hd;
-#ifdef VCHANS
-  struct Channel *bchan;
-#endif
-  
-  a2client_p = find_server(target_p->user->server);
-          
-  sendto_one(source_p, form_str(RPL_WHOISUSER), me.name,
-	 source_p->name, target_p->name,
-	 target_p->username, target_p->host, target_p->info);
-  server_name = (char *)target_p->user->server;
-
-  ircsprintf(buf, form_str(RPL_WHOISCHANNELS),
-	       me.name, source_p->name, target_p->name, "");
-
-  mlen = strlen(buf);
-  cur_len = mlen;
-  t = buf + mlen;
-
-  for (lp = target_p->user->channel.head; lp; lp = lp->next)
-    {
-      chptr = lp->data;
-      chname = chptr->chname;
-
-#ifdef VCHANS
-      if (IsVchan(chptr))
-	{
-	  bchan = find_bchan (chptr);
-	  if (bchan != NULL)
-	    chname = bchan->chname;
-	}
-#endif
-
-      if (ShowChannel(source_p, chptr))
-	{
-
-          if ((cur_len + strlen(chname) + 2) > (BUFSIZE - 4))
-            {
-              sendto_one(source_p, "%s", buf);
-              cur_len = mlen;
-              t = buf + mlen;
-            }
-
-	  if (chptr->mode.mode & MODE_HIDEOPS && !is_any_op(chptr,source_p))
-            {
-              ircsprintf(t,"%s ",chname);
-            }
-          else
-            {
-              ircsprintf(t,"%s%s ", channel_chanop_or_voice(chptr,target_p),
-                       chname);
-	    }
-
-	  tlen = strlen(t);
-	  t += tlen;
-	  cur_len += tlen;
-	  reply_to_send = YES;
-
-	}
-    }
-
-  if (reply_to_send)
-    sendto_one(source_p, "%s", buf);
-          
-  if ((IsOper(source_p) || !ConfigServerHide.hide_servers) || target_p == source_p)
-    sendto_one(source_p, form_str(RPL_WHOISSERVER),
-	       me.name, source_p->name, target_p->name, server_name,
-	       a2client_p?a2client_p->info:"*Not On This Net*");
-  else
-    sendto_one(source_p, form_str(RPL_WHOISSERVER),
-	       me.name, source_p->name, target_p->name,
-               ServerInfo.network_name,
-	       ServerInfo.network_desc);
-
-  if (target_p->user->away)
-    sendto_one(source_p, form_str(RPL_AWAY), me.name,
-	       source_p->name, target_p->name, target_p->user->away);
-
-  if (IsOper(target_p))
-    {
-      sendto_one(source_p, form_str(RPL_WHOISOPERATOR),
-		 me.name, source_p->name, target_p->name);
-
-      if (IsAdmin(target_p))
-	sendto_one(source_p, form_str(RPL_WHOISADMIN),
-		   me.name, source_p->name, target_p->name);
-    }
-
-  /* Don't show remote whois info if server is under
-     serverhide. Lusers can figure out if the client is local or not
-     by that */
-  if ( (glob == 1) || (MyConnect(target_p) && (IsOper(source_p) ||
-       !ConfigServerHide.hide_servers)) || (target_p == source_p) )
-    {
-      sendto_one(source_p, form_str(RPL_WHOISACTUALLY), 
-		 me.name, source_p->name, target_p->name,
-		 target_p->username, target_p->host, 
-		 show_ip(source_p, target_p) ? 
-		 target_p->localClient->sockhost : "255.255.255.255");
-
-      sendto_one(source_p, form_str(RPL_WHOISIDLE),
-                 me.name, source_p->name, target_p->name,
-                 CurrentTime - target_p->user->last,
-                 target_p->firsttime);
-
-    }
-
-  hd.client_p = target_p;
-  hd.source_p = source_p;
-
-/* although we should fill in parc and parv, we don't ..
-	 be careful of this when writing whois hooks */
-  if(MyClient(source_p)) 
-    hook_call_event("doing_whois", &hd);
-  
-  return;
-}
-
-/*
-** ms_whois
-**      parv[0] = sender prefix
-**      parv[1] = nickname masklist
-*/
-/* Be warned, this is heavily commented, as theres loads of possibilities
- * that can happen, and as people might not understand the code, I
- * stuck heavy comments in it.. it looks ugly.. but at least you
- * know what it does.. --fl_ */
-static void ms_whois(struct Client *client_p,
-                    struct Client *source_p,
-                    int parc,
-                    char *parv[])
-{
-  /* its a misconfigured server */
-  if (parc < 2)
-    {
-      sendto_one(source_p, form_str(ERR_NONICKNAMEGIVEN),
-                 me.name, parv[0]);
-      return;
-    }
-
-  /* its a client doing a remote whois:
-   * :parv[0] WHOIS parv[1] :parv[2]
-   *
-   * parv[0] == sender
-   * parv[1] == server to reply to the request
-   * parv[2] == the client we are whois'ing
-   */
-  if(parc > 2)
-  {
-    struct Client *target_p;
-    
-    /* check if parv[1] is a client.. (most common) */
-    if((target_p = find_client(parv[1])) == NULL)
-    {
-      /* ok, parv[1] isnt a client, is it a server? */
-      if((target_p = find_server(parv[1])) == NULL)
-      {
-        /* its not a server either.. theyve sent a bad whois */
-        sendto_one(source_p, form_str(ERR_NOSUCHSERVER), me.name,
-	           parv[0], parv[1]);
-        return;
-      }
-    }
-
-    /* its been found as a client.. to save extra work later, change
-     * target_p to be the clients uplink.. you cant check if a client
-     * supports being a LL :P
-     */
-    else
-      target_p = target_p->servptr;
-
-    /* if parv[1] isnt my client, or me, someone else is supposed
-     * to be handling the request.. so send it to them 
-     */
-    if(!MyClient(target_p) && !IsMe(target_p))
-    {
-
-      /* we're being asked to forward a whois request to a LL to answer,
-       * if the target isnt on that server.. answer it for them, as the
-       * LL might not know that the target exists..
-       */
-      if(MyConnect(target_p) && ServerInfo.hub && 
-         IsCapable(target_p, CAP_LL))
-      {
-        struct Client *whois_p;
-
-        /* try to find the client */
-	whois_p = find_client(parv[2]);
-	if (whois_p)
-	{
-	  /* check the server being asked to perform the whois, is that
-	   * clients uplink */
-	  if(whois_p->servptr != target_p)
-	  {
-	    /* they asked the LL for info on a client it didnt know about..
-	     * as we're answering for them, make sure its non-detailed
-	     */
-	    parv[1] = parv[2];
-	    parc = 2;
-	    
-            do_whois(client_p, source_p, parc, parv);
-	    return;
-	  }
-	  
-	  /* the server is that clients uplink, get them to do it */
-	  else
-	  {
-	    client_burst_if_needed(target_p->from, source_p);
-	    sendto_one(target_p->from, ":%s WHOIS %s :%s", parv[0], parv[1],
-	               parv[2]);
-            return;
-          }
-	}
-
-	/* the client doesnt exist.. erk! */
-	else
-	{
-	  /* set parv[1] = parv[2], then let do_whois handle the error */
-	  parv[1] = parv[2];
-	  do_whois(client_p, source_p, parc, parv);
-	  return;
-	}
-      }
-
-      /* its not a lazylink.. forward it as it is */
-      else
-      {
-        /* client_burst_if_needed(target_p->from, source_p); 
-	 * the target isnt a LL.. why would I need to burst? */
-        sendto_one(target_p->from, ":%s WHOIS %s :%s", parv[0], parv[1],
-                   parv[2]);
-        return;	       
-      }
-    }
-
-  /* ok, the target is either us, or a client on our server, so perform the whois
-   * but first, parv[1] == server to perform the whois on, parv[2] == person
-   * to whois, so make parv[1] = parv[2] so do_whois is ok -- fl_
-   */
-    parv[1] = parv[2];
-    do_whois(client_p,source_p,parc,parv);
-    return;
-  }
-
-  /* parc == 2, so its a lazylink client asking us about a nick, so do it */
-  do_whois(client_p, source_p, parc, parv);
-  return;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_admin_notice.c ircd-hoho-2r15/contrib/spy_admin_notice.c
--- ircd-hybrid-7rc3/contrib/spy_admin_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_admin_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,55 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_admin_notice.c: Sends a notice when someone uses ADMIN.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_admin_notice.c,v 1.6 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int show_admin(struct hook_spy_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_admin", (hookfn *)show_admin);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_admin", (hookfn *)show_admin);
-}
-
-const char *_version = "$Revision: 1.6 $";
-
-int show_admin(struct hook_spy_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                         "admin requested by %s (%s@%s) [%s]",
-                         data->source_p->name, data->source_p->username,
-                         data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_info_notice.c ircd-hoho-2r15/contrib/spy_info_notice.c
--- ircd-hybrid-7rc3/contrib/spy_info_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_info_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,55 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_info_notice.c: Sends a notice when someone uses INFO.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_info_notice.c,v 1.6 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int show_info(struct hook_spy_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_info", (hookfn *)show_info);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_info", (hookfn *)show_info);
-}
-
-const char *_version = "$Revision: 1.6 $";
-
-int show_info(struct hook_spy_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                         "info requested by %s (%s@%s) [%s]",
-                         data->source_p->name, data->source_p->username,
-                         data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_links_notice.c ircd-hoho-2r15/contrib/spy_links_notice.c
--- ircd-hybrid-7rc3/contrib/spy_links_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_links_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,57 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_links_notice.c: Sends a notice when someone uses LINKS.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_links_notice.c,v 1.11 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int
-show_links(struct hook_links_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_links", (hookfn *)show_links);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_links", (hookfn *)show_links);
-}
-
-const char *_version = "$Revision: 1.11 $";
-
-int
-show_links(struct hook_links_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                         "LINKS '%s' requested by %s (%s@%s) [%s]",
-                         data->mask, data->source_p->name, data->source_p->username,
-                         data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_motd_notice.c ircd-hoho-2r15/contrib/spy_motd_notice.c
--- ircd-hybrid-7rc3/contrib/spy_motd_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_motd_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,55 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_motd_notice.c: Sends a notice when someone uses MOTD.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_motd_notice.c,v 1.6 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int show_motd(struct hook_spy_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_motd", (hookfn *)show_motd);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_motd", (hookfn *)show_motd);
-}
-
-const char *_version = "$Revision: 1.6 $";
-
-int show_motd(struct hook_spy_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                         "motd requested by %s (%s@%s) [%s]",
-                         data->source_p->name, data->source_p->username,
-                         data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_stats_notice.c ircd-hoho-2r15/contrib/spy_stats_notice.c
--- ircd-hybrid-7rc3/contrib/spy_stats_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_stats_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,81 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_stats_notice.c: Sends a notice when someone uses STATS.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_stats_notice.c,v 1.12 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int
-show_stats(struct hook_stats_data *);
-
-void
-_modinit(void)
-{
-	hook_add_hook("doing_stats", (hookfn *)show_stats);
-}
-
-void
-_moddeinit(void)
-{
-	hook_del_hook("doing_stats", (hookfn *)show_stats);
-}
-
-const char *_version = "$Revision: 1.12 $";
-
-/* show a stats request */
-int
-show_stats(struct hook_stats_data *data)
-{
-  if((data->statchar == 'L') || (data->statchar == 'l'))
-    {
-      if(data->name != NULL)
-	sendto_realops_flags(FLAGS_SPY, L_ALL,
-			     "STATS %c requested by %s (%s@%s) [%s] on %s",
-			     data->statchar,
-			     data->source_p->name,
-			     data->source_p->username,
-			     data->source_p->host,
-			     data->source_p->user->server,
-			     data->name);
-      else
-	sendto_realops_flags(FLAGS_SPY, L_ALL,
-			     "STATS %c requested by %s (%s@%s) [%s]",
-			     data->statchar,
-			     data->source_p->name,
-			     data->source_p->username,
-			     data->source_p->host,
-			     data->source_p->user->server);
-    }
-  else
-    {
-      sendto_realops_flags(FLAGS_SPY, L_ALL,
-                           "STATS %c requested by %s (%s@%s) [%s]",
-			   data->statchar, data->source_p->name, data->source_p->username,
-			   data->source_p->host, data->source_p->user->server);
-    }
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_stats_p_notice.c ircd-hoho-2r15/contrib/spy_stats_p_notice.c
--- ircd-hybrid-7rc3/contrib/spy_stats_p_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_stats_p_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,56 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_stats_p_notice.c: Sends a notice when someone uses STATS p.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_stats_p_notice.c,v 1.4 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int
-show_stats_p(struct hook_stats_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_stats_p", (hookfn *)show_stats_p);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_stats_p", (hookfn *)show_stats_p);
-}
-
-const char *_version = "$Revision: 1.4 $";
-
-int show_stats_p(struct hook_stats_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                       "STATS p requested by %s (%s@%s) [%s]",
-  	               data->source_p->name, data->source_p->username,
-		       data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_trace_notice.c ircd-hoho-2r15/contrib/spy_trace_notice.c
--- ircd-hybrid-7rc3/contrib/spy_trace_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_trace_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,67 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_trace_notice.c: Sends a notice when someone uses TRACE or LTRACE
- *
- *  Copyright (C) 2002 Hybrid Development Team
- *
- *  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
- *
- *  $Id: spy_trace_notice.c,v 1.6 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int show_trace(struct hook_spy_data *);
-int show_ltrace(struct hook_spy_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_trace", (hookfn *)show_trace);
-  hook_add_hook("doing_ltrace", (hookfn *)show_ltrace);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_trace", (hookfn *)show_trace);
-  hook_del_hook("doing_ltrace", (hookfn *)show_ltrace);
-}
-
-const char *_version = "$Revision: 1.6 $";
-
-int show_trace(struct hook_spy_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-                         "trace requested by %s (%s@%s) [%s]",
-                         data->source_p->name, data->source_p->username,
-                         data->source_p->host, data->source_p->user->server);
-
-  return 0;
-}
-
-int show_ltrace(struct hook_spy_data *data)
-{
-  sendto_realops_flags(FLAGS_SPY, L_ALL,
-		       "ltrace requested by %s (%s@%s) [%s]",
-		       data->source_p->name, data->source_p->username,
-		       data->source_p->host, data->source_p->user->server);
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/contrib/spy_whois_notice.c ircd-hoho-2r15/contrib/spy_whois_notice.c
--- ircd-hybrid-7rc3/contrib/spy_whois_notice.c	Fri May 24 19:48:34 2002
+++ ircd-hoho-2r15/contrib/spy_whois_notice.c	Wed Dec 31 19:00:00 1969
@@ -1,63 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  spy_whois_notice.c: Sends a notice when someone uses WHOIS.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  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
- *
- *  $Id: spy_whois_notice.c,v 1.10 2002/05/24 23:48:34 androsyn Exp $
- */
-#include "stdinc.h"
-#include "modules.h"
-#include "hook.h"
-#include "client.h"
-#include "ircd.h"
-#include "send.h"
-
-int
-show_notice(struct hook_mfunc_data *);
-
-void
-_modinit(void)
-{
-  hook_add_hook("doing_whois", (hookfn *)show_notice);
-}
-
-void
-_moddeinit(void)
-{
-  hook_del_hook("doing_whois", (hookfn *)show_notice);
-}
-
-const char *_version = "$Revision: 1.10 $";
-
-/* show a whois notice
-   source_p does a /whois on client_p */
-int
-show_notice(struct hook_mfunc_data *data)
-{
-  if (MyConnect(data->source_p) && MyConnect(data->client_p) &&
-      IsOper(data->client_p) && (data->client_p != data->source_p) 
-      && data->client_p->umodes & FLAGS_SPY) 
-    {
-      sendto_one(data->client_p, ":%s NOTICE %s :*** Notice -- %s (%s@%s) is doing a whois on you",
-                 me.name, data->client_p->name, data->source_p->name, data->source_p->username,
-                 data->source_p->host);
-    }
-
-  return 0;
-}
diff -uNrd ircd-hybrid-7rc3/doc/challenge.txt ircd-hoho-2r15/doc/challenge.txt
--- ircd-hybrid-7rc3/doc/challenge.txt	Wed Jul 17 19:31:11 2002
+++ ircd-hoho-2r15/doc/challenge.txt	Fri Dec 20 15:37:23 2002
@@ -1,333 +1,333 @@
-                       Oper Challenge and Response System
-
-   $Id: challenge.txt,v 1.9 2002/07/17 23:31:11 leeh Exp $
-
-   Copyright (c) 2001 by ircd-hybrid team
-
-     ----------------------------------------------------------------------
-
-   ircd-hybrid
-
-   In an effort to reduce the damage caused to a network by a hacked O-line,
-   Hybrid supports an OpenSSL based challenge-response system. This new
-   system allows the admin to remove all oper block passwords from the conf
-   file. Authentication is done through a public/private key.
-
-     ----------------------------------------------------------------------
-
-                                  Requirements
-
-   The ircd must be compiled with the --enable-openssl option to configure .
-   If configure detects a working openssl library, --enable-openssl is
-   implicitly enabled.
-
-   oper {} blocks should not have normal passwords, but should contain the
-   the name of the private key file. However it is possible for the user to
-   use both challenge and normal passwords, but this would defeat the purpose
-   of the challenge system.
-
-   m_challenge.so must be loaded.
-
-   The oper has their private key file and an implementation of the RSA
-   Respond tool available to be run.
-
-     ----------------------------------------------------------------------
-
-                                    Process
-
-   Each oper should have a private key file and a public key file. The keys
-   can be generated with the mkkeypair utility provided in tools/. The keys
-   are compatible with cryptlink keys.
-
-   The oper keeps their private key file in a safe place, and gives their
-   public key file to their admin(s).
-
-   The admin will place an entry for the public key file into a field called
-   rsa_public_key_file of each oper's oper {} block in the conf file.
-
-   The oper wishes to obtain their operator status, and issues the CHALLENGE
-   command.
-
-   The server will print out a long hexadecimal string, that needs to be fed
-   to the respond utility provided in tools/rsa_respond.
-
-   The respond program will generate an answer that is fed back to the
-   CHALLENGE command.
-
-     ----------------------------------------------------------------------
-
-                            Generating the Key Files
-
-   The keys can be generated with the openssl command as follows:
-
-       openssl genrsa -des3(1) -out rsa.key 1024(2)
-       openssl rsa -in rsa.key -pubout -out rsa.pub
-   
-
-   (1)
-           The -des3 must be included in order to create a key with a
-           passphrase. Omitting this option will create a non protected key.
-   (2)
-           The key size must be 1024 or below. The challenge sent for a
-           longer keysize will be too long to fit into the ircd's 512 byte
-           line constraint.
-
-   It is highly recommended that you set a password on your private key.
-
-   The tools/mkkeypair utility cannot be used to create a key suitable for
-   use in CHALLENGE.
-
-     ----------------------------------------------------------------------
-
-                          Using CHALLENGE and respond
-
-     Note: All examples assume the use of the stock respond client included
-     with the Hybrid 7 source, run on a UNIX(c) platform.
-
-   The administrator of the server you oper on should remove the password in
-   your oper {} block and replace it with an entry for your public key, so
-   that /oper will be disabled.
-
-     Note: The public key is a VERY long string.
-
-   The oper will issue /challenge oper_nick, and see something like below:
-
- *** 56F1FDAE4C590C524CF758917E62C2A2A1376CB9C4C2E7D411BB0AD9C4A
- 605A2D05A94E7254197E9D71438B5FB565B6FD35465E462305F35F4A2D45311
- F983B3E062F635912FA155B4B1E18EAA782CC107F4C9DA83092658D16A2E88A
- 6BCF9820F5A044A29CDD4C062F05BF509CA3B561375CBC4179BD1CF6026BDE9
- 60E52C6B
-
-     Note: The challenge is all on one line.
-
-     Note: With some clients, the oper will have to issue /quote CHALLENGE
-     instead of /challenge.
-
-   The oper will then have to feed that challenge to the respond program.
-
-   +------------------------------------------------------------------+
-   | The respond utility's syntax is:                                 |
-   |                                                                  |
-   |$ ./respond private_key_file challenge_from_server                |
-   |                                                                  |
-   |                                                                  |
-   | Example:                                                         |
-   |                                                                  |
-   |wcampbel@botbay (rsa_respond): ./respond hwy.key \                |
-   |56F1FDAE4C590C524CF758917E62C2A2A1376CB9C4C2E7D411BB0AD9C4A605A2D0|
-   |5A94E7254197E9D71438B5FB565B6FD35465E462305F35F4A2D45311F983B3E062|
-   |F635912FA155B4B1E18EAA782CC107F4C9DA83092658D16A2E88A6BCF9820F5A04|
-   |4A29CDD4C062F05BF509CA3B561375CBC4179BD1CF6026BDE960E52C6B        |
-   |Keyphrase:                                                        |
-   |6B882932DD00F86123869E401F7334B9B0D0018A60F1DE244E90E47246AA87C7  |
-   |                                                                  |
-   |   Note: The challenge parameter must be on one line.             |
-   +------------------------------------------------------------------+
-
-   The keyphrase must be entered properly to get the response. The bottom
-   line is the response that must be sent back to the server.
-
-   The oper will issue the following command in order to obtain operator
-   status:
-
-   /challenge
-   +6B882932DD00F86123869E401F7334B9B0D0018A60F1DE244E90E47246AA87C7
-
-     Note: The '+' is needed
-
-   If successful, the oper will obtain operator status on the server.
-
-   +------------------------------------------------------------------------+
-   |                                Warning                                 |
-   |------------------------------------------------------------------------|
-   | If the CHALLENGE fails, and you use ircII, EPIC, or BX, you may get    |
-   | disconnected with the client asking for the server password. This is a |
-   | client bug, not an ircd bug.                                           |
-   +------------------------------------------------------------------------+
-
-     ----------------------------------------------------------------------
-
-                                RSA Respond Tool
-
-   The RSA Respond tool is a vital part of challenge/response system. In
-   order to function, the operator must have must have a way to quickly issue
-   the respond command, and to copy and paste data to and from the IRC
-   client.
-
-   The respond source code is included with the Hybrid 7 source, in the
-   tools/rsa_respond directory. A distributable tar file can easily be
-   created by issuing make rsa_respond in the root of the source tree. The
-   file rsa_respond.tar.gz will be created in the root of the source tree.
-
-   rsa_respond.tar.gz should compile with little or no modifications[1] on
-   most UNIX(c) and UNIX-like platforms[2]. The README in the tar archive
-   gives more information.
-
-   A copy of the source tar file is available on
-   http://ircd.botbay.net/pub/hybrid/rsa/rsa_respond.tar.gz.
-
-   For Windows platforms, there are two available RSA Respond tools. One is a
-   text only port of the stock tool. The binary is available from
-   http://ircd.botbay.net/pub/hybrid/rsa/rsa_respond-bin.tar.gz. The other
-   tool is a GUI enabled version[3]. The source tree[4] is available from
-   http://ircd.botbay.net/pub/hybrid/rsa/winrespond-src.tar.gz. A binary
-   distribution is available from
-   http://ircd.botbay.net/pub/hybrid/rsa/winrespond-bin.tar.gz.
-
-   With the appropriate version of the RSA Respond tool, any operator can
-   protect their privileged access to the server, with little additional
-   effort over using standard operator passwords.
-
-     ----------------------------------------------------------------------
-
-                                    Benefits
-
-   The greatest benefit of using the challenge/response system is that there
-   are no passwords sent over the network in plaintext. There are also no
-   credentials left on the server side, as only public keys are kept in the
-   conf. The use of public/private key encryption provides far greater
-   security over having a single password, and may (if the key is kept
-   secure, and has a good passphrase) virtually eliminate hacked O-lines.
-
-     ----------------------------------------------------------------------
-
-                                  A. Numerics
-
- :server 381 user :You have entered... the Twilight Zone!.
- :server 386 user :challenge-text
- :server 464 user :Password Incorrect
- :server 491 user :Only few of mere mortals may try to enter the twilight zone
-   
-
-     Note: The text used can be changed by the server administrator.
-
-     ----------------------------------------------------------------------
-
-                                  B. Scripting
-
-   The following script is for EPIC 4 only. It was written by Greg Prosser,
-   xyst <gregp@blackened.net>.
-
-   Please note that passphrase protected keys cannot be used in conjunction
-   with this script.
-
-   BEGIN challenge.irc
-
-      
-
-      
- # challenge.irc -- authenticate to a hybrid-7 server with challenge response
- #                  oper authentication.  --gnp (xyst)
- # note: this is almost gauranteed to not work if your key needs a passphrase
- #
- # credit goes to hop for pipe from the default script archive, which doesn't
- # work, but gave me a framework for execing stuff and getting the response.
-
- # For Hybrid's cvs...
- # $Id: challenge.txt,v 1.9 2002/07/17 23:31:11 leeh Exp $
-
- xecho ... Loading challenge.irc by xyst, feer.
-
- # you might want to change these..
-
- @challenge.path=[~/.irc/respond]
- @challenge.key=[~/.irc/challenge.identity]
- @challenge.num=0
- @challenge.response=[]
- @challenge.savepath=[~/.irc/challenge.config]
-
- alias rsaconfig {
-     if ([$0])
-     {
-         switch ($tolower($0))
-         {
-             (resppath)
-             {
-                 if ([$1])
-                 {
-                     @challenge.resp=[$1]
-                     xecho $G Challenge -- resppath is now: $1
-                 } {
-                     xecho $G Challenge -- resppath: $challenge.path
-                 }
-             }
-             (keypath)
-             {
-                 if ([$1])
-                 {
-                     @challenge.key=[$1]
-                     xecho $G Challenge -- keypath is now: $1
-                 } {
-                     xecho $G Challenge -- keypath: $challenge.key
-                 }
-             }
-             (save)
-             {
-                 @unlink($challenge.savepath)
-                 @fd=open($challenge.savepath W)
-                 @write($fd @challenge.path=[$challenge.path])
-                 @write($fd @challenge.key=[$challenge.key])
-                 @close($fd)
-                 xecho $G Challenge -- saved settings.
-             }
-             (*)
-             {
-                 xecho $G Usage: /rsaconfig <resppath|keypath> [value]
-             }
-         }
-     } {
-         xecho $G Current settings for challenge.irc:
-         rsaconfig resppath
-         rsaconfig keypath
-         xecho $G Type /rsaconfig <resppath|keypath> <value> to change these, /rsaconfig save saves them.
-     }
- }
-
- alias challenge {
-     if ([$0])
-     {
-         ^quote challenge $0
-     } {
-         xecho $G Usage: /challenge <username>
-     }
- }
-
- on ^386 * {
-     xecho $G Got oper-challenge from server, sending response..
-     @challenge.num++
-     ^on ^exec "chall$challenge.num *" {
-         @challenge.response=[$1]
-     }
-     ^exec -name chall$challenge.num $challenge.path $challenge.key $1
-     ^wait %chall$challenge.num
-     ^on exec -"chall$challenge.num *"
-     ^stack push on raw_irc
-     ^stack push on 381
-     ^on ^raw_irc "$S 464 *" { xecho $G Challenge incorrect.  Check your key.;^stack pop on raw_irc;^stack pop on 381 }
-     ^on -381 * { ^stack pop on 381;^stack pop on raw_irc }
-     ^quote challenge +$challenge.response
- }
-
- if ([$fexist($challenge.savepath)] > 0)
- {
-     xecho $G Loading settings from $challenge.savepath ..
-     ^load $challenge.savepath
- } {
-     xecho $G Config file not found, try /rsaconfig save\; using defaults.
- }
-
- rsaconfig
-
-      
-   
-
-  Notes
-
-   [1] Some platforms may require Makefile changes in order to link in the    
-       OpenSSL library. This may change in the future.                        
-   [2] Platforms known to function include: Linux, FreeBSD, Solaris, and      
-       Cygwin.                                                                
-   [3] A screenshot of the program is available on                            
-       http://kabel.pp.ru/sgml/winrespond.png .                               
-   [4] The winrespond source depends on a working, up to date, Cygwin         
-       installation.                                                          
+                       Oper Challenge and Response System
+
+   $Id: challenge.txt,v 1.9 2002/07/17 23:31:11 leeh Exp $
+
+   Copyright (c) 2001 by ircd-hybrid team
+
+     ----------------------------------------------------------------------
+
+   ircd-hybrid
+
+   In an effort to reduce the damage caused to a network by a hacked O-line,
+   Hybrid supports an OpenSSL based challenge-response system. This new
+   system allows the admin to remove all oper block passwords from the conf
+   file. Authentication is done through a public/private key.
+
+     ----------------------------------------------------------------------
+
+                                  Requirements
+
+   The ircd must be compiled with the --enable-openssl option to configure .
+   If configure detects a working openssl library, --enable-openssl is
+   implicitly enabled.
+
+   oper {} blocks should not have normal passwords, but should contain the
+   the name of the private key file. However it is possible for the user to
+   use both challenge and normal passwords, but this would defeat the purpose
+   of the challenge system.
+
+   m_challenge.so must be loaded.
+
+   The oper has their private key file and an implementation of the RSA
+   Respond tool available to be run.
+
+     ----------------------------------------------------------------------
+
+                                    Process
+
+   Each oper should have a private key file and a public key file. The keys
+   can be generated with the mkkeypair utility provided in tools/. The keys
+   are compatible with cryptlink keys.
+
+   The oper keeps their private key file in a safe place, and gives their
+   public key file to their admin(s).
+
+   The admin will place an entry for the public key file into a field called
+   rsa_public_key_file of each oper's oper {} block in the conf file.
+
+   The oper wishes to obtain their operator status, and issues the CHALLENGE
+   command.
+
+   The server will print out a long hexadecimal string, that needs to be fed
+   to the respond utility provided in tools/rsa_respond.
+
+   The respond program will generate an answer that is fed back to the
+   CHALLENGE command.
+
+     ----------------------------------------------------------------------
+
+                            Generating the Key Files
+
+   The keys can be generated with the openssl command as follows:
+
+       openssl genrsa -des3(1) -out rsa.key 1024(2)
+       openssl rsa -in rsa.key -pubout -out rsa.pub
+   
+
+   (1)
+           The -des3 must be included in order to create a key with a
+           passphrase. Omitting this option will create a non protected key.
+   (2)
+           The key size must be 1024 or below. The challenge sent for a
+           longer keysize will be too long to fit into the ircd's 512 byte
+           line constraint.
+
+   It is highly recommended that you set a password on your private key.
+
+   The tools/mkkeypair utility cannot be used to create a key suitable for
+   use in CHALLENGE.
+
+     ----------------------------------------------------------------------
+
+                          Using CHALLENGE and respond
+
+     Note: All examples assume the use of the stock respond client included
+     with the Hybrid 7 source, run on a UNIX(c) platform.
+
+   The administrator of the server you oper on should remove the password in
+   your oper {} block and replace it with an entry for your public key, so
+   that /oper will be disabled.
+
+     Note: The public key is a VERY long string.
+
+   The oper will issue /challenge oper_nick, and see something like below:
+
+ *** 56F1FDAE4C590C524CF758917E62C2A2A1376CB9C4C2E7D411BB0AD9C4A
+ 605A2D05A94E7254197E9D71438B5FB565B6FD35465E462305F35F4A2D45311
+ F983B3E062F635912FA155B4B1E18EAA782CC107F4C9DA83092658D16A2E88A
+ 6BCF9820F5A044A29CDD4C062F05BF509CA3B561375CBC4179BD1CF6026BDE9
+ 60E52C6B
+
+     Note: The challenge is all on one line.
+
+     Note: With some clients, the oper will have to issue /quote CHALLENGE
+     instead of /challenge.
+
+   The oper will then have to feed that challenge to the respond program.
+
+   +------------------------------------------------------------------+
+   | The respond utility's syntax is:                                 |
+   |                                                                  |
+   |$ ./respond private_key_file challenge_from_server                |
+   |                                                                  |
+   |                                                                  |
+   | Example:                                                         |
+   |                                                                  |
+   |wcampbel@botbay (rsa_respond): ./respond hwy.key \                |
+   |56F1FDAE4C590C524CF758917E62C2A2A1376CB9C4C2E7D411BB0AD9C4A605A2D0|
+   |5A94E7254197E9D71438B5FB565B6FD35465E462305F35F4A2D45311F983B3E062|
+   |F635912FA155B4B1E18EAA782CC107F4C9DA83092658D16A2E88A6BCF9820F5A04|
+   |4A29CDD4C062F05BF509CA3B561375CBC4179BD1CF6026BDE960E52C6B        |
+   |Keyphrase:                                                        |
+   |6B882932DD00F86123869E401F7334B9B0D0018A60F1DE244E90E47246AA87C7  |
+   |                                                                  |
+   |   Note: The challenge parameter must be on one line.             |
+   +------------------------------------------------------------------+
+
+   The keyphrase must be entered properly to get the response. The bottom
+   line is the response that must be sent back to the server.
+
+   The oper will issue the following command in order to obtain operator
+   status:
+
+   /challenge
+   +6B882932DD00F86123869E401F7334B9B0D0018A60F1DE244E90E47246AA87C7
+
+     Note: The '+' is needed
+
+   If successful, the oper will obtain operator status on the server.
+
+   +------------------------------------------------------------------------+
+   |                                Warning                                 |
+   |------------------------------------------------------------------------|
+   | If the CHALLENGE fails, and you use ircII, EPIC, or BX, you may get    |
+   | disconnected with the client asking for the server password. This is a |
+   | client bug, not an ircd bug.                                           |
+   +------------------------------------------------------------------------+
+
+     ----------------------------------------------------------------------
+
+                                RSA Respond Tool
+
+   The RSA Respond tool is a vital part of challenge/response system. In
+   order to function, the operator must have must have a way to quickly issue
+   the respond command, and to copy and paste data to and from the IRC
+   client.
+
+   The respond source code is included with the Hybrid 7 source, in the
+   tools/rsa_respond directory. A distributable tar file can easily be
+   created by issuing make rsa_respond in the root of the source tree. The
+   file rsa_respond.tar.gz will be created in the root of the source tree.
+
+   rsa_respond.tar.gz should compile with little or no modifications[1] on
+   most UNIX(c) and UNIX-like platforms[2]. The README in the tar archive
+   gives more information.
+
+   A copy of the source tar file is available on
+   http://ircd.botbay.net/pub/hybrid/rsa/rsa_respond.tar.gz.
+
+   For Windows platforms, there are two available RSA Respond tools. One is a
+   text only port of the stock tool. The binary is available from
+   http://ircd.botbay.net/pub/hybrid/rsa/rsa_respond-bin.tar.gz. The other
+   tool is a GUI enabled version[3]. The source tree[4] is available from
+   http://ircd.botbay.net/pub/hybrid/rsa/winrespond-src.tar.gz. A binary
+   distribution is available from
+   http://ircd.botbay.net/pub/hybrid/rsa/winrespond-bin.tar.gz.
+
+   With the appropriate version of the RSA Respond tool, any operator can
+   protect their privileged access to the server, with little additional
+   effort over using standard operator passwords.
+
+     ----------------------------------------------------------------------
+
+                                    Benefits
+
+   The greatest benefit of using the challenge/response system is that there
+   are no passwords sent over the network in plaintext. There are also no
+   credentials left on the server side, as only public keys are kept in the
+   conf. The use of public/private key encryption provides far greater
+   security over having a single password, and may (if the key is kept
+   secure, and has a good passphrase) virtually eliminate hacked O-lines.
+
+     ----------------------------------------------------------------------
+
+                                  A. Numerics
+
+ :server 381 user :You have entered... the Twilight Zone!.
+ :server 386 user :challenge-text
+ :server 464 user :Password Incorrect
+ :server 491 user :Only few of mere mortals may try to enter the twilight zone
+   
+
+     Note: The text used can be changed by the server administrator.
+
+     ----------------------------------------------------------------------
+
+                                  B. Scripting
+
+   The following script is for EPIC 4 only. It was written by Greg Prosser,
+   xyst <gregp@blackened.net>.
+
+   Please note that passphrase protected keys cannot be used in conjunction
+   with this script.
+
+   BEGIN challenge.irc
+
+      
+
+      
+ # challenge.irc -- authenticate to a hybrid-7 server with challenge response
+ #                  oper authentication.  --gnp (xyst)
+ # note: this is almost gauranteed to not work if your key needs a passphrase
+ #
+ # credit goes to hop for pipe from the default script archive, which doesn't
+ # work, but gave me a framework for execing stuff and getting the response.
+
+ # For Hybrid's cvs...
+ # $Id: challenge.txt,v 1.9 2002/07/17 23:31:11 leeh Exp $
+
+ xecho ... Loading challenge.irc by xyst, feer.
+
+ # you might want to change these..
+
+ @challenge.path=[~/.irc/respond]
+ @challenge.key=[~/.irc/challenge.identity]
+ @challenge.num=0
+ @challenge.response=[]
+ @challenge.savepath=[~/.irc/challenge.config]
+
+ alias rsaconfig {
+     if ([$0])
+     {
+         switch ($tolower($0))
+         {
+             (resppath)
+             {
+                 if ([$1])
+                 {
+                     @challenge.resp=[$1]
+                     xecho $G Challenge -- resppath is now: $1
+                 } {
+                     xecho $G Challenge -- resppath: $challenge.path
+                 }
+             }
+             (keypath)
+             {
+                 if ([$1])
+                 {
+                     @challenge.key=[$1]
+                     xecho $G Challenge -- keypath is now: $1
+                 } {
+                     xecho $G Challenge -- keypath: $challenge.key
+                 }
+             }
+             (save)
+             {
+                 @unlink($challenge.savepath)
+                 @fd=open($challenge.savepath W)
+                 @write($fd @challenge.path=[$challenge.path])
+                 @write($fd @challenge.key=[$challenge.key])
+                 @close($fd)
+                 xecho $G Challenge -- saved settings.
+             }
+             (*)
+             {
+                 xecho $G Usage: /rsaconfig <resppath|keypath> [value]
+             }
+         }
+     } {
+         xecho $G Current settings for challenge.irc:
+         rsaconfig resppath
+         rsaconfig keypath
+         xecho $G Type /rsaconfig <resppath|keypath> <value> to change these, /rsaconfig save saves them.
+     }
+ }
+
+ alias challenge {
+     if ([$0])
+     {
+         ^quote challenge $0
+     } {
+         xecho $G Usage: /challenge <username>
+     }
+ }
+
+ on ^386 * {
+     xecho $G Got oper-challenge from server, sending response..
+     @challenge.num++
+     ^on ^exec "chall$challenge.num *" {
+         @challenge.response=[$1]
+     }
+     ^exec -name chall$challenge.num $challenge.path $challenge.key $1
+     ^wait %chall$challenge.num
+     ^on exec -"chall$challenge.num *"
+     ^stack push on raw_irc
+     ^stack push on 381
+     ^on ^raw_irc "$S 464 *" { xecho $G Challenge incorrect.  Check your key.;^stack pop on raw_irc;^stack pop on 381 }
+     ^on -381 * { ^stack pop on 381;^stack pop on raw_irc }
+     ^quote challenge +$challenge.response
+ }
+
+ if ([$fexist($challenge.savepath)] > 0)
+ {
+     xecho $G Loading settings from $challenge.savepath ..
+     ^load $challenge.savepath
+ } {
+     xecho $G Config file not found, try /rsaconfig save\; using defaults.
+ }
+
+ rsaconfig
+
+      
+   
+
+  Notes
+
+   [1] Some platforms may require Makefile changes in order to link in the    
+       OpenSSL library. This may change in the future.                        
+   [2] Platforms known to function include: Linux, FreeBSD, Solaris, and      
+       Cygwin.                                                                
+   [3] A screenshot of the program is available on                            
+       http://kabel.pp.ru/sgml/winrespond.png .                               
+   [4] The winrespond source depends on a working, up to date, Cygwin         
+       installation.                                                          
diff -uNrd ircd-hybrid-7rc3/doc/example.conf ircd-hoho-2r15/doc/example.conf
--- ircd-hybrid-7rc3/doc/example.conf	Thu Jul 11 19:40:14 2002
+++ ircd-hoho-2r15/doc/example.conf	Fri Dec 20 15:37:23 2002
@@ -624,6 +624,10 @@
 	 */
         default_floodcount = 10;
 
+	/* disable_auth: Prevent checking for ident information on connect */
+
+	disable_auth = no;
+
 	/* failed oper notice: send a notice to all opers on the server when 
 	 * someone tries to OPER and uses the wrong password, host or ident.
 	 */
diff -uNrd ircd-hybrid-7rc3/help/.cvsignore ircd-hoho-2r15/help/.cvsignore
--- ircd-hybrid-7rc3/help/.cvsignore	Tue Nov 13 18:35:48 2001
+++ ircd-hoho-2r15/help/.cvsignore	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-Makefile
diff -uNrd ircd-hybrid-7rc3/include/channel.h ircd-hoho-2r15/include/channel.h
--- ircd-hybrid-7rc3/include/channel.h	Tue Aug 20 12:41:58 2002
+++ ircd-hoho-2r15/include/channel.h	Fri Dec 20 15:37:23 2002
@@ -92,6 +92,7 @@
   dlink_list      banlist;
   dlink_list      exceptlist;
   dlink_list      invexlist;
+  dlink_list      quietlist;
 
   time_t          first_received_message_time; /* channel flood control */
   int             received_number_of_privmsgs;
diff -uNrd ircd-hybrid-7rc3/include/channel_mode.h ircd-hoho-2r15/include/channel_mode.h
--- ircd-hybrid-7rc3/include/channel_mode.h	Sun Jul 28 15:19:01 2002
+++ ircd-hoho-2r15/include/channel_mode.h	Fri Dec 20 15:37:23 2002
@@ -80,6 +80,7 @@
 #define CHFL_BAN        0x0010 /* ban channel flag */
 #define CHFL_EXCEPTION  0x0020 /* exception to ban channel flag */
 #define CHFL_INVEX      0x0080
+#define CHFL_QUIET		0x0100
 
 /* Channel Visibility macros */
 
@@ -98,8 +99,9 @@
 #define MODE_NOPRIVMSGS 0x0100
 #define MODE_BAN        0x0400
 #define MODE_EXCEPTION  0x0800
-#define MODE_INVEX	0x2000
+#define MODE_INVEX      0x2000
 #define MODE_HIDEOPS    0x4000
+#define MODE_QUIET      0x8000
 
 /*
  * mode flags which take another parameter (With PARAmeterS)
diff -uNrd ircd-hybrid-7rc3/include/irc_string.h ircd-hoho-2r15/include/irc_string.h
--- ircd-hybrid-7rc3/include/irc_string.h	Fri May 24 19:34:07 2002
+++ ircd-hoho-2r15/include/irc_string.h	Fri Dec 20 15:37:23 2002
@@ -89,6 +89,8 @@
 int vsnprintf (char *str, size_t count, const char *fmt, va_list args);
 #endif
 
+extern char*       strip_colour(char*);
+
 /*
  * clean_string - cleanup control and high ascii characters
  * -Dianora
diff -uNrd ircd-hybrid-7rc3/include/numeric.h ircd-hoho-2r15/include/numeric.h
--- ircd-hybrid-7rc3/include/numeric.h	Mon Aug 19 21:32:19 2002
+++ ircd-hoho-2r15/include/numeric.h	Fri Dec 20 15:37:24 2002
@@ -484,6 +484,9 @@
 #define ERR_KNOCKONCHAN      714
 #define ERR_KNOCKDISABLED    714
 
+#define RPL_QUIETLIST        716
+#define RPL_ENDOFQUIETLIST   717
+
 #define ERR_LAST_ERR_MSG     999
 
 #endif /* INCLUDED_numeric_h */
diff -uNrd ircd-hybrid-7rc3/include/patchlevel.h ircd-hoho-2r15/include/patchlevel.h
--- ircd-hybrid-7rc3/include/patchlevel.h	Tue Aug 20 12:41:58 2002
+++ ircd-hoho-2r15/include/patchlevel.h	Fri Dec 20 15:37:24 2002
@@ -19,9 +19,9 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: patchlevel.h,v 7.37 2002/08/20 16:41:58 db Exp $
+ *  $Id: patchlevel.h,v 7.34 2002/07/16 15:36:10 lusky Exp $
  */
 
 #ifndef PATCHLEVEL
-#define PATCHLEVEL   "hybrid-7rc3"
+#define PATCHLEVEL   "hybrid-7rc3-hoho2r15"
 #endif
diff -uNrd ircd-hybrid-7rc3/include/s_conf.h ircd-hoho-2r15/include/s_conf.h
--- ircd-hybrid-7rc3/include/s_conf.h	Tue Aug 20 12:41:58 2002
+++ ircd-hoho-2r15/include/s_conf.h	Fri Dec 20 15:37:24 2002
@@ -229,7 +229,8 @@
   /* 0 == don't use throttle... */
   int           throttle_time;
   int           use_egd;
-  int		ping_cookie;
+  int	    	ping_cookie;
+  int     		disable_auth;
   int           use_help;
 #ifdef HAVE_LIBCRYPTO
   struct EncCapability *default_cipher_preference;
diff -uNrd ircd-hybrid-7rc3/include/s_serv.h ircd-hoho-2r15/include/s_serv.h
--- ircd-hybrid-7rc3/include/s_serv.h	Fri May 24 19:34:08 2002
+++ ircd-hoho-2r15/include/s_serv.h	Fri Dec 20 15:37:24 2002
@@ -74,12 +74,13 @@
 
 #define CAP_TBURST	0x00040000   /* supports TBURST */
 #define CAP_PARA	0x00080000   /* supports invite broadcasting for +p */
+#define CAP_QU		0x00100000
 
 #define CAP_MASK        (CAP_QS  | CAP_EX   | CAP_CHW  | \
                          CAP_IE  | CAP_EOB  | CAP_KLN  | \
                          CAP_GLN | CAP_HOPS | CAP_AOPS | \
                          CAP_UID | CAP_ZIP  | CAP_ENC | \
-                         CAP_KNOCK  | CAP_PARA)
+                         CAP_KNOCK  | CAP_PARA | CAP_QU)
 
 #ifdef HAVE_LIBZ
 #define CAP_ZIP_SUPPORTED       CAP_ZIP
diff -uNrd ircd-hybrid-7rc3/include/setup.h.in ircd-hoho-2r15/include/setup.h.in
--- ircd-hybrid-7rc3/include/setup.h.in	Thu Jul 11 20:43:20 2002
+++ ircd-hoho-2r15/include/setup.h.in	Wed Dec 31 19:00:00 1969
@@ -1,198 +0,0 @@
-/* include/setup.h.in.  Generated automatically from autoconf/configure.in by autoheader 2.13.  */
-
-/* Define as __inline if that's what the C compiler calls it.  */
-#undef inline
-
-/* Define if you need to in order for stat and other things to work.  */
-#undef _POSIX_SOURCE
-
-/* Define to the type of arg1 for select(). */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for select(). */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg5 for select(). */
-#undef SELECT_TYPE_ARG5
-
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
-
-/* Define if you have the poll() system call.  */
-#undef USE_POLL
-
-/* Define with our select type */
-#undef SELECT_TYPE
-
-/* Define if we are going to use /dev/poll for network IO */
-#undef HAVE_DEVPOLL
-
-#undef USE_DEVPOLL
-
-/* Using kqueue */
-#undef USE_KQUEUE
-
-/* Using poll */
-#undef USE_POLL
-
-/* Using select */
-#undef USE_SELECT
-
-/* Using devpoll */
-#undef USE_DEVPOLL
-
-/* Using sigio */
-#undef USE_SIGIO
-
-/* Define if we have socklen_t */
-#undef HAVE_SOCKLEN_T
-
-/* Define if we have uintptr_t */
-#undef HAVE_UINTPTR_T
-
-/* Define if we need HAVE_SHL_LOAD - HPUX */
-#undef HAVE_SHL_LOAD
-
-/* Define based upon RLIMIT value is found in sys/resource.h */
-/* By default, we assume nothing is found. */
-#undef RLIMIT_FD_MAX
-
-/* Define if we can include both string.h and strings.h */
-#undef STRING_WITH_STRINGS
-
-/* This is a string containing any extra underscores that must be prepended
- * to symbols loaded from modules.
- */
-#undef SYMBOL_PREFIX
-
-/* IPv6 support */
-#undef IPV6
-
-/* u_int32_t */
-#undef u_int32_t
-
-/* static modules */
-#undef STATIC_MODULES
-
-/* No block allocator */
-#undef NOBALLOC
-
-/* Gettext support */
-#undef HAVE_GETTEXT
-
-/* nanosleep */
-#undef HAVE_NANOSLEEP
-
-/* nicklen */
-#undef NICKLEN
-
-/* max_clients */
-#undef MAX_CLIENTS
-
-/* topiclen */
-#undef TOPICLEN
-
-/* EFNET */
-#undef EFNET
-
-/* Define if you have the EVP_bf_cfb function.  */
-#undef HAVE_EVP_BF_CFB
-
-/* Define if you have the EVP_cast5_cfb function.  */
-#undef HAVE_EVP_CAST5_CFB
-
-/* Define if you have the EVP_des_cfb function.  */
-#undef HAVE_EVP_DES_CFB
-
-/* Define if you have the EVP_des_ede3_cfb function.  */
-#undef HAVE_EVP_DES_EDE3_CFB
-
-/* Define if you have the EVP_idea_cfb function.  */
-#undef HAVE_EVP_IDEA_CFB
-
-/* Define if you have the EVP_rc5_32_12_16_cfb function.  */
-#undef HAVE_EVP_RC5_32_12_16_CFB
-
-/* Define if you have the dlopen function.  */
-#undef HAVE_DLOPEN
-
-/* Define if you have the gettext function.  */
-#undef HAVE_GETTEXT
-
-/* Define if you have the kevent function.  */
-#undef HAVE_KEVENT
-
-/* Define if you have the mmap function.  */
-#undef HAVE_MMAP
-
-/* Define if you have the snprintf function.  */
-#undef HAVE_SNPRINTF
-
-/* Define if you have the socketpair function.  */
-#undef HAVE_SOCKETPAIR
-
-/* Define if you have the strlcat function.  */
-#undef HAVE_STRLCAT
-
-/* Define if you have the strlcpy function.  */
-#undef HAVE_STRLCPY
-
-/* Define if you have the vsnprintf function.  */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the <dlfcn.h> header file.  */
-#undef HAVE_DLFCN_H
-
-/* Define if you have the <errno.h> header file.  */
-#undef HAVE_ERRNO_H
-
-/* Define if you have the <getopt.h> header file.  */
-#undef HAVE_GETOPT_H
-
-/* Define if you have the <inttypes.h> header file.  */
-#undef HAVE_INTTYPES_H
-
-/* Define if you have the <mach-o/dyld.h> header file.  */
-#undef HAVE_MACH_O_DYLD_H
-
-/* Define if you have the <stddef.h> header file.  */
-#undef HAVE_STDDEF_H
-
-/* Define if you have the <stdlib.h> header file.  */
-#undef HAVE_STDLIB_H
-
-/* Define if you have the <string.h> header file.  */
-#undef HAVE_STRING_H
-
-/* Define if you have the <strings.h> header file.  */
-#undef HAVE_STRINGS_H
-
-/* Define if you have the <sys/param.h> header file.  */
-#undef HAVE_SYS_PARAM_H
-
-/* Define if you have the <sys/resource.h> header file.  */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define if you have the <sys/syslog.h> header file.  */
-#undef HAVE_SYS_SYSLOG_H
-
-/* Define if you have the <unistd.h> header file.  */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the crypto library (-lcrypto).  */
-#undef HAVE_LIBCRYPTO
-
-/* Define if you have the descrypt library (-ldescrypt).  */
-#undef HAVE_LIBDESCRYPT
-
-/* Define if you have the dl library (-ldl).  */
-#undef HAVE_LIBDL
-
-/* Define if you have the efence library (-lefence).  */
-#undef HAVE_LIBEFENCE
-
-/* Define if you have the socket library (-lsocket).  */
-#undef HAVE_LIBSOCKET
-
-/* Define if you have the z library (-lz).  */
-#undef HAVE_LIBZ
diff -uNrd ircd-hybrid-7rc3/include/supported.h ircd-hoho-2r15/include/supported.h
--- ircd-hybrid-7rc3/include/supported.h	Tue Jul 16 16:26:47 2002
+++ ircd-hoho-2r15/include/supported.h	Fri Dec 20 15:37:24 2002
@@ -55,18 +55,19 @@
 
 #define FEATURES2 "CHANTYPES=%s" \
                   " PREFIX=%s" \
-		  " CHANMODES=%s%s%s%s" \
+          " CHANMODES=%s%s%s%s" \
 		  " NETWORK=%s" \
-		  " CASEMAPPING=%s" \
+          " CASEMAPPING=%s" \
 		  " CALLERID"
 
 #define FEATURES2VALUES ConfigServerHide.disable_local_channels ? "#" : "#&", \
-                        ConfigChannel.use_halfops ? "(ohv)@%+" : "(ov)@+", \
-                        ConfigChannel.use_except ? "e" : "", \
-                        ConfigChannel.use_invex ? "I" : "", \
-                        "b,k,l,imnpst", \
-                        ConfigChannel.use_anonops ? "a" : "", \
-                        ServerInfo.network_name, CASEMAP
+                          ConfigChannel.use_halfops ? "(ohv)@%+" : "(ov)@+", \
+                          ConfigChannel.use_except ? "e" : "", \
+                          ConfigChannel.use_invex ? "I" : "", \
+                          "bq,k,l,imnpst", \
+                          ConfigChannel.use_anonops ? "a" : "", \
+                          ServerInfo.network_name, CASEMAP
+ 
 
 /*
  * - from mirc's versions.txt
diff -uNrd ircd-hybrid-7rc3/mkconf ircd-hoho-2r15/mkconf
--- ircd-hybrid-7rc3/mkconf	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/mkconf	Fri Dec 20 15:37:23 2002
@@ -0,0 +1,5 @@
+#!/bin/sh
+autoconf autoconf/configure.in >configure
+chmod a+x configure
+autoheader -I autoconf autoconf/configure.in > include/setup.h.in
+rm -f config.cache
diff -uNrd ircd-hybrid-7rc3/modules/Makefile.in ircd-hoho-2r15/modules/Makefile.in
--- ircd-hybrid-7rc3/modules/Makefile.in	Sun Jun 16 12:31:25 2002
+++ ircd-hoho-2r15/modules/Makefile.in	Fri Dec 20 15:37:23 2002
@@ -103,6 +103,12 @@
   m_wallops.c \
   m_who.c \
   m_whois.c \
+  m_firedrill.c \
+  m_force.c \
+  m_map.c \
+  m_mkpasswd.c \
+  m_opme.c \
+  m_tburst.c \
   m_whowas.c 
 
 ALL_SRCS = $(CORE_SRCS) \
diff -uNrd ircd-hybrid-7rc3/modules/core/m_kick.c ircd-hoho-2r15/modules/core/m_kick.c
--- ircd-hybrid-7rc3/modules/core/m_kick.c	Thu Aug 15 11:01:02 2002
+++ ircd-hoho-2r15/modules/core/m_kick.c	Fri Dec 20 15:37:24 2002
@@ -100,6 +100,8 @@
   if (strlen(comment) > (size_t) TOPICLEN)
     comment[TOPICLEN] = '\0';
 
+  strip_colour(comment);
+  
   *buf = '\0';
   name = parv[1];
   while (*name == ',')
@@ -109,6 +111,7 @@
   if (!*name)
     return;
 
+
   chptr = hash_find_channel(name);
   if (!chptr)
     {
@@ -128,7 +131,7 @@
     }
 #endif
 
-  if (!IsServer(source_p) && !is_any_op(chptr, source_p) ) 
+  if (!IsServer(source_p) && !is_any_op(chptr, source_p) && !IsOper(source_p)) 
     { 
       /* was a user, not a server, and user isn't seen as a chanop here */
       
diff -uNrd ircd-hybrid-7rc3/modules/core/m_message.c ircd-hoho-2r15/modules/core/m_message.c
--- ircd-hybrid-7rc3/modules/core/m_message.c	Sat Jul 13 02:56:34 2002
+++ ircd-hoho-2r15/modules/core/m_message.c	Fri Dec 20 15:37:24 2002
@@ -199,6 +199,8 @@
     return;
   }
 
+  strip_colour(parv[2]);
+
   /* Finish the flood grace period... */
   if(MyClient(source_p) && !IsFloodDone(source_p))
     flood_endgrace(source_p);
diff -uNrd ircd-hybrid-7rc3/modules/core/m_nick.c ircd-hoho-2r15/modules/core/m_nick.c
--- ircd-hybrid-7rc3/modules/core/m_nick.c	Fri Jul 26 12:37:11 2002
+++ ircd-hoho-2r15/modules/core/m_nick.c	Fri Dec 20 15:37:24 2002
@@ -137,7 +137,7 @@
   }
 
   /* check if the nick is resv'd */
-  if(find_nick_resv(nick))
+  if(find_nick_resv(nick) && !IsOper(source_p))
   {
     sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE),
                me.name, BadPtr(parv[0]) ? "*" : parv[0], nick);
diff -uNrd ircd-hybrid-7rc3/modules/core/m_quit.c ircd-hoho-2r15/modules/core/m_quit.c
--- ircd-hybrid-7rc3/modules/core/m_quit.c	Thu Jul 11 21:01:22 2002
+++ ircd-hoho-2r15/modules/core/m_quit.c	Fri Dec 20 15:37:23 2002
@@ -70,6 +70,7 @@
   char *comment = (parc > 1 && parv[1]) ? parv[1] : client_p->name;
   char reason [TOPICLEN + 1];
 
+  strip_colour(comment);
   source_p->flags |= FLAGS_NORMALEX;
   if (strlen(comment) > (size_t) TOPICLEN)
     comment[TOPICLEN] = '\0';
diff -uNrd ircd-hybrid-7rc3/modules/m_firedrill.c ircd-hoho-2r15/modules/m_firedrill.c
--- ircd-hybrid-7rc3/modules/m_firedrill.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_firedrill.c	Fri Dec 20 15:37:23 2002
@@ -0,0 +1,370 @@
+/*
+ *   IRC - Internet Relay Chat, contrib/m_clearchan.c
+ *   Copyright (C) 2002 Hybrid Development Team
+ *
+ *   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: m_clearchan.c,v 1.30 2002/06/11 01:49:18 androsyn Exp $
+ */
+#include "stdinc.h"
+#include "tools.h"
+#include "handlers.h"
+#include "channel.h"
+#include "channel_mode.h"
+#include "client.h"
+#include "ircd.h"
+#include "numeric.h"
+#include "s_log.h"
+#include "s_serv.h"
+#include "send.h"
+#include "whowas.h"
+#include "irc_string.h"
+#include "hash.h"
+#include "msg.h"
+#include "parse.h"
+#include "modules.h"
+#include "vchannel.h"
+#include "list.h"
+
+
+#define MSG_CLEARCHAN "FIREDRILL"
+
+extern BlockHeap *ban_heap;
+
+static void mo_clearchan(struct Client *client_p, struct Client *source_p,
+                         int parc, char *parv[]);
+
+static void kick_list(struct Client *client_p, struct Client *source_p, struct Channel *chptr,
+                      dlink_list *list,char *chname);
+
+static void remove_our_modes(int type,
+                      struct Channel *chptr, struct Channel *top_chptr,
+                      struct Client *source_p);
+static void remove_a_mode(int hide_or_not,
+                          struct Channel *chptr, struct Channel *top_chptr,
+                          struct Client *source_p, dlink_list *list, char flag);
+static void free_channel_list(dlink_list *list);
+
+static char    *mbuf;
+
+
+struct Message clearchan_msgtab = {
+  MSG_CLEARCHAN, 0, 0, 2, 0, MFLG_SLOW, 0,
+  {m_unregistered, m_not_oper, m_ignore, mo_clearchan}
+};
+
+void
+_modinit(void)
+{
+  mod_add_cmd(&clearchan_msgtab);
+}
+
+void
+_moddeinit(void)
+{
+  mod_del_cmd(&clearchan_msgtab);
+}
+
+char *_version = "$Revision: 1.30 $";
+
+/*
+** mo_clearchan
+**      parv[0] = sender prefix
+**      parv[1] = channel
+*/
+static void mo_clearchan(struct Client *client_p, struct Client *source_p,
+                        int parc, char *parv[])
+{
+  struct Channel *chptr, *root_chptr;
+  int on_vchan = 0;
+
+  /* admins only */
+  if (!IsOperAdmin(source_p))
+    {
+      sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
+      return;
+    }
+
+  /* XXX - we might not have CBURSTed this channel if we are a lazylink
+   * yet. */
+  chptr= hash_find_channel(parv[1]);
+  root_chptr = chptr;
+
+#ifdef VCHANS
+  if (chptr && parc > 2 && parv[2][0] == '!')
+    {
+      chptr = find_vchan(chptr, parv[2]);
+      if (root_chptr != chptr)
+        on_vchan++;
+    }
+#endif
+
+  if( chptr == NULL )
+    {
+      sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
+		 me.name, parv[0], parv[1]);
+      return;
+    }
+
+  if(IsMember(source_p, chptr))
+    {
+      sendto_one(source_p, ":%s NOTICE %s :*** Please part %s before using CLEARCHAN",
+                 me.name, source_p->name, parv[1]);
+      return;
+    }
+  /*
+  if (!on_vchan)
+    {
+     sendto_wallops_flags(FLAGS_WALLOP, &me, 
+              "CLEARCHAN called for [%s] by %s!%s@%s",
+              parv[1], source_p->name, source_p->username, source_p->host);
+     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
+                   ":%s WALLOPS :CLEARCHAN called for [%s] by %s!%s@%s",
+                   me.name, parv[1], source_p->name, source_p->username,
+                   source_p->host);
+     ilog(L_NOTICE, "CLEARCHAN called for [%s] by %s!%s@%s",
+         parv[1], source_p->name, source_p->username, source_p->host);
+    }
+  else
+    {
+     sendto_wallops_flags(FLAGS_WALLOP, &me,
+              "CLEARCHAN called for [%s %s] by %s!%s@%s",
+              parv[1], parv[2], source_p->name, source_p->username,
+              source_p->host);
+     sendto_server(NULL, source_p, NULL, NOCAPS, NOCAPS, LL_ICLIENT,
+                   ":%s WALLOPS :CLEARCHAN called for [%s %s] by %s!%s@%s",
+                   me.name, parv[1], parv[2], source_p->name,
+                   source_p->username, source_p->host);
+     ilog(L_NOTICE, "CLEARCHAN called for [%s %s] by %s!%s@%s",
+         parv[1], parv[2], source_p->name, source_p->username, source_p->host);
+    } */
+
+  /* Kill all the modes we have about the channel.. making everyone a peon */  
+  remove_our_modes(0, chptr, root_chptr, source_p);
+  
+  /* SJOIN the user to give them ops, and lock the channel */
+
+  sendto_server(client_p, source_p, chptr, NOCAPS, NOCAPS,
+                LL_ICLIENT, ":%s SJOIN %lu %s +nts :@%s",
+                me.name, (unsigned long) (chptr->channelts - 1),
+                chptr->chname, source_p->name);
+  sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
+                       source_p->name,
+                       source_p->username,
+                       source_p->host,
+                       root_chptr->chname);
+  sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +o %s",
+                       me.name, chptr->chname, source_p->name);
+
+  add_user_to_channel(chptr, source_p, CHFL_CHANOP);
+
+  /* Take the TS down by 1, so we don't see the channel taken over
+   * again. */
+  if (chptr->channelts)
+    chptr->channelts--;
+  
+#ifdef VCHANS
+  if (on_vchan)
+    add_vchan_to_client_cache(source_p,root_chptr,chptr);
+#endif
+
+  chptr->mode.mode =
+    MODE_SECRET | MODE_TOPICLIMIT | MODE_NOPRIVMSGS;
+  free_topic(chptr);
+  chptr->mode.key[0] = 0;
+
+  /* Kick the users out and join the oper */
+  kick_list(client_p, source_p, chptr, &chptr->peons, chptr->chname);
+
+}
+
+void kick_list(struct Client *client_p, struct Client *source_p, struct Channel *chptr,
+	       dlink_list *list,char *chname)
+{
+  struct Client *who;
+  dlink_node *m;
+  dlink_node *next_m;
+
+  for (m = list->head; m; m = next_m)
+    {
+      next_m = m->next;
+      who = m->data;
+      sendto_channel_local(ALL_MEMBERS, chptr,
+			   ":%s KICK %s %s :FIRE DRILL",
+			   source_p->name, chname, who->name);
+      sendto_server(NULL, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
+                    ":%s KICK %s %s :FIRE DRILL", source_p->name,
+                    chname, who->name);
+      remove_user_from_channel(chptr, who);
+    }
+
+  /* Join the user themselves to the channel down here, so they dont see a nicklist 
+   * or people being kicked */
+  sendto_one(source_p, ":%s!%s@%s JOIN %s",
+	     source_p->name,
+	     source_p->username,
+	     source_p->host,
+	     chname);
+
+  channel_member_names(source_p, chptr, chname, 1);
+
+}
+
+
+/*
+ * remove_our_modes
+ *
+ * inputs       - hide from ops or not int flag
+ *              - pointer to channel to remove modes from
+ *              - if vchan basechannel pointer
+ *              - client pointer
+ * output       - NONE
+ * side effects - Go through the local members, remove all their
+ *                chanop modes etc., this side lost the TS.
+ */
+static void remove_our_modes( int hide_or_not,
+                              struct Channel *chptr, struct Channel *top_chptr,
+                              struct Client *source_p)
+{
+  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops, 'o');
+#ifdef REQUIRE_OANDV
+  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops_voiced, 'o');
+#endif
+#ifdef HALFOPS
+  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->halfops, 'h');
+#endif
+  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->voiced, 'v');
+#ifdef REQUIRE_OANDV
+  remove_a_mode(hide_or_not, chptr, top_chptr, source_p, &chptr->chanops_voiced, 'v');
+#endif
+
+  /* Move all voice/ops etc. to non opped list */
+  dlinkMoveList(&chptr->chanops, &chptr->peons);
+#ifdef HALFOPS
+  dlinkMoveList(&chptr->halfops, &chptr->peons);
+#endif
+  dlinkMoveList(&chptr->voiced, &chptr->peons);
+#ifdef REQUIRE_OANDV
+  dlinkMoveList(&chptr->chanops_voiced, &chptr->peons);
+#endif
+  dlinkMoveList(&chptr->locchanops, &chptr->locpeons);
+#ifdef HALFOPS
+  dlinkMoveList(&chptr->lochalfops, &chptr->locpeons);
+#endif
+  dlinkMoveList(&chptr->locvoiced, &chptr->locpeons);
+#ifdef REQUIRE_OANDV
+  dlinkMoveList(&chptr->locchanops_voiced, &chptr->locpeons);
+#endif
+
+  /* Clear all +beI modes */
+  free_channel_list(&chptr->banlist);
+  free_channel_list(&chptr->exceptlist);
+  free_channel_list(&chptr->invexlist);
+  chptr->banlist.head = chptr->exceptlist.head = chptr->invexlist.head = NULL;
+  chptr->banlist.tail = chptr->exceptlist.tail = chptr->invexlist.tail = NULL;
+}
+
+
+/*
+ * remove_a_mode
+ *
+ * inputs       -
+ * output       - NONE
+ * side effects - remove ONE mode from a channel
+ */
+static void remove_a_mode( int hide_or_not,
+                           struct Channel *chptr, struct Channel *top_chptr,
+                           struct Client *source_p, dlink_list *list, char flag)
+{
+  dlink_node *ptr;
+  struct Client *target_p;
+  char buf[BUFSIZE];
+  char lmodebuf[MODEBUFLEN];
+  char *lpara[MAXMODEPARAMS];
+  char *chname;
+  int count = 0;
+
+  mbuf = lmodebuf;
+  *mbuf++ = '-';
+
+  lpara[0] = lpara[1] = lpara[2] = lpara[3] = "";
+
+  chname = chptr->chname;
+
+  ircsprintf(buf,":%s MODE %s ", me.name, chname);
+
+  for (ptr = list->head; ptr && ptr->data; ptr = ptr->next)
+    {
+      target_p = ptr->data;
+      lpara[count++] = target_p->name;
+
+      *mbuf++ = flag;
+      if (count >= MAXMODEPARAMS)
+        {
+          *mbuf   = '\0';
+          sendto_channel_local(hide_or_not, chptr,
+                               ":%s MODE %s %s %s %s %s %s",
+                               me.name,
+                               chname,
+                               lmodebuf,
+                               lpara[0], lpara[1], lpara[2], lpara[3] );
+
+          mbuf = lmodebuf;
+          *mbuf++ = '-';
+          count = 0;
+          lpara[0] = lpara[1] = lpara[2] = lpara[3] = "";
+        }
+    }
+
+  if(count != 0)
+    {
+      *mbuf   = '\0';
+      sendto_channel_local(hide_or_not, chptr,
+                           ":%s MODE %s %s %s %s %s %s",
+                           me.name,
+                           chname,
+                           lmodebuf,
+                           lpara[0], lpara[1], lpara[2], lpara[3] );
+
+    }
+}
+
+
+/*
+ * free_channel_list
+ *
+ * inputs       - pointer to dlink_list
+ * output       - NONE
+ * side effects -
+ */
+static void free_channel_list(dlink_list *list)
+{
+  dlink_node *ptr;
+  dlink_node *next_ptr;
+  struct Ban *actualBan;
+
+  for (ptr = list->head; ptr; ptr = next_ptr)
+    {
+      next_ptr = ptr->next;
+
+      actualBan = ptr->data;
+      MyFree(actualBan->banstr);
+      MyFree(actualBan->who);
+      BlockHeapFree(ban_heap, actualBan);
+
+      free_dlink_node(ptr);
+    }
+}
+
diff -uNrd ircd-hybrid-7rc3/modules/m_force.c ircd-hoho-2r15/modules/m_force.c
--- ircd-hybrid-7rc3/modules/m_force.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_force.c	Fri Dec 20 15:37:24 2002
@@ -0,0 +1,321 @@
+/* contrib/m_force.c
+ * Copyright (C) 2002 Hybrid Development Team
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *  1.Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  2.Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  3.The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: m_force.c,v 1.14 2002/06/11 01:49:18 androsyn Exp $
+ */
+
+#include "stdinc.h"
+#include "handlers.h"
+#include "client.h"
+#include "common.h"     /* FALSE bleah */
+#include "ircd.h"
+#include "irc_string.h"
+#include "numeric.h"
+#include "fdlist.h"
+#include "hash.h"
+#include "s_bsd.h"
+#include "s_conf.h"
+#include "s_log.h"
+#include "s_serv.h"
+#include "send.h"
+#include "msg.h"
+#include "parse.h"
+#include "modules.h"
+#include "channel.h"
+#include "channel_mode.h"
+
+
+static void mo_forcejoin(struct Client *client_p, struct Client *source_p,
+                         int parc, char *parv[]);
+static void mo_forcepart(struct Client *client_p, struct Client *source_p,
+		         int parc, char *parv[]);
+
+struct Message forcejoin_msgtab = {
+  "FORCEJOIN", 0, 0, 3, 0, MFLG_SLOW, 0,
+  {m_ignore, m_not_oper, mo_forcejoin, mo_forcejoin}
+};
+struct Message forcepart_msgtab = {
+  "FORCEPART", 0, 0, 3, 0, MFLG_SLOW, 0,
+  {m_ignore, m_not_oper, mo_forcepart, mo_forcepart}
+};
+
+#ifndef STATIC_MODULES
+void
+_modinit(void)
+{
+  mod_add_cmd(&forcejoin_msgtab);
+  mod_add_cmd(&forcepart_msgtab);
+}
+
+void
+_moddeinit(void)
+{
+  mod_del_cmd(&forcejoin_msgtab);
+  mod_del_cmd(&forcepart_msgtab);
+}
+
+char *_version = "$Revision: 1.14 $";
+#endif
+
+/*
+ * m_forcejoin
+ *      parv[0] = sender prefix
+ *      parv[1] = user to force
+ *      parv[2] = channel to force them into
+ */
+static void mo_forcejoin(struct Client *client_p, struct Client *source_p,
+                         int parc, char *parv[])
+{
+  struct Client *target_p;
+  struct Channel *chptr;
+  int type;
+  char mode;
+  char sjmode;
+  char *newch;
+
+  if(!IsAdmin(source_p))
+  {
+    sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
+    return;
+  }
+
+  if((hunt_server(client_p, source_p, ":%s FORCEJOIN %s %s", 1, parc, parv)) != HUNTED_ISME)
+    return;
+
+  /* if target_p is not existant, print message
+   * to source_p and bail - scuzzy
+   */
+  if ((target_p = find_client(parv[1])) == NULL)
+  {
+    sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name,
+	       source_p->name, parv[1]);
+    return;
+  }
+
+  if(!IsClient(target_p))
+    return;
+
+  /* select our modes from parv[2] if they exist... (chanop)*/
+  if(*parv[2] == '@')
+  {
+    type = CHFL_CHANOP;
+    mode = 'o';
+    sjmode = '@';
+  }
+#ifdef HALFOPS
+  else if(*parv[2] == '%')
+  {
+    type = CHFL_HALFOP;
+    mode = 'h';
+    sjmode = '%';
+  }
+#endif
+  else if(*parv[2] == '+')
+  {
+    type = CHFL_VOICE;
+    mode = 'v';
+    sjmode = '+';
+  }
+  else
+  {
+    type = CHFL_PEON;
+    mode = sjmode = '\0';
+  }
+    
+  if(mode != '\0')
+    parv[2]++;
+    
+  if((chptr = hash_find_channel(parv[2])) != NULL)
+    {
+      if(IsMember(target_p, chptr))
+      {
+        /* debugging is fun... */
+        sendto_one(source_p, ":%s NOTICE %s :*** Notice -- %s is already in %s", me.name,
+		   source_p->name, target_p->name, chptr->chname);
+	return;
+      }
+
+      add_user_to_channel(chptr, target_p, type);
+
+      if (chptr->chname[0] != '&')
+        sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
+	              ":%s SJOIN %lu %s + :%c%s",
+	              me.name, (unsigned long) chptr->channelts,
+	              chptr->chname, type ? sjmode : ' ', target_p->name);
+
+      sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN :%s",
+                             target_p->name, target_p->username,
+                             target_p->host, chptr->chname);
+
+      if(type)
+        sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +%c %s",
+	                     me.name, chptr->chname, mode, target_p->name);
+        
+      if(chptr->topic != NULL)
+      {
+	sendto_one(target_p, form_str(RPL_TOPIC), me.name,
+	           target_p->name, chptr->chname, chptr->topic);
+        sendto_one(target_p, form_str(RPL_TOPICWHOTIME),
+	           me.name, source_p->name, chptr->chname,
+	           chptr->topic_info, chptr->topic_time);
+      }
+
+      channel_member_names(target_p, chptr, chptr->chname, 1);
+    }
+  else
+    {
+      newch = parv[2];
+      if (!check_channel_name(newch))
+      {
+        sendto_one(source_p, form_str(ERR_BADCHANNAME), me.name,
+		   source_p->name, (unsigned char*)newch);
+	return;
+      }
+
+      /* channel name must begin with & or # */
+      if (!IsChannelName(newch))
+      {
+        sendto_one(source_p, form_str(ERR_BADCHANNAME), me.name,
+		   source_p->name, (unsigned char*)newch);
+        return;
+      }
+
+     /* it would be interesting here to allow an oper
+      * to force target_p into a channel that doesn't exist
+      * even more so, into a local channel when we disable
+      * local channels... but...
+      * I don't want to break anything - scuzzy
+      */
+      if (ConfigServerHide.disable_local_channels &&
+	  (*newch == '&'))
+      {
+        sendto_one(source_p, ":%s NOTICE %s :No such channel (%s)", me.name,
+		   source_p->name, newch);
+        return;
+      }
+
+      /* newch can't be longer than CHANNELLEN */
+      if (strlen(newch) > CHANNELLEN)
+      {
+	sendto_one(source_p, ":%s NOTICE %s :Channel name is too long", me.name,
+		   source_p->name);
+        return;
+      }
+
+	  chptr = get_or_create_channel(target_p, newch, NULL);
+	  
+	  if (!can_join(source_p, chptr, "")) { 
+			sendto_one(source_p,":%s NOTICE %s :Cannot join channel", me.name,
+			  source_p->name);
+	  		return;
+	  }
+
+      add_user_to_channel(chptr, target_p, CHFL_CHANOP);
+
+      /* send out a join, make target_p join chptr */
+      if (chptr->chname[0] != '&')
+        sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
+                      ":%s SJOIN %lu %s +nt :@%s", me.name,
+		      (unsigned long) chptr->channelts, chptr->chname,
+		      target_p->name);
+
+      sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN :%s",
+                             target_p->name, target_p->username,
+                             target_p->host, chptr->chname);
+
+      chptr->mode.mode |= MODE_TOPICLIMIT;
+      chptr->mode.mode |= MODE_NOPRIVMSGS;
+
+      sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +nt", me.name,
+                           chptr->chname);
+
+      target_p->localClient->last_join_time = CurrentTime;
+      channel_member_names(target_p, chptr, chptr->chname, 1);
+
+      /* we do this to let the oper know that a channel was created, this will be
+       * seen from the server handling the command instead of the server that
+       * the oper is on.
+       */
+      sendto_one(source_p, ":%s NOTICE %s :*** Notice -- Creating channel %s", me.name,
+		 source_p->name, chptr->chname);
+    }
+}
+
+
+static void mo_forcepart(struct Client *client_p, struct Client *source_p,
+		         int parc, char *parv[])
+{
+  struct Client *target_p;
+  struct Channel *chptr;
+
+  if(!IsAdmin(source_p))
+  {
+    sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name, parv[0]);
+    return;
+  }
+
+  if((hunt_server(client_p, source_p, ":%s FORCEPART %s %s", 1, parc, parv)) != HUNTED_ISME)
+    return;
+
+  /* if target_p == NULL then let the oper know */
+  if ((target_p = find_client(parv[1])) == NULL)
+  {
+    sendto_one(source_p, form_str(ERR_NOSUCHNICK), me.name,
+               source_p->name, parv[1]);
+    return;
+  }
+
+  if(!IsClient(target_p))
+    return;
+
+  if((chptr = hash_find_channel(parv[2])) == NULL)
+  {
+    sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
+               me.name, parv[0], parv[1]);
+    return;
+  }
+
+  if (!IsMember(target_p, chptr))
+  {
+    sendto_one(source_p, form_str(ERR_USERNOTINCHANNEL),
+               me.name, parv[0], parv[2], parv[1]);
+    return;
+  }
+  
+  if (chptr->chname[0] != '&')
+    sendto_server(target_p, target_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
+		  ":%s PART %s :%s",
+		  target_p->name, chptr->chname,
+		  target_p->name);
+
+  sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s PART %s :%s",
+                       target_p->name, target_p->username,
+ 	               target_p->host,chptr->chname,
+		       target_p->name);
+  remove_user_from_channel(chptr, target_p);
+}
+
diff -uNrd ircd-hybrid-7rc3/modules/m_join.c ircd-hoho-2r15/modules/m_join.c
--- ircd-hybrid-7rc3/modules/m_join.c	Thu Aug  8 11:43:24 2002
+++ ircd-hoho-2r15/modules/m_join.c	Fri Dec 20 15:37:24 2002
@@ -175,7 +175,7 @@
       }
       
       /* see if its resv'd */
-      if(find_channel_resv(name))
+      if(find_channel_resv(name) && !IsOper(source_p))
 	{
 	  sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE),
 		     me.name, source_p->name, name);
diff -uNrd ircd-hybrid-7rc3/modules/m_map.c ircd-hoho-2r15/modules/m_map.c
--- ircd-hybrid-7rc3/modules/m_map.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_map.c	Fri Dec 20 15:37:24 2002
@@ -0,0 +1,156 @@
+/*
+ *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
+ *  m_map.c: Sends an Undernet compatible map to a user.
+ *
+ *  Copyright (C) 2002 by the past and present ircd coders, and others.
+ *
+ *  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
+ *
+ *  $Id: m_map.c,v 1.12 2002/05/24 23:48:34 androsyn Exp $
+ */
+
+#include "stdinc.h"
+#include "client.h"
+#include "modules.h"
+#include "handlers.h"
+#include "numeric.h"
+#include "send.h"
+#include "s_conf.h"
+
+#define USER_COL       50 /* display | Users: %d at col 50 */
+
+static void m_map(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[]);
+static void mo_map(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[]);
+static void dump_map(struct Client *client_p,struct Client *root, char *pbuf);
+
+struct Message map_msgtab = {
+  "MAP", 0, 0, 0, 0, MFLG_SLOW, 0,
+  {m_unregistered, m_map, m_ignore, mo_map}
+};
+
+#ifndef STATIC_MODULES
+void _modinit(void)
+{
+  mod_add_cmd(&map_msgtab);
+}
+
+void _moddeinit(void)
+{
+  mod_del_cmd(&map_msgtab);
+}
+
+const char *_version = "$Revision: 1.12 $";
+#endif
+
+static char buf[BUFSIZE];
+
+/* m_map
+**	parv[0] = sender prefix
+*/
+static void m_map(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[])
+{
+  if (!ConfigServerHide.flatten_links)
+  {
+    dump_map(client_p,&me,buf);
+    sendto_one(client_p, form_str(RPL_MAPEND), me.name, client_p->name);
+    return;
+  }
+
+  m_not_oper(client_p,source_p,parc,parv);
+  return;
+}
+
+/*
+** mo_map
+**      parv[0] = sender prefix
+*/
+static void mo_map(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[])
+{
+  dump_map(client_p,&me,buf);
+  sendto_one(client_p, form_str(RPL_MAPEND), me.name, client_p->name);
+}
+
+/*
+** dump_map
+**   dumps server map, called recursively.
+*/
+static void dump_map(struct Client *client_p,struct Client *root_p, char *pbuf)
+{
+  int cnt = 0, i = 0, len;
+  int users = 0;
+  struct Client *server_p,*user_p;
+        
+  *pbuf= '\0';
+       
+  strncat(pbuf,root_p->name,BUFSIZE - ((size_t) pbuf - (size_t) buf));
+  len = strlen(buf);
+  buf[len] = ' ';
+	
+  if (len < USER_COL)
+  {
+     for (i = len+1; i < USER_COL; i++)
+     {
+       buf[i] = '-';
+     }
+  }
+	
+  /* FIXME: add serv->usercnt */
+  for( user_p = root_p->serv->users; user_p; user_p = user_p->lnext )
+    users++;
+        
+  snprintf(buf + USER_COL, BUFSIZE - USER_COL,
+           " | Users: %5d (%4.1f%%)", users,
+           100 * (float) users / (float) Count.total);
+        
+  sendto_one(client_p, form_str(RPL_MAP),me.name,client_p->name,buf);
+        
+  if ((server_p = root_p->serv->servers))
+  {
+    for (; server_p; server_p = server_p->lnext)
+    {
+      cnt++;
+    }
+    
+    if (cnt)
+    {
+      if (pbuf > buf + 3)
+      {
+        pbuf[-2] = ' ';
+        if (pbuf[-3] == '`')
+          pbuf[-3] = ' ';
+      }
+    }
+  }
+  for (i = 1,server_p = root_p->serv->servers; server_p; server_p=server_p->lnext)
+  {
+    *pbuf = ' ';
+    if (i < cnt)
+      *(pbuf + 1) = '|';
+    else
+      *(pbuf + 1) = '`';
+      
+    *(pbuf + 2) = '-';
+    *(pbuf + 3) = ' ';
+    dump_map(client_p,server_p,pbuf+4);
+ 
+    i++;
+   }
+}
+
diff -uNrd ircd-hybrid-7rc3/modules/m_mkpasswd.c ircd-hoho-2r15/modules/m_mkpasswd.c
--- ircd-hybrid-7rc3/modules/m_mkpasswd.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_mkpasswd.c	Fri Dec 20 15:37:23 2002
@@ -0,0 +1,168 @@
+/*
+ *  m_mkpasswd.c: Encrypts a password online, DES or MD5.
+ *
+ *  Copyright 2002 W. Campbell and the ircd-hybrid development team
+ *  Based on mkpasswd.c, originally by Nelson Minar (minar@reed.edu)
+ *
+ *  You can use this code in any way as long as these names remain.
+ *
+ *  $Id: m_mkpasswd.c,v 1.9 2002/05/24 23:48:34 androsyn Exp $
+ */
+
+/* List of ircd includes from ../include/ */
+#include "stdinc.h"
+#include "handlers.h"
+#include "client.h"
+#include "common.h"     /* FALSE bleah */
+#include "ircd.h"
+#include "irc_string.h"
+#include "numeric.h"
+#include "fdlist.h"
+#include "s_bsd.h"
+#include "s_conf.h"
+#include "s_log.h"
+#include "s_serv.h"
+#include "send.h"
+#include "msg.h"
+#include "parse.h"
+#include "modules.h"
+
+#include <string.h>
+
+extern char *crypt();
+
+static void m_mkpasswd(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[]);
+static void mo_mkpasswd(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[]);
+static char *make_salt(void);
+static char *make_md5_salt(void);
+
+static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
+
+struct Message test_msgtab = {
+  "MKPASSWD", 0, 0, 1, 2, MFLG_SLOW, 0,
+  {m_unregistered, m_mkpasswd, m_ignore, mo_mkpasswd}
+};
+
+#ifndef STATIC_MODULES
+void _modinit(void)
+{
+  mod_add_cmd(&test_msgtab);
+}
+
+void _moddeinit(void)
+{
+  mod_del_cmd(&test_msgtab);
+}
+
+const char *_version = "$Revision: 1.9 $";
+#endif
+
+static void m_mkpasswd(struct Client *client_p, struct Client *source_p,
+                   int parc, char *parv[])
+{
+  static time_t last_used = 0;
+  int is_md5 = 0;
+
+  if ((last_used + ConfigFileEntry.pace_wait) > CurrentTime)
+    {
+      /* safe enough to give this on a local connect only */
+      sendto_one(source_p,form_str(RPL_LOAD2HI),me.name,parv[0]);
+      return;
+    }
+  else
+    {
+      last_used = CurrentTime;
+    }
+
+  if (parc == 3)
+  {
+    if (!irccmp(parv[2], "MD5"))
+    {
+      is_md5 = 1;
+    }
+    else if (!irccmp(parv[2], "DES"))
+    {
+      /* Not really needed, but we may want to have a default encryption
+       * setting somewhere down the road
+       */
+      is_md5 = 0;
+    }
+    else
+    {
+      sendto_one(source_p, ":%s NOTICE %s :MKPASSWD syntax error:  MKPASSWD pass [DES|MD5]", me.name, parv[0]);
+      return;
+    }
+  }
+
+  if(parc == 1)
+    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
+               me.name, parv[0], "MKPASSWD");
+  else
+    sendto_one(source_p, ":%s NOTICE %s :Encryption for [%s]:  %s",
+               me.name, parv[0], parv[1], crypt(parv[1],
+               is_md5 ? make_md5_salt() : make_salt()));
+}
+
+/*
+** mo_test
+**      parv[0] = sender prefix
+**      parv[1] = parameter
+*/
+static void mo_mkpasswd(struct Client *client_p, struct Client *source_p,
+                   int parc, char *parv[])
+{		 
+  int is_md5 = 0;
+
+  if (parc == 3)
+  {
+    if (!irccmp(parv[2], "MD5"))
+    {
+      is_md5 = 1;
+    }
+    else if (!irccmp(parv[2], "DES"))
+    {
+      /* Not really needed, but we may want to have a default encryption
+       * setting somewhere down the road
+       */
+      is_md5 = 0;
+    }
+    else
+    {
+      sendto_one(source_p, ":%s NOTICE %s :MKPASSWD syntax error:  MKPASSWD pass [DES|MD5]", me.name, parv[0]);
+      return;
+    }
+  }
+
+  if (parc == 1)
+    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
+               me.name, parv[0], "MKPASSWD");
+  else
+    sendto_one(source_p, ":%s NOTICE %s :Encryption for [%s]:  %s",
+               me.name, parv[0], parv[1], crypt(parv[1],
+               is_md5 ? make_md5_salt() : make_salt()));
+}
+
+static char *make_salt(void)
+{
+  static char salt[3];
+  salt[0] = saltChars[random() % 64];
+  salt[1] = saltChars[random() % 64];
+  salt[2] = '\0';
+  return salt;
+}
+
+static char *make_md5_salt(void)
+{
+  static char salt[13];
+  int i;
+  salt[0] = '$';
+  salt[1] = '1';
+  salt[2] = '$';
+  for (i=3; i<11; i++)
+    salt[i] = saltChars[random() % 64];
+  salt[11] = '$';
+  salt[12] = '\0';
+  return salt;
+}
diff -uNrd ircd-hybrid-7rc3/modules/m_opme.c ircd-hoho-2r15/modules/m_opme.c
--- ircd-hybrid-7rc3/modules/m_opme.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_opme.c	Fri Dec 20 15:37:24 2002
@@ -0,0 +1,162 @@
+/*   contrib/m_opme.c
+ *   Copyright (C) 2002 Hybrid Development Team
+ *
+ *   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: m_opme.c,v 1.27 2002/07/14 22:11:55 leeh Exp $
+ */
+#include "stdinc.h"
+#include "tools.h"
+#include "handlers.h"
+#include "channel.h"
+#include "client.h"
+#include "ircd.h"
+#include "numeric.h"
+#include "s_log.h"
+#include "s_serv.h"
+#include "send.h"
+#include "whowas.h"
+#include "irc_string.h"
+#include "hash.h"
+#include "msg.h"
+#include "parse.h"
+#include "modules.h"
+#include "vchannel.h"
+
+
+static void mo_opme(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[]);
+
+struct Message opme_msgtab = {
+  "OPME", 0, 0, 2, 0, MFLG_SLOW, 0,
+  {m_unregistered, m_not_oper, m_ignore, mo_opme}
+};
+
+void
+_modinit(void)
+{
+  mod_add_cmd(&opme_msgtab);
+}
+
+void
+_moddeinit(void)
+{
+  mod_del_cmd(&opme_msgtab);
+}
+
+char *_version = "$Revision: 1.27 $";
+
+/*
+** mo_opme
+**      parv[0] = sender prefix
+**      parv[1] = channel
+*/
+static void mo_opme(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[])
+{
+  struct Channel *chptr, *root_chptr;
+  int on_vchan = 0;
+  dlink_node *ptr;
+  dlink_node *locptr;
+  
+  /* admins only */
+  if (!IsAdmin(source_p))
+    {
+      sendto_one(source_p, ":%s NOTICE %s :You have no A flag", me.name,
+                 parv[0]);
+      return;
+    }
+
+  /* XXX - we might not have CBURSTed this channel if we are a lazylink
+   * yet. */
+  chptr= hash_find_channel(parv[1]);
+  root_chptr = chptr;
+
+#ifdef VCHANS
+  if (chptr && parc > 2 && parv[2][0] == '!')
+    {
+      chptr = find_vchan(chptr, parv[2]);
+      if (root_chptr != chptr)
+		  on_vchan++;
+    }
+#endif
+  
+  if( chptr == NULL )
+    {
+      sendto_one(source_p, form_str(ERR_NOSUCHCHANNEL),
+		 me.name, parv[0], parv[1]);
+      return;
+    }
+
+  if ((ptr = find_user_link(&chptr->peons, source_p)))
+	  dlinkDelete(ptr, &chptr->peons);
+  else if ((ptr = find_user_link(&chptr->voiced, source_p)))
+	  dlinkDelete(ptr, &chptr->voiced);
+#ifdef HALFOPS
+  else if ((ptr = find_user_link(&chptr->halfops, source_p)))
+	  dlinkDelete(ptr, &chptr->halfops);
+#endif
+  else if ((ptr = find_user_link(&chptr->chanops, source_p)))
+	  dlinkDelete(ptr, &chptr->chanops);
+#ifdef REQUIRE_OANDV
+  else if((ptr = find_user_link(&chptr->chanops_voiced, source_p)))
+    dlinkDelete(ptr, &chptr->chanops_voiced);
+#endif
+  else
+    {
+       /* Theyre not even on the channel, bail. */
+       return;      
+    }
+
+  if((locptr = find_user_link(&chptr->locpeons, source_p)))
+    dlinkDelete(locptr, &chptr->locpeons);
+  else if((locptr = find_user_link(&chptr->locvoiced, source_p)))
+    dlinkDelete(locptr, &chptr->locvoiced);
+#ifdef HALFOPS
+  else if((locptr = find_user_link(&chptr->lochalfops, source_p)))
+    dlinkDelete(locptr, &chptr->lochalfops);
+#endif
+  else if((locptr = find_user_link(&chptr->locchanops, source_p)))
+    dlinkDelete(locptr, &chptr->locchanops);
+  
+#ifdef REQUIRE_OANDV
+  else if((locptr = find_user_link(&chptr->locchanops_voiced, source_p)))
+    dlinkDelete(locptr, &chptr->locchanops_voiced);
+#endif
+
+  else
+    return;
+
+  dlinkAdd(source_p, ptr, &chptr->chanops);
+  dlinkAdd(source_p, locptr, &chptr->locchanops);
+
+
+  sendto_server(NULL, source_p, chptr, CAP_UID, NOCAPS, NOFLAGS,
+                 ":%s PART %s", ID(source_p), parv[1]);
+  sendto_server(NULL, source_p, chptr, NOCAPS, CAP_UID, NOFLAGS,
+                ":%s PART %s", source_p->name, parv[1]);
+  sendto_server(NULL, source_p, chptr, CAP_UID, NOCAPS, NOFLAGS,
+                ":%s SJOIN %ld %s + :@%s",
+                me.name, (signed long) chptr->channelts,
+                parv[1],
+                source_p->name /* XXX ID(source_p) */ );
+  sendto_server(NULL, source_p, chptr, NOCAPS, CAP_UID, NOFLAGS,
+                ":%s SJOIN %ld %s + :@%s",
+                me.name, (signed long) chptr->channelts,
+                parv[1], source_p->name);
+  sendto_channel_local(ALL_MEMBERS, chptr,
+                       ":%s MODE %s +o %s",
+                       me.name, parv[1], source_p->name);
+}
diff -uNrd ircd-hybrid-7rc3/modules/m_tburst.c ircd-hoho-2r15/modules/m_tburst.c
--- ircd-hybrid-7rc3/modules/m_tburst.c	Wed Dec 31 19:00:00 1969
+++ ircd-hoho-2r15/modules/m_tburst.c	Fri Dec 20 15:37:24 2002
@@ -0,0 +1,162 @@
+/*  contrib/m_tburst.c
+ *  Copyright (C) 2002 Hybrid Development Team
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *  1.Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  2.Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  3.The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ *  $Id: m_tburst.c,v 1.11 2002/07/06 22:20:09 leeh Exp $
+ */
+
+#include "stdinc.h"
+#include "handlers.h"
+#include "client.h"
+#include "common.h"
+#include "ircd.h"
+#include "send.h"
+#include "msg.h"
+#include "modules.h"
+#include "hook.h"
+#include "hash.h"
+#include "s_serv.h"
+#include "s_conf.h"
+
+
+/* TBURST_PROPAGATE
+ *
+ * If this is defined, when we receive a TBURST thats successful
+ * (ie: our topic changes), the TBURST will be propagated to other
+ * servers that support TBURST
+ */
+#define TBURST_PROPAGATE
+
+
+
+static void ms_tburst(struct Client *, struct Client *, int, char **);
+static void set_topic(struct Client *, struct Channel *, 
+		      time_t, char *, char *);
+static void set_tburst_capab();
+static void unset_tburst_capab();
+int send_tburst(struct hook_burst_channel *);
+
+struct Message tburst_msgtab = {
+  "TBURST", 0, 0, 6, 0, MFLG_SLOW, 0,
+  {m_ignore, m_ignore, ms_tburst, m_ignore}
+};
+
+#ifndef STATIC_MODULES
+void
+_modinit(void)
+{
+  mod_add_cmd(&tburst_msgtab);
+  hook_add_hook("burst_channel", (hookfn *)send_tburst);
+  set_tburst_capab();
+}
+
+void
+_moddeinit(void)
+{
+  mod_del_cmd(&tburst_msgtab);
+  hook_del_hook("burst_channel", (hookfn *)send_tburst);
+  unset_tburst_capab();
+}
+
+const char *_version = "$Revision: 1.11 $";
+#endif
+
+/* ms_tburst()
+ * 
+ *      parv[0] = sender prefix
+ *      parv[1] = channel timestamp
+ *      parv[2] = channel
+ *      parv[3] = topic timestamp
+ *      parv[4] = topic setter
+ *      parv[5] = topic
+ */
+static void ms_tburst(struct Client *client_p, struct Client *source_p,
+                    int parc, char *parv[])
+{
+  struct Channel *chptr;
+  time_t newchannelts;
+  time_t newtopicts;
+
+  newchannelts = atol(parv[1]);
+  newtopicts = atol(parv[3]);
+
+  if((chptr = hash_find_channel(parv[2])))
+  {
+    if(chptr->channelts < newchannelts)
+      return;
+
+    else if(chptr->channelts == newchannelts)
+    {
+      if(chptr->topic == NULL || (chptr->topic_time > newtopicts))
+	set_topic(source_p, chptr, newtopicts, parv[4], parv[5]);
+      else
+	return;
+    }
+
+    else
+      set_topic(source_p, chptr, newtopicts, parv[4], parv[5]);
+  }
+}
+
+static void set_topic(struct Client *source_p, struct Channel *chptr, 
+		      time_t newtopicts, char *topicwho, char *topic)
+{
+  set_channel_topic(chptr, topic, topicwho, newtopicts);
+
+  sendto_channel_local(ALL_MEMBERS, chptr, ":%s TOPIC %s :%s",
+		       ConfigServerHide.hide_servers ? me.name : source_p->name,
+		       chptr->chname, chptr->topic == NULL ? "" : chptr->topic);
+
+#ifdef TBURST_PROPAGATE
+  sendto_server(source_p, NULL, chptr, CAP_TBURST, NOCAPS, NOFLAGS,
+		":%s TBURST %ld %s %ld %s :%s",
+		source_p->name, chptr->channelts, chptr->chname,
+		chptr->topic_time, 
+                chptr->topic_info == NULL ? "" : chptr->topic_info,
+                chptr->topic == NULL ? "" : chptr->topic);
+#endif
+}
+
+static void set_tburst_capab()
+{
+  default_server_capabs |= CAP_TBURST;
+}
+
+static void unset_tburst_capab()
+{
+  default_server_capabs &= ~CAP_TBURST;
+}
+
+int send_tburst(struct hook_burst_channel *data)
+{
+  if(data->chptr->topic != NULL && IsCapable(data->client, CAP_TBURST))
+    sendto_one(data->client, ":%s TBURST %ld %s %ld %s :%s",
+               me.name, data->chptr->channelts, data->chptr->chname,
+	       data->chptr->topic_time, data->chptr->topic_info, 
+	       data->chptr->topic);
+
+  return 0;
+}
diff -uNrd ircd-hybrid-7rc3/modules/m_who.c ircd-hoho-2r15/modules/m_who.c
--- ircd-hybrid-7rc3/modules/m_who.c	Wed Jul  3 11:03:08 2002
+++ ircd-hoho-2r15/modules/m_who.c	Fri Dec 20 15:37:24 2002
@@ -603,7 +603,7 @@
 
   ircsprintf(status,"%c%s%s", 
 	     target_p->user->away ? 'G' : 'H',
-	     IsOper(target_p) ? "*" : "", op_flags );
+	     "", op_flags );
 
 #ifdef ANONOPS
   if(ConfigServerHide.hide_servers)
diff -uNrd ircd-hybrid-7rc3/modules/m_whois.c ircd-hoho-2r15/modules/m_whois.c
--- ircd-hybrid-7rc3/modules/m_whois.c	Thu Aug 15 11:00:59 2002
+++ ircd-hoho-2r15/modules/m_whois.c	Fri Dec 20 15:37:24 2002
@@ -456,7 +456,7 @@
     sendto_one(source_p, form_str(RPL_AWAY), me.name,
 	       source_p->name, target_p->name, target_p->user->away);
 
-  if (IsOper(target_p))
+  if (IsOper(target_p) && IsOper(source_p))
     {
       sendto_one(source_p, form_str(RPL_WHOISOPERATOR),
 		 me.name, source_p->name, target_p->name);
diff -uNrd ircd-hybrid-7rc3/src/channel.c ircd-hoho-2r15/src/channel.c
--- ircd-hybrid-7rc3/src/channel.c	Tue Aug 20 12:41:59 2002
+++ ircd-hoho-2r15/src/channel.c	Fri Dec 20 15:37:24 2002
@@ -365,6 +365,9 @@
   if (IsCapable(client_p, CAP_EX))
     send_mode_list(client_p, chptr->chname, &chptr->exceptlist, 'e', 0);
 
+  if (IsCapable(client_p, CAP_QU))
+	send_mode_list(client_p, chptr->chname, &chptr->quietlist, 'q', 0);
+
   if (IsCapable(client_p, CAP_IE))
     send_mode_list(client_p, chptr->chname, &chptr->invexlist, 'I', 0);
 }
@@ -406,6 +409,7 @@
   for (lp = top->head; lp; lp = lp->next)
   {
     banptr = lp->data;
+
     tlen = strlen(banptr->banstr);
     tlen++;
 
@@ -1051,6 +1055,7 @@
  *              - pointer to client to check access fo
  * output       - returns an int 0 if not banned,
  *                CHFL_BAN if banned
+ *                CHFL_QUIET if cannot send to channel
  *
  * IP_BAN_ALL from comstud
  * always on...
@@ -1061,16 +1066,15 @@
 is_banned(struct Channel *chptr, struct Client *who)
 {
   char src_host[NICKLEN + USERLEN + HOSTLEN + 6];
-  char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
 
   if (!IsPerson(who))
     return (0);
 
   ircsprintf(src_host,"%s!%s@%s", who->name, who->username, who->host);
-  ircsprintf(src_iphost,"%s!%s@%s", who->name, who->username,
-	     who->localClient->sockhost);
+//  ircsprintf(src_iphost,"%s!%s@%s", who->name, who->username,
+//	     who->localClient->sockhost);
 
-  return (check_banned(chptr, who, src_host, src_iphost));
+  return (check_banned(chptr, who, src_host, src_host));
 }
 
 /*
@@ -1082,6 +1086,7 @@
  *              - pointer to pre-formed nick!user@ip
  * output       - returns an int 0 if not banned,
  *                CHFL_BAN if banned
+ *                CHFL_QUIET if cannot send to channel
  *
  * IP_BAN_ALL from comstud
  * always on...
@@ -1095,16 +1100,34 @@
   dlink_node *except;
   struct Ban *actualBan = NULL;
   struct Ban *actualExcept = NULL;
+  int quiet_too = 0;
 
   for (ban = chptr->banlist.head; ban; ban = ban->next)
   {
     actualBan = ban->data;
-    if (match(actualBan->banstr, s) || match(actualBan->banstr, s2))
-      break;
-    else
+    if (match(actualBan->banstr, s) || match(actualBan->banstr, s2)) {
+		if(ConfigChannel.quiet_on_ban == 1)
+			quiet_too = CHFL_QUIET;
+		break;
+    } else {
       actualBan = NULL;
+	}
+  }
+
+  if(actualBan == NULL) {
+    for (ban = chptr->quietlist.head; ban; ban = ban->next)
+    {
+      actualBan = ban->data;
+      if (match(actualBan->banstr, s) || match(actualBan->banstr, s2)) {
+		quiet_too = CHFL_QUIET;
+		break;
+      } else {
+        actualBan = NULL;
+      }
+    }
   }
 
+
   if ((actualBan != NULL) && ConfigChannel.use_except)
   {
     for (except = chptr->exceptlist.head; except; except = except->next)
@@ -1118,7 +1141,7 @@
     }
   }
 
-  return ((actualBan ? CHFL_BAN : 0));
+  return ((actualBan ? CHFL_BAN | quiet_too : 0));
 }
 
 /* small series of "helper" functions */
@@ -1146,7 +1169,7 @@
   ircsprintf(src_iphost,"%s!%s@%s", source_p->name, source_p->username,
 	     source_p->localClient->sockhost);
 
-  if ((check_banned(chptr, source_p, src_host, src_iphost)) == CHFL_BAN)
+  if ((check_banned(chptr, source_p, src_host, src_iphost)) & CHFL_BAN)
     return (ERR_BANNEDFROMCHAN);
 
   if (chptr->mode.mode & MODE_INVITEONLY)
@@ -1288,7 +1311,7 @@
 int
 can_send(struct Channel *chptr, struct Client *source_p)
 {
-  if(MyClient(source_p) && find_channel_resv(chptr->chname))
+if(MyClient(source_p) && find_channel_resv(chptr->chname))
     return CAN_SEND_NO;
     
   if (is_any_op(chptr, source_p))
@@ -1298,14 +1321,11 @@
   if (IsServer(source_p))
     return CAN_SEND_OPV;
 
-  if (chptr->mode.mode & MODE_MODERATED)
+  if (chptr->mode.mode & MODE_MODERATED) 
     return CAN_SEND_NO;
 
-  if (ConfigChannel.quiet_on_ban && MyClient(source_p) &&
-      (is_banned(chptr, source_p) == CHFL_BAN))
-  {
-    return (CAN_SEND_NO);
-  }
+  if (is_banned(chptr, source_p) & CHFL_QUIET)
+    return CAN_SEND_NO;
 
   if (chptr->mode.mode & MODE_NOPRIVMSGS && !IsMember(source_p, chptr))
     return (CAN_SEND_NO);
diff -uNrd ircd-hybrid-7rc3/src/channel_mode.c ircd-hoho-2r15/src/channel_mode.c
--- ircd-hybrid-7rc3/src/channel_mode.c	Tue Aug 20 15:25:30 2002
+++ ircd-hoho-2r15/src/channel_mode.c	Fri Dec 20 15:37:24 2002
@@ -102,6 +102,10 @@
                     int *, char **, int *, int, int, char, void *,
                     const char *chname);
 
+static void chm_quiet(struct Client *, struct Client *,
+				    struct Channel *, int, int *, char **, int *,
+					int, int, char, void *, const char *chname);
+
 static void chm_except(struct Client *, struct Client *, struct Channel *,
                        int, int *, char **, int *, int, int, char, void *,
                        const char *chname);
@@ -149,7 +153,7 @@
 
 static int mode_limit;
 
-static int channel_capabs[] = { CAP_HOPS, CAP_AOPS, CAP_EX, CAP_IE, CAP_UID };
+static int channel_capabs[] = { CAP_HOPS, CAP_AOPS, CAP_EX, CAP_IE, CAP_UID, CAP_QU };
 
 #define NCHCAPS         (sizeof(channel_capabs)/sizeof(int))
 #define NCHCAP_COMBOS   (1 << NCHCAPS)
@@ -188,7 +192,7 @@
 }
 
 /*
- * Ban functions to work with mode +b/e/d/I
+ * Ban functions to work with mode +b/e/d/I/q
  */
 /* add the specified ID to the channel.. 
  *   -is 8/9/00 
@@ -220,6 +224,9 @@
     case CHFL_BAN:
       list = &chptr->banlist;
       break;
+    case CHFL_QUIET:
+      list = &chptr->quietlist;
+      break;
     case CHFL_EXCEPTION:
       list = &chptr->exceptlist;
       break;
@@ -287,6 +294,9 @@
 
   switch (type)
   {
+    case CHFL_QUIET:
+	  list = &chptr->quietlist;
+	  break;
     case CHFL_BAN:
       list = &chptr->banlist;
       break;
@@ -803,7 +813,7 @@
   /* dont allow halfops to set +-p, as this controls whether they can set
    * +-h or not.. all other simple modes are ok
    */
-  if((alev < CHACCESS_HALFOP) ||
+  if((alev < CHACCESS_HALFOP && !IsOper(source_p)) ||
     ((mode_type == MODE_PRIVATE) && (alev < CHACCESS_CHANOP)))
   {
     if (!(*errors & SM_ERR_NOOPS))
@@ -914,6 +924,7 @@
       DLINK_FOREACH(ptr, chptr->banlist.head)
       {
         banptr = ptr->data;
+
         sendto_one(client_p, form_str(RPL_BANLIST),
                    me.name, client_p->name, chname,
                    banptr->banstr, me.name, banptr->when);
@@ -923,6 +934,7 @@
       DLINK_FOREACH(ptr, chptr->banlist.head)
       {
         banptr = ptr->data;
+
         sendto_one(client_p, form_str(RPL_BANLIST),
                    me.name, client_p->name, chname,
                    banptr->banstr, banptr->who, banptr->when);
@@ -932,7 +944,7 @@
     return;
   }
 
-  if (alev < CHACCESS_HALFOP)
+  if (alev < CHACCESS_HALFOP && !IsOper(source_p))
   {
     if (!(*errors & SM_ERR_NOOPS))
       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
@@ -993,6 +1005,108 @@
 }
 
 static void
+chm_quiet(struct Client *client_p, struct Client *source_p,
+        struct Channel *chptr, int parc, int *parn,
+        char **parv, int *errors, int alev, int dir, char c, void *d,
+        const char *chname)
+{
+  char *mask;
+  char *raw_mask;
+  dlink_node *ptr;
+  struct Ban *banptr;
+
+
+if (dir == 0 || parc <= *parn)
+  {
+    if ((*errors & SM_ERR_RPL_B) != 0)
+      return;
+    *errors |= SM_ERR_RPL_B;
+
+#ifdef ANONOPS
+    if ((chptr->mode.mode & MODE_HIDEOPS) && (alev < CHACCESS_HALFOP))
+	  DLINK_FOREACH(ptr, chptr->quietlist.head)
+      {
+        banptr = ptr->data;
+        sendto_one(client_p, form_str(RPL_QUIETLIST),
+                   me.name, client_p->name, chname,
+                   banptr->banstr, me.name, banptr->when);
+      }
+    else
+#endif
+	  DLINK_FOREACH(ptr, chptr->quietlist.head)
+      {
+        banptr = ptr->data;
+        sendto_one(client_p, form_str(RPL_QUIETLIST),
+         me.name, client_p->name, chname,
+         banptr->banstr, banptr->who, banptr->when);
+      }
+    sendto_one(source_p, form_str(RPL_ENDOFQUIETLIST), me.name,
+               source_p->name, chname);
+    return;
+  }
+
+  if (alev < CHACCESS_HALFOP && !IsOper(source_p))
+  {
+    if (!(*errors & SM_ERR_NOOPS))
+      sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
+                 source_p->name, chname);
+    *errors |= SM_ERR_NOOPS;
+    return;
+  }
+
+  if (MyClient(source_p) && (++mode_limit > MAXMODEPARAMS))
+    return;
+
+  raw_mask = parv[(*parn)++];
+
+  if (IsServer(client_p))
+    mask = raw_mask;
+  else
+    mask = pretty_mask(raw_mask);
+
+  /* We'd have problems parsing this, hyb6 does it too */
+  if (strlen(mask) > (MODEBUFLEN - 2))
+    return;
+
+  /* if we're adding a NEW id */
+  if (dir == MODE_ADD)
+  {
+    if((add_id(source_p, chptr, mask, CHFL_QUIET) == 0) && MyClient(source_p))
+      return;
+
+    mode_changes[mode_count].letter = c;
+	mode_changes[mode_count].dir = MODE_ADD;
+    mode_changes[mode_count].caps = CAP_QU;
+    mode_changes[mode_count].nocaps = 0;
+    mode_changes[mode_count].mems = ALL_MEMBERS;
+    mode_changes[mode_count].id = NULL;
+    mode_changes[mode_count++].arg = mask;
+  }
+  else if (dir == MODE_DEL)
+  {
+    if (del_id(chptr, mask, CHFL_QUIET) != 0)
+    {
+      /* mask isn't a valid ban, check raw_mask */
+      if ((del_id(chptr, raw_mask, CHFL_QUIET) != 0)  && MyClient(source_p))
+      {
+        /* nope */
+        return;
+      }
+      mask = raw_mask;
+    }
+
+    mode_changes[mode_count].letter = c;
+	mode_changes[mode_count].dir = MODE_DEL;
+    mode_changes[mode_count].caps = CAP_QU;
+    mode_changes[mode_count].nocaps = 0;
+    mode_changes[mode_count].mems = ALL_MEMBERS;
+    mode_changes[mode_count].id = NULL;
+    mode_changes[mode_count++].arg = mask;
+  }
+}
+
+
+static void
 chm_except(struct Client *client_p, struct Client *source_p,
            struct Channel *chptr, int parc, int *parn,
            char **parv, int *errors, int alev, int dir, char c, void *d,
@@ -1016,7 +1130,7 @@
     return;
   }
 
-  if (alev < CHACCESS_HALFOP)
+  if (alev < CHACCESS_HALFOP && !IsOper(source_p))
   {
     if (!(*errors & SM_ERR_NOOPS))
       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
@@ -1234,7 +1348,7 @@
   int wasnt_hopped = 0;
 #endif
 
-  if (alev < CHACCESS_CHANOP)
+  if (alev < CHACCESS_CHANOP && !IsOper(source_p))
   {
     if (!(*errors & SM_ERR_NOOPS))
       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
@@ -1441,7 +1555,7 @@
  */
   if (alev <
       ((chptr->mode.mode & MODE_PRIVATE) ?
-        CHACCESS_CHANOP : CHACCESS_HALFOP))
+        CHACCESS_CHANOP : CHACCESS_HALFOP) && !IsOper(source_p))
   {
     if (!(*errors & SM_ERR_NOOPS))
       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
@@ -1583,7 +1697,7 @@
   char *opnick;
   struct Client *targ_p;
 
-  if (alev < CHACCESS_HALFOP)
+  if (alev < CHACCESS_HALFOP && !IsOper(source_p))
   {
     if (!(*errors & SM_ERR_NOOPS))
       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED), me.name,
@@ -1858,7 +1972,7 @@
   {chm_simple, (void *) MODE_NOPRIVMSGS},         /* n */
   {chm_op, NULL},                                 /* o */
   {chm_simple, (void *) MODE_PRIVATE},            /* p */
-  {chm_nosuch, NULL},                             /* q */
+  {chm_quiet, NULL},                             /* q */
   {chm_nosuch, NULL},                             /* r */
   {chm_simple, (void *) MODE_SECRET},             /* s */
   {chm_simple, (void *) MODE_TOPICLIMIT},         /* t */
diff -uNrd ircd-hybrid-7rc3/src/irc_string.c ircd-hoho-2r15/src/irc_string.c
--- ircd-hybrid-7rc3/src/irc_string.c	Thu May 30 22:21:03 2002
+++ ircd-hoho-2r15/src/irc_string.c	Fri Dec 20 15:37:24 2002
@@ -697,4 +697,34 @@
 }
 #endif
 
+char* strip_colour(char* string)
+{
+  char *c = string;
+  char *c2 = string;
+  /* c is source, c2 is target */
+  for (; c && *c; c++)
+    switch(*c)
+      {
+      case 3:
+    if (isdigit(c[1]))
+      {
+        c++;
+        if (isdigit(c[1]))
+          c++;
+        if (c[1] == ','&& isdigit(c[2]))
+          {
+        c+=2;
+        if (isdigit(c[1]))
+          c++;
+          }
+      }
+    break;
+      case 2: case 6: case 7: case 22: case 27: case 31:
+    break;
+      default:
+    *c2++ = *c;
+      }
+  *c2 = '\0';
+  return string;
+}
 
diff -uNrd ircd-hybrid-7rc3/src/ircd_lexer.l ircd-hoho-2r15/src/ircd_lexer.l
--- ircd-hybrid-7rc3/src/ircd_lexer.l	Mon Jul 22 01:08:01 2002
+++ ircd-hoho-2r15/src/ircd_lexer.l	Fri Dec 20 15:37:24 2002
@@ -155,6 +155,7 @@
 deny		{ return DENY; }
 description	{ return DESCRIPTION; }
 die		{ return DIE; }
+disable_auth    { return DISABLE_AUTH; }
 disable_hidden	{ return DISABLE_HIDDEN; }
 disable_local_channels { return DISABLE_LOCAL_CHANNELS; }
 disable_remote_commands	{ return DISABLE_REMOTE_COMMANDS; }
diff -uNrd ircd-hybrid-7rc3/src/ircd_parser.y ircd-hoho-2r15/src/ircd_parser.y
--- ircd-hybrid-7rc3/src/ircd_parser.y	Thu Aug 15 09:32:43 2002
+++ ircd-hoho-2r15/src/ircd_parser.y	Fri Dec 20 15:37:23 2002
@@ -117,6 +117,7 @@
 %token  DENY
 %token  DESCRIPTION
 %token  DIE
+%token  DISABLE_AUTH
 %token  DISABLE_HIDDEN
 %token  DISABLE_LOCAL_CHANNELS
 %token  DISABLE_REMOTE_COMMANDS
@@ -1960,6 +1961,7 @@
                     general_compression_level | general_client_flood |
                     general_throttle_time | general_havent_read_conf |
                     general_dot_in_ip6_addr | general_ping_cookie |
+                    general_disable_auth |
                     error;
 
 general_failed_oper_notice:   FAILED_OPER_NOTICE '=' TYES ';'
@@ -2316,6 +2318,15 @@
     PING_COOKIE '=' TNO ';'
   {
     ConfigFileEntry.ping_cookie = 0;
+  } ;
+
+general_disable_auth: DISABLE_AUTH '=' TYES ';'
+  {
+    ConfigFileEntry.disable_auth = 1;
+  } |
+    DISABLE_AUTH '=' TNO ';'
+  {
+    ConfigFileEntry.disable_auth = 0;
   } ;
 
 general_use_help: USE_HELP '=' TYES ';'
diff -uNrd ircd-hybrid-7rc3/src/messages.tab ircd-hoho-2r15/src/messages.tab
--- ircd-hybrid-7rc3/src/messages.tab	Mon Aug 19 21:02:29 2002
+++ ircd-hoho-2r15/src/messages.tab	Fri Dec 20 15:37:24 2002
@@ -428,7 +428,7 @@
 /* 401 ERR_NOSUCHNICK, */       ":%s 401 %s %s :No such nick/channel",
 /* 402 ERR_NOSUCHSERVER, */     ":%s 402 %s %s :No such server",
 /* 403 ERR_NOSUCHCHANNEL, */    ":%s 403 %s %s :No such channel",
-/* 404 ERR_CANNOTSENDTOCHAN, */ ":%s 404 %s %s :Cannot send to channel",
+/* 404 ERR_CANNOTSENDTOCHAN, */ ":%s 404 %s %s :What good is a phone call if you are unable to speak?",
 /* 405 ERR_TOOMANYCHANNELS, */  ":%s 405 %s %s :You have joined too many channels",
 /* 406 ERR_WASNOSUCHNICK, */    ":%s 406 %s %s :There was no such nickname",
 /* 407 ERR_TOOMANYTARGETS, */   ":%s 407 %s %s :Too many recipients.",
@@ -743,8 +743,8 @@
 /* 712 ERR_CHANOPEN */		":%s 713 %s %s :Channel is open.",
 /* 714 ERR_KNOCKONCHAN */	":%s 714 %s %s :You are already on that channel.",
 /* 715 ERR_KNOCKDISABLED */	":%s 715 %s :KNOCKs are disabled.",
-/* 716 */	NULL,
-/* 717 */	NULL,
+/* 716 RPL_QUIETLIST */		":%s 716 %s %s %s %s %lu",
+/* 717 RPL_ENDOFQUIETLIST */	":%s 717 %s %s :End of Channel Quiet List",
 /* 718 */	NULL,
 /* 719 */	NULL,
 /* 720 */	NULL,
diff -uNrd ircd-hybrid-7rc3/src/s_auth.c ircd-hoho-2r15/src/s_auth.c
--- ircd-hybrid-7rc3/src/s_auth.c	Fri Jul 19 11:51:34 2002
+++ ircd-hoho-2r15/src/s_auth.c	Fri Dec 20 15:37:24 2002
@@ -423,7 +423,9 @@
   adns_getaddr(&client->localClient->ip, client->localClient->aftype, client->localClient->dns_query);
   SetDNSPending(auth);
 
-  start_auth_query(auth);
+  if(ConfigFileEntry.disable_auth == 0) 
+    start_auth_query(auth);
+
   link_auth_request(auth, &auth_poll_list);
 }
 
diff -uNrd ircd-hybrid-7rc3/src/s_serv.c ircd-hoho-2r15/src/s_serv.c
--- ircd-hybrid-7rc3/src/s_serv.c	Thu Aug 15 10:15:37 2002
+++ ircd-hoho-2r15/src/s_serv.c	Fri Dec 20 15:37:24 2002
@@ -104,6 +104,7 @@
   { "ZIP",   CAP_ZIP },
   { "TBURST", CAP_TBURST },
   { "PARA",  CAP_PARA },
+  { "QU",    CAP_QU },
   { 0,           0 }
 };
 
