diff -uNrd -x CVS ircd-comstud-1.12-REL/ChangeLog ircd-devel/ChangeLog
--- ircd-comstud-1.12-REL/ChangeLog	Thu Dec  7 04:27:35 2000
+++ ircd-devel/ChangeLog	Tue Dec  5 12:59:09 2000
@@ -1,23 +1,26 @@
+2000/12/05  --- humble's FreeBSD happiness package 1.0 is rolled
 
-2000/12/07  --- 1.12-REL done
-
-2000/12/07:
-   -- numeric fix
-
-2000/11/23:
-   -- disallow '%' in hostnames
-
-2000/11/18:
-   -- subarg_comma was same as subarg_space.  Major oops.  How did that
-     happen?  Broke things like PRIVMSG nick1,nick2 etc..
+      This will work ONLY under FreeBSD... but you'll like it :P
 
-2000/11/07:
-   -- added 'checkhostname' flag to allow {}.  if an allow w/ an 'ipaddr'
-     has this flag, hostname matching will occur even when a connecting
-     client matches that ip in the allow{}.  ie, a hostname match can
-     override.
+   -- Add class directive "inherit" which copied settings from anothe class
+   -- Finish support for allow passwords
+   -- Gutted some evilness in the send and network polling routines
+   -- Totally rewrote poller to use kqueue() for SIGNIFICANT improvements
+   -- Added proper stats I displays for TCM happiness
+   -- Hid the "hidden" classes from stats y
+   -- Put more check on ircd.so, don't reload (and crash) if its not there
+   -- Redesigned the makefile and autoconf structure, much more soon...
+   -- Added FreeBSD accf (accept filter) support for efficiency
+   -- Added "sendbuf" and "recvbuf" socket buffer controls under class
+   -- Cleaned up some various bits of code here and there
+   -- Probably more that I can't recall right now...
 
+      MUCH MUCH *MUCH* more to come, some major rewrites of key components
+      on the way to a total ircd rewrite for the betterment of all mankind.
 
+      Much of this development follows EFNeXt but I try to keep the neat
+      stuff up to date for the EFNet release...
+ 
 2000/10/24  --- 1.11-REL done
 
 2000/10/24:
diff -uNrd -x CVS ircd-comstud-1.12-REL/Makefile.in ircd-devel/Makefile.in
--- ircd-comstud-1.12-REL/Makefile.in	Mon Oct 23 01:12:21 2000
+++ ircd-devel/Makefile.in	Sun Dec 10 09:10:13 2000
@@ -1,98 +1,35 @@
+CFLAGS=	-g -pipe -O
+CFLAGS+= -fschedule-insns2 -funroll-loops
+# 686-based optimizations
+CFLAGS+= -mcpu=pentiumpro -march=pentiumpro -mwide-multiply
+CFLAGS+= -malign-functions=4 -malign-double
+# Break debugging, very slow compiles
+#CFLAGS+= -fomit-frame-pointer -fexpensive-optimizations
 
-#
-##   IRC - Internet Relay Chat, Makefile
-##   Copyright (C) 1999 Chris Behrens
-##
-##   Portions Copyright (C) 1990 Jarkko Oikarinen and
-##                      University of Oulu, Computing Center
-##
-##   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.
-#
-
-CC=gcc
-#PROFIL=-pg
-#PROFILLIBS=-ldl
-CFLAGS=-Iinclude -g -Wall ${PROFIL} ${CFLAGS.$@}
-# -DFD_SETSIZE=8192
-LFLAGS=${LFLAGS.$@}
-
-INC=include/access.h include/hash.h include/res.h \
-	include/cidr.h include/iphash.h include/send.h \
-	include/commands.h include/ircd_includes.h include/setup.h \
-	include/conf.h include/log.h include/structs.h \
-	include/config.h include/match.h include/support.h \
-	include/defines.h include/misc.h include/vars.h \
-	include/mysocket.h include/version.h \
-	include/fdlist.h include/numeric.h include/whowas.h \
-	include/fileio.h include/queue.h
-
-PROGS=ircd
-UTILS=utils/cidrtest utils/mkpasswd
-OBJS.utils=utils/cidrtest.o utils/mkpasswd.o
-SRCS.utils=${OBJS.utils:%.o=%.c}
-
-OBJS.utils/cidrtest=utils/cidrtest.o lib/cidr.o lib/match.o
-LFLAGS.utils/cidrtest=@LIBS@
-OBJS.utils/mkpasswd=utils/mkpasswd.o
-LFLAGS.utils/mkpasswd=@LIBS@
-
-OBJS=${OBJS.ircd.so} ${OBJS.ircd} ${OBJS.utils}
-
-OBJS.ircd.so=lib/access.o lib/cidr.o lib/commands.o lib/conf.o \
-		lib/fdlist.o lib/fileio.o lib/hash.o lib/iphash.o \
-		lib/log.o lib/match.o lib/misc.o lib/mysocket.o \
-		lib/numeric.o lib/queue.o lib/res.o \
-		lib/send.o lib/support.o lib/vars.o \
-		lib/whowas.o lib/ircd.o confparse/configparse.o
-SRCS.ircd.so=${OBJS.ircd.so:%.o=%.c}
-OBJS.ircd=source/ircdcore.o
-SRCS.ircd=${OBJS.ircd:%.o=%.c}
-LFLAGS.ircd=@LIBS@ ${PROFILLIBS}
-
-
-ALL=${PROGS} ${UTILS}
-
-all: ${ALL}
-
-ircd.so:	${OBJS.ircd.so}
-	ld -G ${OBJS.$@} -o $@
-
-${PROGS} ${UTILS}:
-	${CC} -o $@ ${OBJS.$@} ${LFLAGS}
+SHELL=	@SHELL@
+SUBDIRS= lib source utils
 
-ircd:   ircd.so ${OBJS.ircd} ${INC}
-${OBJS.ircd}: ${SRCS.ircd} ${INC}
-${OBJS.ircd.so}: ${SRCS.ircd.so} ${INC}
-${OBJS.utils}: ${SRCS.utils}
-${UTILS}: ${OBJS.utils}
-${OBJS}:
+OBJS=	ircd ircd.so
 
-.c.o:
-	${CC} ${CFLAGS} -c $< -o $@
+all:
+	@for x in ${SUBDIRS}; \
+	do \
+		( cd $$x; echo "Making $@ in $$x"; \
+		${SHELL} -c "${MAKE} CFLAGS=\"${CFLAGS}\" $@"; ); \
+	done; \
 
 clean:
-	rm -rf ${ALL} ${OBJS} core ircd.pid ircd.so ircd.so.old
+	@for x in ${SUBDIRS}; \
+	do \
+		( cd $$x; echo "Making $@ in $$x"; \
+		${SHELL} -c "${MAKE} CFLAGS=\"${CFLAGS}\" $@"; ); \
+	done;
+	rm -f ${OBJS} core ircd.core *.~
 
 distclean:	clean
-	rm -f config.log config.cache config.status include/setup.h Makefile
-
--lresolv:
-
--lnsl:
-
--lcrypt:
-
--lsocket:
-
+	@for x in ${SUBDIRS}; \
+	do \
+		( cd $$x; echo "Making $@ in $$x"; \
+		${SHELL} -c "${MAKE} CFLAGS=\"${CFLAGS}\" $@"; ); \
+	done;
+	rm -f Makefile config.cache config.log config.status include/setup.h
diff -uNrd -x CVS ircd-comstud-1.12-REL/config.guess ircd-devel/config.guess
--- ircd-comstud-1.12-REL/config.guess	Wed Dec 31 19:00:00 1969
+++ ircd-devel/config.guess	Tue Dec  5 12:25:14 2000
@@ -0,0 +1,951 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
+#
+# This file 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Written by Per Bothner <bothner@cygnus.com>.
+# The master version of this file is at the FSF in /home/gd/gnu/lib.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit system type (host/target name).
+#
+# Only a few systems have been added to this list; please add others
+# (but try to keep the structure clean).
+#
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 8/24/94.)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	cat <<EOF >dummy.s
+	.globl main
+	.ent main
+main:
+	.frame \$30,0,\$26,0
+	.prologue 0
+	.long 0x47e03d80 # implver $0
+	lda \$2,259
+	.long 0x47e20c21 # amask $2,$1
+	srl \$1,8,\$2
+	sll \$2,2,\$2
+	sll \$0,3,\$0
+	addl \$1,\$0,\$0
+	addl \$2,\$0,\$0
+	ret \$31,(\$26),1
+	.end main
+EOF
+	${CC-cc} dummy.s -o dummy 2>/dev/null
+	if test "$?" = 0 ; then
+		./dummy
+		case "$?" in
+			7)
+				UNAME_MACHINE="alpha"
+				;;
+			15)
+				UNAME_MACHINE="alphaev5"
+				;;
+			14)
+				UNAME_MACHINE="alphaev56"
+				;;
+			10)
+				UNAME_MACHINE="alphapca56"
+				;;
+			16)
+				UNAME_MACHINE="alphaev6"
+				;;
+		esac
+	fi
+	rm -f dummy.s dummy
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+	exit 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-cbm-sysv4
+	exit 0;;
+    amiga:NetBSD:*:*)
+      echo m68k-cbm-netbsd${UNAME_RELEASE}
+      exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit 0 ;;
+    arc64:OpenBSD:*:*)
+	echo mips64el-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hkmips:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    arm32:NetBSD:*:*)
+	echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    SR2?01:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit 0 ;;
+    NILE:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:NetBSD:*:*)
+	echo m68k-atari-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3*:NetBSD:*:*)
+	echo m68k-sun-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:NetBSD:*:*)
+	echo m68k-apple-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:NetBSD:*:*)
+        echo powerpc-apple-netbsd${UNAME_RELEASE}
+        exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	sed 's/^	//' << EOF >dummy.c
+	int main (argc, argv) int argc; char **argv; {
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	${CC-cc} dummy.c -o dummy \
+	  && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm dummy.c dummy && exit 0
+	rm -f dummy.c dummy
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
+	if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
+	     -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	fi
+        else echo i586-dg-dgux${UNAME_RELEASE}
+        fi
+ 	exit 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i?86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		sed 's/^		//' << EOF >dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+		rm -f dummy.c dummy
+		echo rs6000-ibm-aix3.2.5
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit 0 ;;
+    *:AIX:*:4)
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=4.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 )
+              sed 's/^              //' << EOF >dummy.c
+              #include <stdlib.h>
+              #include <unistd.h>
+              
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif 
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+              
+                  switch (cpu) 
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0: 
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits) 
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif 
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+	(${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
+	rm -f dummy.c dummy
+	esac
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	sed 's/^	//' << EOF >dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+	rm -f dummy.c dummy
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i?86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*X-MP:*:*:*)
+	echo xmp-cray-unicos
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE}
+	exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+	exit 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE}
+	exit 0 ;;
+    CRAY-2:*:*:*)
+	echo cray2-cray-unicos
+        exit 0 ;;
+    F300:UNIX_System_V:*:*)
+        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    F301:UNIX_System_V:*:*)
+       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
+       exit 0 ;;
+    hp3[0-9][05]:NetBSD:*:*)
+	echo m68k-hp-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    i?86:BSD/386:*:* | *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit 0 ;;
+    *:NetBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    *:Linux:*:*)
+	# uname on the ARM produces all sorts of strangeness, and we need to
+	# filter it out.
+	case "$UNAME_MACHINE" in
+	  arm* | sa110*)	      UNAME_MACHINE="arm" ;;
+	esac
+
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us.
+	ld_help_string=`ld --help 2>&1`
+	ld_supported_emulations=`echo $ld_help_string \
+			 | sed -ne '/supported emulations:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported emulations: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_emulations" in
+	  i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
+	  i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
+	  sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+	  armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+	  m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+	  elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
+	esac
+
+	if test "${UNAME_MACHINE}" = "alpha" ; then
+		sed 's/^	//'  <<EOF >dummy.s
+		.globl main
+		.ent main
+	main:
+		.frame \$30,0,\$26,0
+		.prologue 0
+		.long 0x47e03d80 # implver $0
+		lda \$2,259
+		.long 0x47e20c21 # amask $2,$1
+		srl \$1,8,\$2
+		sll \$2,2,\$2
+		sll \$0,3,\$0
+		addl \$1,\$0,\$0
+		addl \$2,\$0,\$0
+		ret \$31,(\$26),1
+		.end main
+EOF
+		LIBC=""
+		${CC-cc} dummy.s -o dummy 2>/dev/null
+		if test "$?" = 0 ; then
+			./dummy
+			case "$?" in
+			7)
+				UNAME_MACHINE="alpha"
+				;;
+			15)
+				UNAME_MACHINE="alphaev5"
+				;;
+			14)
+				UNAME_MACHINE="alphaev56"
+				;;
+			10)
+				UNAME_MACHINE="alphapca56"
+				;;
+			16)
+				UNAME_MACHINE="alphaev6"
+				;;
+			esac	
+
+			objdump --private-headers dummy | \
+			  grep ld.so.1 > /dev/null
+			if test "$?" = 0 ; then
+				LIBC="libc1"
+			fi
+		fi	
+		rm -f dummy.s dummy
+		echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+	elif test "${UNAME_MACHINE}" = "mips" ; then
+	  cat >dummy.c <<EOF
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+	  rm -f dummy.c dummy
+	else
+	  # Either a pre-BFD a.out linker (linux-gnuoldld)
+	  # or one that does not give us useful --help.
+	  # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+	  # If ld does not provide *any* "supported emulations:"
+	  # that means it is gnuoldld.
+	  echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+	  test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+	  case "${UNAME_MACHINE}" in
+	  i?86)
+	    VENDOR=pc;
+	    ;;
+	  *)
+	    VENDOR=unknown;
+	    ;;
+	  esac
+	  # Determine whether the default compiler is a.out or elf
+	  cat >dummy.c <<EOF
+#include <features.h>
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __ELF__
+# ifdef __GLIBC__
+#  if __GLIBC__ >= 2
+    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+# endif
+#else
+  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+	  rm -f dummy.c dummy
+	fi ;;
+# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
+# are messed up and put the nodename in both sysname and nodename.
+    i?86:DYNIX/ptx:4*:*)
+	echo i386-sequent-sysv4
+	exit 0 ;;
+    i?86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit 0 ;;
+    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+	fi
+	exit 0 ;;
+    i?86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit 0 ;;
+    i?86:UnixWare:*:*)
+	if /bin/uname -X 2>/dev/null >/dev/null ; then
+	  (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+	    && UNAME_MACHINE=i586
+	fi
+	echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
+	exit 0 ;;
+    pc:*:*:*)
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i?86:LynxOS:2.*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit 0 ;;
+    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:*:6*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit 0 ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit 0 ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+cat >dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+  printf ("vax-dec-bsd\n"); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
+rm -f dummy.c dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+#echo '(Unable to guess system type)' 1>&2
+
+exit 1
diff -uNrd -x CVS ircd-comstud-1.12-REL/config.sub ircd-devel/config.sub
--- ircd-comstud-1.12-REL/config.sub	Wed Dec 31 19:00:00 1969
+++ ircd-devel/config.sub	Tue Dec  5 12:25:04 2000
@@ -0,0 +1,955 @@
+#! /bin/sh
+# Configuration validation subroutine script, version 1.1.
+#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file 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.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+if [ x$1 = x ]
+then
+	echo Configuration name missing. 1>&2
+	echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
+	echo "or     $0 ALIAS" 1>&2
+	echo where ALIAS is a recognized configuration type. 1>&2
+	exit 1
+fi
+
+# First pass through any local machine types.
+case $1 in
+	*local*)
+		echo $1
+		exit 0
+		;;
+	*)
+	;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  linux-gnu*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple)
+		os=
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+		| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
+		| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
+		| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
+		| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
+		| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
+		| mipstx39 | mipstx39el \
+		| sparc | sparclet | sparclite | sparc64 | v850)
+		basic_machine=$basic_machine-unknown
+		;;
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i[34567]86)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+	      | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+	      | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+	      | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
+	      | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
+	      | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+	      | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+	      | sparc64-* | mips64-* | mipsel-* \
+	      | mips64el-* | mips64orion-* | mips64orionel-*  \
+	      | mipstx39-* | mipstx39el-* \
+	      | f301-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-cbm
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-cbm
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-cbm
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	cray2)
+		basic_machine=cray2-cray
+		os=-unicos
+		;;
+	[ctj]90-cray)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i[34567]86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i[34567]86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i[34567]86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i[34567]86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	mipsel*-linux*)
+		basic_machine=mipsel-unknown
+		os=-linux-gnu
+		;;
+	mips*-linux*)
+		basic_machine=mips-unknown
+		os=-linux-gnu
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+        pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | nexen)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | k6 | 6x86)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | nexen-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | k6-* | 6x86-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=rs6000-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+	        ;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+	        ;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	xmp)
+		basic_machine=xmp-cray
+		os=-unicos
+		;;
+        xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	mips)
+		if [ x$os = x-linux-gnu ]; then
+			basic_machine=mips-unknown
+		else
+			basic_machine=mips-mips
+		fi
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sparc)
+		basic_machine=sparc-sun
+		;;
+        cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-ns2 )
+	        os=-nextstep2
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+        *-gould)
+		os=-sysv
+		;;
+        *-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+        *-sgi)
+		os=-irix
+		;;
+        *-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f301-fujitsu)
+		os=-uxpv
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
diff -uNrd -x CVS ircd-comstud-1.12-REL/configure ircd-devel/configure
--- ircd-comstud-1.12-REL/configure	Thu Jun  3 03:56:32 1999
+++ ircd-devel/configure	Tue Dec  5 12:29:02 2000
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# From configure.in 1.2# Guess values for system-dependent variables and create Makefiles.
+# 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.
 #
@@ -522,11 +522,123 @@
 
 
 
+PACKAGE=ircd-comstud
+VERSION=1.11
+
+
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; 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 $srcdir $srcdir/.. $srcdir/../.." 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.
+
+
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+#    configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+#    same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+#    as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+esac
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:578: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+    fi ;;
+  *) host_alias=$nonopt ;;
+  esac ;;
+esac
+
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking target system type""... $ac_c" 1>&6
+echo "configure:599: checking target system type" >&5
+
+target_alias=$target
+case "$target_alias" in
+NONE)
+  case $nonopt in
+  NONE) target_alias=$host_alias ;;
+  *) target_alias=$nonopt ;;
+  esac ;;
+esac
+
+target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$target" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:617: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+  case $nonopt in
+  NONE) build_alias=$host_alias ;;
+  *) build_alias=$nonopt ;;
+  esac ;;
+esac
+
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
+test "$host_alias" != "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
 
 # 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:530: checking for $ac_word" >&5
+echo "configure:642: 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
@@ -556,7 +668,7 @@
   # 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:560: checking for $ac_word" >&5
+echo "configure:672: 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
@@ -607,7 +719,7 @@
       # 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:611: checking for $ac_word" >&5
+echo "configure:723: 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
@@ -639,7 +751,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:643: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:755: 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.
@@ -650,12 +762,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 654 "configure"
+#line 766 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:771: \"$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
@@ -681,12 +793,12 @@
   { 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:685: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:797: 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:690: checking whether we are using GNU C" >&5
+echo "configure:802: 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
@@ -695,7 +807,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:811: \"$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
@@ -714,7 +826,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:718: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:830: 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
@@ -746,7 +858,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:750: checking how to run the C preprocessor" >&5
+echo "configure:862: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -761,13 +873,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 765 "configure"
+#line 877 "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:771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:883: \"$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
   :
@@ -778,13 +890,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 782 "configure"
+#line 894 "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:788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:900: \"$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
   :
@@ -795,13 +907,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 799 "configure"
+#line 911 "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:805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:917: \"$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
   :
@@ -825,32 +937,37 @@
 fi
 echo "$ac_t""$CPP" 1>&6
 
-echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:830: checking for AIX" >&5
-cat > conftest.$ac_ext <<EOF
-#line 832 "configure"
-#include "confdefs.h"
-#ifdef _AIX
-  yes
-#endif
-
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "yes" >/dev/null 2>&1; then
-  rm -rf conftest*
-  echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
-#define _ALL_SOURCE 1
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:942: 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
-  rm -rf conftest*
   echo "$ac_t""no" 1>&6
+  SET_MAKE="MAKE=${MAKE-make}"
 fi
-rm -f conftest*
+
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:854: checking for POSIXized ISC" >&5
+echo "configure:971: 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
@@ -872,13 +989,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:876: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:993: 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 882 "configure"
+#line 999 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -896,7 +1013,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 900 "configure"
+#line 1017 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -917,64 +1034,178 @@
   fi
 fi
 
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:1039: checking for working const" >&5
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1044 "configure"
+#include "confdefs.h"
 
-for ac_prog in sum cksum
-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:927: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_SUM'+set}'`\" = set"; then
+int main() {
+
+/* Ultrix mips cc rejects this.  */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this.  */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this.  */
+struct point {int x, y;};
+static struct point const zero = {0,0};
+/* AIX XL C 1.02.0.0 rejects this.
+   It does not let you subtract one const X* pointer from another in an arm
+   of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this.  */
+  char *t;
+  char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+  *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+  int x[] = {25, 17};
+  const int *foo = &x[0];
+  ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+  typedef const int *iptr;
+  iptr p = 0;
+  ++p;
+}
+{ /* AIX XL C 1.02.0.0 rejects this saying
+     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+  struct s { int j; const int *ap[3]; };
+  struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+  const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:1093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_const=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_const=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+  cat >> confdefs.h <<\EOF
+#define const 
+EOF
+
+fi
+
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:1114: checking for inline" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  case "$SUM" in
-  /*)
-  ac_cv_path_SUM="$SUM" # Let the user override the test with a path.
-  ;;
-  ?:/*)			 
-  ac_cv_path_SUM="$SUM" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="/usr/ucb:$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_SUM="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat > conftest.$ac_ext <<EOF
+#line 1121 "configure"
+#include "confdefs.h"
+
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:1128: \"$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
-SUM="$ac_cv_path_SUM"
-if test -n "$SUM"; then
-  echo "$ac_t""$SUM" 1>&6
+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
+
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+echo "configure:1154: checking return type of signal handlers" >&5
+if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-  echo "$ac_t""no" 1>&6
+  cat > conftest.$ac_ext <<EOF
+#line 1159 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int main() {
+int i;
+; return 0; }
+EOF
+if { (eval echo configure:1176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_type_signal=void
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_type_signal=int
+fi
+rm -f conftest*
 fi
 
-test -n "$SUM" && break
-done
-test -n "$SUM" || SUM="true"
+echo "$ac_t""$ac_cv_type_signal" 1>&6
+cat >> confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
 
 
-for ac_hdr in crypt.h stropts.h time.h sys/time.h sys/ioctl.h sys/filio.h
+
+for ac_hdr in crypt.h stropts.h time.h sys/time.h sys/ioctl.h sys/filio.h sys/event.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:968: checking for $ac_hdr" >&5
+echo "configure:1199: 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 973 "configure"
+#line 1204 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1209: \"$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*
@@ -1002,7 +1233,7 @@
 
 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:1006: checking for crypt in -lcrypt" >&5
+echo "configure:1237: 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
@@ -1010,7 +1241,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1014 "configure"
+#line 1245 "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
@@ -1021,7 +1252,7 @@
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:1025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1256: \"$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
@@ -1048,27 +1279,27 @@
   echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:1053: checking for socket in -lsocket" >&5
-ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for descrypt in -lcrypt""... $ac_c" 1>&6
+echo "configure:1284: checking for descrypt in -lcrypt" >&5
+ac_lib_var=`echo crypt'_'descrypt | 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"
+LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1061 "configure"
+#line 1292 "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();
+char descrypt();
 
 int main() {
-socket()
+descrypt()
 ; return 0; }
 EOF
-if { (eval echo configure:1072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1303: \"$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
@@ -1083,28 +1314,28 @@
 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' \
+    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="-lsocket $LIBS"
+  LIBS="-lcrypt $LIBS"
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for socket in -lnsl""... $ac_c" 1>&6
-echo "configure:1100: checking for socket in -lnsl" >&5
-ac_lib_var=`echo nsl'_'socket | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+echo "configure:1331: 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="-lnsl  $LIBS"
+LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1108 "configure"
+#line 1339 "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
@@ -1115,7 +1346,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:1119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1350: \"$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
@@ -1130,39 +1361,39 @@
 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 nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    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="-lnsl $LIBS"
+  LIBS="-lsocket $LIBS"
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for res_init in -lresolv""... $ac_c" 1>&6
-echo "configure:1147: checking for res_init in -lresolv" >&5
-ac_lib_var=`echo resolv'_'res_init | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for socket in -lnsl""... $ac_c" 1>&6
+echo "configure:1378: checking for socket in -lnsl" >&5
+ac_lib_var=`echo nsl'_'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="-lresolv  $LIBS"
+LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1155 "configure"
+#line 1386 "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 res_init();
+char socket();
 
 int main() {
-res_init()
+socket()
 ; return 0; }
 EOF
-if { (eval echo configure:1166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1397: \"$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
@@ -1177,39 +1408,39 @@
 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 resolv | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="-lresolv $LIBS"
+  LIBS="-lnsl $LIBS"
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:1194: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for res_init in -lresolv""... $ac_c" 1>&6
+echo "configure:1425: checking for res_init in -lresolv" >&5
+ac_lib_var=`echo resolv'_'res_init | 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"
+LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1202 "configure"
+#line 1433 "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();
+char res_init();
 
 int main() {
-dlopen()
+res_init()
 ; return 0; }
 EOF
-if { (eval echo configure:1213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1444: \"$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
@@ -1224,166 +1455,166 @@
 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' \
+    ac_tr_lib=HAVE_LIB`echo resolv | 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"
+  LIBS="-lresolv $LIBS"
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
 
-echo $ac_n "checking for getpagesize""... $ac_c" 1>&6
-echo "configure:1242: checking for getpagesize" >&5
-if eval "test \"`echo '$''{'ac_cv_func_getpagesize'+set}'`\" = set"; then
+echo $ac_n "checking for select""... $ac_c" 1>&6
+echo "configure:1473: checking for select" >&5
+if eval "test \"`echo '$''{'ac_cv_func_select'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1247 "configure"
+#line 1478 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char getpagesize(); below.  */
+    which can conflict with char select(); 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 getpagesize();
+char select();
 
 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_getpagesize) || defined (__stub___getpagesize)
+#if defined (__stub_select) || defined (__stub___select)
 choke me
 #else
-getpagesize();
+select();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:1270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_getpagesize=yes"
+  eval "ac_cv_func_select=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_getpagesize=no"
+  eval "ac_cv_func_select=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'getpagesize`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'select`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
-#define HAVE_GETPAGESIZE 1
+#define HAVE_SELECT 1
 EOF
 
 else
   echo "$ac_t""no" 1>&6
-echo $ac_n "checking for sysconf""... $ac_c" 1>&6
-echo "configure:1291: checking for sysconf" >&5
-if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+fi
+
+echo $ac_n "checking for poll""... $ac_c" 1>&6
+echo "configure:1524: 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 1296 "configure"
+#line 1529 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char sysconf(); below.  */
+    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 sysconf();
+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_sysconf) || defined (__stub___sysconf)
+#if defined (__stub_poll) || defined (__stub___poll)
 choke me
 #else
-sysconf();
+poll();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:1319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_sysconf=yes"
+  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_sysconf=no"
+  eval "ac_cv_func_poll=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'sysconf`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'poll`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
-#define HAVE_SYSCONF 1
+#define HAVE_POLL 1
 EOF
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
-fi
-
-echo $ac_n "checking for poll""... $ac_c" 1>&6
-echo "configure:1344: checking for poll" >&5
-if eval "test \"`echo '$''{'ac_cv_func_poll'+set}'`\" = set"; then
+echo $ac_n "checking for kqueue""... $ac_c" 1>&6
+echo "configure:1575: checking for kqueue" >&5
+if eval "test \"`echo '$''{'ac_cv_func_kqueue'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1349 "configure"
+#line 1580 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char poll(); below.  */
+    which can conflict with char kqueue(); 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();
+char kqueue();
 
 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)
+#if defined (__stub_kqueue) || defined (__stub___kqueue)
 choke me
 #else
-poll();
+kqueue();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_poll=yes"
+  eval "ac_cv_func_kqueue=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_poll=no"
+  eval "ac_cv_func_kqueue=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'poll`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'kqueue`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
-#define HAVE_POLL 1
+#define HAVE_KQUEUE 1
 EOF
 
 else
@@ -1391,12 +1622,12 @@
 fi
 
 echo $ac_n "checking for dn_skipname""... $ac_c" 1>&6
-echo "configure:1395: checking for dn_skipname" >&5
+echo "configure:1626: checking for dn_skipname" >&5
 if eval "test \"`echo '$''{'ac_cv_func_dn_skipname'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1400 "configure"
+#line 1631 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dn_skipname(); below.  */
@@ -1419,7 +1650,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dn_skipname=yes"
 else
@@ -1443,12 +1674,12 @@
 fi
 
 echo $ac_n "checking for mmap""... $ac_c" 1>&6
-echo "configure:1447: checking for mmap" >&5
+echo "configure:1678: checking for mmap" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1452 "configure"
+#line 1683 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char mmap(); below.  */
@@ -1471,7 +1702,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_mmap=yes"
 else
@@ -1493,13 +1724,115 @@
   echo "$ac_t""no" 1>&6
 fi
 
+echo $ac_n "checking for getpagesize""... $ac_c" 1>&6
+echo "configure:1729: checking for getpagesize" >&5
+if eval "test \"`echo '$''{'ac_cv_func_getpagesize'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1734 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char getpagesize(); 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 getpagesize();
+
+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_getpagesize) || defined (__stub___getpagesize)
+choke me
+#else
+getpagesize();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_getpagesize=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_getpagesize=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'getpagesize`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_GETPAGESIZE 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for sysconf""... $ac_c" 1>&6
+echo "configure:1778: checking for sysconf" >&5
+if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1783 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char sysconf(); 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 sysconf();
+
+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_sysconf) || defined (__stub___sysconf)
+choke me
+#else
+sysconf();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_sysconf=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_sysconf=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'sysconf`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_SYSCONF 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
 echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
-echo "configure:1498: checking for vsnprintf" >&5
+echo "configure:1831: checking for vsnprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1503 "configure"
+#line 1836 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vsnprintf(); below.  */
@@ -1522,7 +1855,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vsnprintf=yes"
 else
@@ -1545,12 +1878,12 @@
 fi
 
 echo $ac_n "checking for strerror""... $ac_c" 1>&6
-echo "configure:1549: checking for strerror" >&5
+echo "configure:1882: checking for strerror" >&5
 if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1554 "configure"
+#line 1887 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char strerror(); below.  */
@@ -1573,7 +1906,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_strerror=yes"
 else
@@ -1594,12 +1927,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for sys_errlist declaration""... $ac_c" 1>&6
-echo "configure:1598: checking for sys_errlist declaration" >&5
+echo "configure:1931: checking for sys_errlist declaration" >&5
 	if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1603 "configure"
+#line 1936 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1612,7 +1945,7 @@
 }
 
 EOF
-if { (eval echo configure:1616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define SYS_ERRLIST_DECLARED 1
@@ -1630,45 +1963,9 @@
 fi
 
 
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:1635: checking return type of signal handlers" >&5
-if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1640 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int main() {
-int i;
-; return 0; }
-EOF
-if { (eval echo configure:1657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_type_signal=void
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_type_signal=int
-fi
-rm -f conftest*
-fi
+SHLIB_CC="${CC} -fPIC"
+SHLIB_LD="${CC} -shared"
 
-echo "$ac_t""$ac_cv_type_signal" 1>&6
-cat >> confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
-EOF
 
 
 
@@ -1772,7 +2069,7 @@
 
 ac_given_srcdir=$srcdir
 
-trap 'rm -fr `echo "Makefile:Makefile.in include/setup.h:include/setup.h.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile lib/Makefile source/Makefile utils/Makefile include/setup.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -1804,9 +2101,28 @@
 s%@oldincludedir@%$oldincludedir%g
 s%@infodir@%$infodir%g
 s%@mandir@%$mandir%g
+s%@PACKAGE@%$PACKAGE%g
+s%@VERSION@%$VERSION%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@target@%$target%g
+s%@target_alias@%$target_alias%g
+s%@target_cpu@%$target_cpu%g
+s%@target_vendor@%$target_vendor%g
+s%@target_os@%$target_os%g
+s%@build@%$build%g
+s%@build_alias@%$build_alias%g
+s%@build_cpu@%$build_cpu%g
+s%@build_vendor@%$build_vendor%g
+s%@build_os@%$build_os%g
 s%@CC@%$CC%g
 s%@CPP@%$CPP%g
-s%@SUM@%$SUM%g
+s%@SET_MAKE@%$SET_MAKE%g
+s%@SHLIB_CC@%$SHLIB_CC%g
+s%@SHLIB_LD@%$SHLIB_LD%g
 
 CEOF
 EOF
@@ -1848,7 +2164,7 @@
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile:Makefile.in"}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile lib/Makefile source/Makefile utils/Makefile"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -1924,7 +2240,7 @@
 if test "${CONFIG_HEADERS+set}" != set; then
 EOF
 cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="include/setup.h:include/setup.h.in"
+  CONFIG_HEADERS="include/setup.h"
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 fi
diff -uNrd -x CVS ircd-comstud-1.12-REL/configure.in ircd-devel/configure.in
--- ircd-comstud-1.12-REL/configure.in	Thu Jun  3 01:30:26 1999
+++ ircd-devel/configure.in	Tue Dec  5 12:29:00 2000
@@ -1,35 +1,44 @@
 dnl @(#)$Id configure.in,v 1.2 1995/01/07 01:50:18 mrg Exp$
-dnl
-dnl configure.in for ircd 2.9.
-dnl written by matthew green (mrg@mame.mu.oz.au), with portions
-dnl from avalon's Config.
-dnl copyright (c) 1995.
 
-AC_REVISION(1.2)dnl
 AC_INIT(source/ircdcore.c)
-AC_CONFIG_HEADER(include/setup.h:include/setup.h.in)
+dnl AC_CONFIG_AUX_DIR(config)
+AC_CONFIG_HEADER(include/setup.h)
+PACKAGE=ircd-comstud
+VERSION=1.11
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
 
+AC_CANONICAL_SYSTEM
 AC_PROG_CC
 AC_PROG_CPP
-AC_AIX
+AC_PROG_MAKE_SET
+
+dnl AC_ENABLE_SHARED
+dnl AC_DISABLE_STATIC
+dnl AC_LIBTOOL_DLOPEN
+dnl AM_PROG_LIBTOOL
+
 AC_ISC_POSIX
 AC_PROG_GCC_TRADITIONAL
+AC_C_CONST
+AC_C_INLINE
+AC_TYPE_SIGNAL
 
-AC_PATH_PROGS(SUM, sum cksum, true, /usr/ucb:$PATH)
-
-AC_CHECK_HEADERS(crypt.h stropts.h time.h sys/time.h sys/ioctl.h sys/filio.h)
+AC_CHECK_HEADERS(crypt.h stropts.h time.h sys/time.h sys/ioctl.h sys/filio.h sys/event.h)
 
 AC_CHECK_LIB(crypt, crypt)
+AC_CHECK_LIB(crypt, descrypt)
 AC_CHECK_LIB(socket, socket)
 AC_CHECK_LIB(nsl, socket)
 AC_CHECK_LIB(resolv, res_init)
-AC_CHECK_LIB(dl, dlopen)
 
-AC_CHECK_FUNC(getpagesize, AC_DEFINE(HAVE_GETPAGESIZE),
-	AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF)))
+AC_CHECK_FUNC(select, AC_DEFINE(HAVE_SELECT))
 AC_CHECK_FUNC(poll, AC_DEFINE(HAVE_POLL))
+AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
 AC_CHECK_FUNC(dn_skipname, , AC_DEFINE(NEED_DNSKIPNAME))
 AC_CHECK_FUNC(mmap, AC_DEFINE(HAVE_MMAP))
+AC_CHECK_FUNC(getpagesize, AC_DEFINE(HAVE_GETPAGESIZE),
+	AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF)))
 AC_CHECK_FUNC(vsnprintf, AC_DEFINE(HAVE_VSNPRINTF))
 AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR), 
 	AC_MSG_CHECKING(for sys_errlist declaration)
@@ -44,6 +53,10 @@
 }
 ],AC_DEFINE(SYS_ERRLIST_DECLARED) AC_MSG_RESULT(yes), AC_MSG_RESULT(no), :))
 
-AC_TYPE_SIGNAL()
+SHLIB_CC="${CC} -fPIC"
+SHLIB_LD="${CC} -shared"
 
-AC_OUTPUT(Makefile:Makefile.in)
+AC_SUBST(SHLIB_CC)
+AC_SUBST(SHLIB_LD)
+
+AC_OUTPUT(Makefile lib/Makefile source/Makefile utils/Makefile)
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/Makefile ircd-devel/confparse/Makefile
--- ircd-comstud-1.12-REL/confparse/Makefile	Wed Mar 17 19:47:17 1999
+++ ircd-devel/confparse/Makefile	Wed Dec 31 19:00:00 1969
@@ -1,21 +0,0 @@
-CC=gcc
-CFLAGS=-Wall -g
-
-ALL=libconfigparse.a conftest
-
-all: ${ALL}
-
-libconfigparse.a:	configparse.o
-	rm -f libconfigparse.a
-	ar r libconfigparse.a configparse.o
-	ranlib libconfigparse.a
-
-configparse.o:	configparse.c configparse.h
-	${CC} ${CFLAGS} -c configparse.c -o configparse.o
-
-conftest:	libconfigparse.a conftest.c
-	${CC} ${CFLAGS} -o conftest conftest.c -L. -lconfigparse
-
-clean:
-	rm -f ${ALL} *.o
-
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/configparse.c ircd-devel/confparse/configparse.c
--- ircd-comstud-1.12-REL/confparse/configparse.c	Mon Oct 23 01:35:32 2000
+++ ircd-devel/confparse/configparse.c	Wed Dec 31 19:00:00 1969
@@ -1,417 +0,0 @@
-/*
-**   Generic Config file parser (configparse.c)
-**   Copyright (C) 1999 Fred Jacobs, Chris Behrens
-**
-**   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.
-*/
-
-/*
-**  The idea of something this generic came solely from Fred Jacobs.
-**  I completely rewrote his implementation, however, although some
-**  pieces remain similar.  Thank you very much, Fred! :)
-**    - Chris
-*/
-
-#include "ircd_includes.h"
-#include "configparse.h"
-
-
-static void config_error(char *format, ...);
-static CONFIGFILE *config_parse(char *filename, char *confdata);
-static void config_entry_free(CONFIGENTRY *ceptr);
-
-static void config_error(char *format, ...)
-{
-	va_list		ap;
-	char		buffer[1024];
-	char		*ptr;
-
-	va_start(ap, format);
-	vsprintf(buffer, format, ap);
-	va_end(ap);
-	if ((ptr = strchr(buffer, '\n')) != NULL)
-		*ptr = '\0';
-	syslog(LOG_NOTICE, "%s", buffer);
-}
-
-static CONFIGFILE *config_parse(char *filename, char *confdata)
-{
-	char		*ptr;
-	char		*start;
-	int			linenumber = 1;
-	CONFIGENTRY	*curce;
-	CONFIGENTRY	**lastce;
-	CONFIGENTRY	*cursection;
-
-	CONFIGFILE	*curcf;
-	CONFIGFILE	*lastcf;
-
-	lastcf = curcf = (CONFIGFILE *)MyMalloc(sizeof(CONFIGFILE));
-	memset(curcf, 0, sizeof(CONFIGFILE));
-	curcf->cf_filename = MyStrdup(filename);
-	lastce = &(curcf->cf_entries);
-	curce = NULL;
-	cursection = NULL;
-	for(ptr=confdata;*ptr;ptr++)
-	{
-		switch(*ptr)
-		{
-			case ';':
-				if (!curce)
-				{
-					config_error("%s:%i Ignoring extra semicolon\n",
-						filename, linenumber);
-					break;
-				}
-				if (!strcmp(curce->ce_varname, "include"))
-				{
-					CONFIGFILE	*cfptr;
-
-					if (!curce->ce_vardata)
-					{
-						config_error("%s:%i Ignoring \"include\": No filename given\n",
-							filename, linenumber);
-						config_entry_free(curce);
-						curce = NULL;
-						continue;
-					}
-					if (strlen(curce->ce_vardata) > 255)
-						curce->ce_vardata[255] = '\0';
-					cfptr = config_load(curce->ce_vardata);
-					if (cfptr)
-					{
-						lastcf->cf_next = cfptr;
-						lastcf = cfptr;
-					}
-					config_entry_free(curce);
-					curce = NULL;
-					continue;
-				}
-				*lastce = curce;
-				lastce = &(curce->ce_next);
-				curce->ce_fileposend = (ptr - confdata);
-				curce = NULL;
-				break;
-			case '{':
-				if (!curce)
-				{
-					config_error("%s:%i: No name for section start\n",
-							filename, linenumber);
-					continue;
-				}
-				else if (curce->ce_entries)
-				{
-					config_error("%s:%i: Ignoring extra section start\n",
-							filename, linenumber);
-					continue;
-				}
-				curce->ce_sectlinenum = linenumber;
-				lastce = &(curce->ce_entries);
-				cursection = curce;
-				curce = NULL;
-				break;
-			case '}':
-				if (curce)
-				{
-					config_error("%s:%i: Missing semicolon before close brace\n",
-						filename, linenumber);
-					config_entry_free(curce);
-					config_free(curcf);
-					return NULL;
-				}
-				else if (!cursection)
-				{
-					config_error("%s:%i: Ignoring extra close brace\n",
-						filename, linenumber);
-					continue;
-				}
-				curce = cursection;
-				cursection->ce_fileposend = (ptr - confdata);
-				cursection = cursection->ce_prevlevel;
-				if (!cursection)
-					lastce = &(curcf->cf_entries);
-				else
-					lastce = &(cursection->ce_entries);
-				for(;*lastce;lastce = &((*lastce)->ce_next))
-					continue;
-				break;
-			case '/':
-				if (*(ptr+1) == '/')
-				{
-					ptr += 2;
-					while(*ptr && (*ptr != '\n'))
-						ptr++;
-					if (!*ptr)
-						break;
-					ptr--; /* grab the \n on next loop thru */
-					continue;
-				}
-				else if (*(ptr+1) == '*')
-				{
-					int commentstart = linenumber;
-
-					for(ptr+=2;*ptr;ptr++)
-					{
-						if ((*ptr == '*') && (*(ptr+1) == '/'))
-						{
-							ptr++;
-							break;
-						}
-						else if (*ptr == '\n')
-							linenumber++;
-					}
-					if (!*ptr)
-					{
-						config_error("%s:%i Comment on this line does not end\n",
-							filename, commentstart);
-						config_entry_free(curce);
-						config_free(curcf);
-						return NULL;
-					}
-				}
-				break;
-			case '\"':
-				start = ++ptr;
-				for(;*ptr;ptr++)
-				{
-					if ((*ptr == '\\') && (*(ptr+1) == '\"'))
-					{
-						char *tptr = ptr;
-						while((*tptr = *(tptr+1)))
-							tptr++;
-					}
-					else if ((*ptr == '\"') || (*ptr == '\n'))
-						break;
-				}
-				if (!*ptr || (*ptr == '\n'))
-				{
-					config_error("%s:%i: Unterminated quote found\n",
-							filename, linenumber);
-					config_entry_free(curce);
-					config_free(curcf);
-					return NULL;
-				}
-				if (curce)
-				{
-					if (curce->ce_vardata)
-					{
-						config_error("%s:%i: Ignoring extra data\n",
-							filename, linenumber);
-					}
-					else
-					{
-						curce->ce_vardata = (char *)MyMalloc(ptr-start+1);
-						strncpy(curce->ce_vardata, start, ptr-start);
-						curce->ce_vardata[ptr-start] = '\0';
-						curce->ce_vardatanum = atoi(curce->ce_vardata);
-					}
-				}
-				else
-				{
-					curce = (CONFIGENTRY *)MyMalloc(sizeof(CONFIGENTRY));
-					memset(curce, 0, sizeof(CONFIGENTRY));
-					curce->ce_varname = (char *)MyMalloc(ptr-start+1);
-					strncpy(curce->ce_varname, start, ptr-start);
-					curce->ce_varname[ptr-start] = '\0';
-					curce->ce_varlinenum = linenumber;
-					curce->ce_fileptr = curcf;
-					curce->ce_prevlevel = cursection;
-					curce->ce_fileposstart = (start - confdata);
-				}
-				break;
-			case '\n':
-				linenumber++;
-				if (*(ptr+1) == '#')
-				{
-					ptr += 2;
-					while(*ptr && (*ptr != '\n'))
-						ptr++;
-					if (*ptr == '\n')
-					{
-						ptr--;
-						continue;
-					}
-				}
-				/* fall through */
-			case '\t':
-			case ' ':
-			case '\r':
-				break;
-			default:
-				if ((*ptr == '*') && (*(ptr+1) == '/'))
-				{
-					config_error("%s:%i Ignoring extra end comment\n",
-						filename, linenumber);
-					ptr++;
-					break;
-				}
-				start = ptr;
-				for(;*ptr;ptr++)
-				{
-					if ((*ptr == ' ') || (*ptr == '\t') || (*ptr == '\n') || (*ptr == ';'))
-						break;
-				}
-				if (!*ptr)
-				{
-					if (curce)
-						config_error("%s: Unexpected EOF for variable starting at %i\n",
-							filename, curce->ce_varlinenum);
-					else if (cursection)
-						config_error("%s: Unexpected EOF for section starting at %i\n",
-							filename, curce->ce_sectlinenum);
-					else
-						config_error("%s: Unexpected EOF.\n", filename);
-					config_entry_free(curce);
-					config_free(curcf);
-					return NULL;
-				}
-				if (curce)
-				{
-					if (curce->ce_vardata)
-					{
-						config_error("%s:%i: Ignoring extra data\n",
-							filename, linenumber);
-					}
-					else
-					{
-						curce->ce_vardata = (char *)MyMalloc(ptr-start+1);
-						strncpy(curce->ce_vardata, start, ptr-start);
-						curce->ce_vardata[ptr-start] = '\0';
-						curce->ce_vardatanum = atoi(curce->ce_vardata);
-					}
-				}
-				else
-				{
-					curce = (CONFIGENTRY *)MyMalloc(sizeof(CONFIGENTRY));
-					memset(curce, 0, sizeof(CONFIGENTRY));
-					curce->ce_varname = (char *)MyMalloc(ptr-start+1);
-					strncpy(curce->ce_varname, start, ptr-start);
-					curce->ce_varname[ptr-start] = '\0';
-					curce->ce_varlinenum = linenumber;
-					curce->ce_fileptr = curcf;
-					curce->ce_prevlevel = cursection;
-					curce->ce_fileposstart = (start - confdata);
-				}
-				if ((*ptr == ';') || (*ptr == '\n'))
-					ptr--;
-				break;
-		} /* switch */
-	} /* for */
-	if (curce)
-	{
-		config_error("%s: Unexpected EOF for variable starting on line %i\n",
-			filename, curce->ce_varlinenum);
-		config_entry_free(curce);
-		config_free(curcf);
-		return NULL;
-	}
-	else if (cursection)
-	{
-		config_error("%s: Unexpected EOF for section starting on line %i\n",
-				filename, cursection->ce_sectlinenum);
-		config_free(curcf);
-		return NULL;
-	}
-	return curcf;
-}
-
-static void config_entry_free(CONFIGENTRY *ceptr)
-{
-	CONFIGENTRY	*nptr;
-
-	for(;ceptr;ceptr=nptr)
-	{
-		nptr = ceptr->ce_next;
-		if (ceptr->ce_entries)
-			config_entry_free(ceptr->ce_entries);
-		if (ceptr->ce_varname)
-			MyFree(ceptr->ce_varname);
-		if (ceptr->ce_vardata)
-			MyFree(ceptr->ce_vardata);
-		MyFree(ceptr);
-	}
-}
-
-void config_free(CONFIGFILE *cfptr)
-{
-	CONFIGFILE	*nptr;
-
-	for(;cfptr;cfptr=nptr)
-	{
-		nptr = cfptr->cf_next;
-		if (cfptr->cf_entries)
-			config_entry_free(cfptr->cf_entries);
-		if (cfptr->cf_filename)
-			MyFree(cfptr->cf_filename);
-		MyFree(cfptr);
-	}
-}
-
-CONFIGFILE *config_load(char *filename)
-{
-	struct stat sb;
-	int			fd;
-	int			ret;
-	char		*buf = NULL;
-	CONFIGFILE	*cfptr;
-
-	fd = open(filename, O_RDONLY);
-	if (fd == -1)
-	{
-		config_error("Couldn't open \"%s\": %i\n", filename, errno);
-		return NULL;
-	}
-	if (fstat(fd, &sb) == -1)
-	{
-		config_error("Couldn't fstat \"%s\": %i\n", filename, errno);
-		close(fd);
-		return NULL;
-	}
-	if (!sb.st_size)
-	{
-		close(fd);
-		return NULL;
-	}
-	buf = (char *)MyMalloc(sb.st_size+1);
-	if (buf == NULL)
-	{
-		config_error("Out of memory trying to load \"%s\"\n", filename);
-		close(fd);
-		return NULL;
-	}
-	ret = read(fd, buf, sb.st_size);
-	if (ret != sb.st_size)
-	{
-		config_error("Error reading \"%s\": %i\n", filename,
-			ret == -1 ? errno : EFAULT);
-		MyFree(buf);
-		close(fd);
-		return NULL;
-	}
-	buf[ret] = '\0';
-	close(fd);
-	cfptr = config_parse(filename, buf);
-	MyFree(buf);
-	return cfptr;
-}
-
-CONFIGENTRY *config_find(CONFIGENTRY *ceptr, char *name)
-{
-	for(;ceptr;ceptr=ceptr->ce_next)
-		if (!strcmp(ceptr->ce_varname, name))
-			break;
-	return ceptr;
-}
-
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/configparse.h ircd-devel/confparse/configparse.h
--- ircd-comstud-1.12-REL/confparse/configparse.h	Fri May 28 22:03:41 1999
+++ ircd-devel/confparse/configparse.h	Wed Dec 31 19:00:00 1969
@@ -1,63 +0,0 @@
-/*
-**   Generic Config file parser (configparse.h)
-**   Copyright (C) 1999 Fred Jacobs, Chris Behrens
-**
-**   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.
-*/
-
-/*
-**  The idea of something this generic came solely from Fred Jacobs.
-**  I completely rewrote his implementation, however, although some
-**  pieces remain similar.  Thank you very much, Fred! :)
-**    - Chris
-*/
-
-#ifndef __CONFPARSE_H__
-#define __CONFPARSE_H__
-
-typedef struct _configfile	CONFIGFILE;
-typedef struct _configentry	CONFIGENTRY;
-
-struct _configfile
-{
-	char		*cf_filename;
-	CONFIGENTRY	*cf_entries;
-	CONFIGFILE	*cf_next;
-};
-
-struct _configentry
-{
-	CONFIGFILE	*ce_fileptr;
-
-	int			ce_varlinenum;
-	char		*ce_varname;
-	char		*ce_vardata;
-	int			ce_vardatanum;
-	int			ce_fileposstart;
-	int			ce_fileposend;
-
-	int			ce_sectlinenum;
-	CONFIGENTRY	*ce_entries;
-
-	CONFIGENTRY	*ce_prevlevel;
-
-	CONFIGENTRY	*ce_next;
-};
-
-void config_free(CONFIGFILE *cfptr);
-CONFIGFILE *config_load(char *filename);
-CONFIGENTRY *config_find(CONFIGENTRY *ceptr, char *name);
-
-#endif
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/conftest.c ircd-devel/confparse/conftest.c
--- ircd-comstud-1.12-REL/confparse/conftest.c	Thu Mar 18 00:10:38 1999
+++ ircd-devel/confparse/conftest.c	Wed Dec 31 19:00:00 1969
@@ -1,103 +0,0 @@
-/*
-**   Generic Config file parser (conftest.c)
-**   Copyright (C) 1999 Fred Jacobs, Chris Behrens
-**
-**   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.
-*/
-
-/*
-**  The idea of something this generic came solely from Fred Jacobs.
-**  I completely rewrote his implementation, however, although some
-**  pieces remain similar.  Thank you very much, Fred! :)
-**    - Chris
-*/
-
-#include <stdio.h>
-#include "configparse.h"
-
-
-static void conftest_entry_print(CONFIGENTRY *ce, int deep);
-static void conftest_print(CONFIGFILE *cfptr);
-
-static void conftest_entry_print(CONFIGENTRY *ce, int deep)
-{
-	int num = 0;
-
-	if (ce)
-		printf("%*sNew section at line %i of %s:\n", deep*3, "", ce->ce_prevlevel ? ce->ce_prevlevel->ce_sectlinenum : 0, ce->ce_fileptr->cf_filename);
-	for(;ce;ce=ce->ce_next)
-	{
-		num++;
-		if (!ce->ce_varname && !ce->ce_vardata && !ce->ce_entries)
-			continue;
-		if (ce->ce_varname)
-		{
-			printf("%*sName: %s (Linenumber %i of %s)\n", 2+deep*3, "",
-				ce->ce_varname, ce->ce_varlinenum,
-				ce->ce_fileptr->cf_filename);
-			if (ce->ce_vardata)
-				printf("%*sData: %s\n", 2+deep*3, "", ce->ce_vardata);
-		}
-		if (ce->ce_entries)
-		{
-			conftest_entry_print(ce->ce_entries, deep+1);
-		}
-	}
-	if (num)
-		printf("%*sEnd section\n", deep*3, "");
-}
-
-static void conftest_print(CONFIGFILE *cfptr)
-{
-	for(;cfptr;cfptr=cfptr->cf_next)
-		conftest_entry_print(cfptr->cf_entries, 0);
-}
-
-int main(int argc, char **argv)
-{
-	CONFIGFILE	*cfptr;
-
-	if (argc < 2)
-	{
-		fprintf(stderr, "Usage: conftest conffile\n");
-		exit(-1);
-	}
-
-	cfptr = config_load(argv[1]);
-
-	if (cfptr)
-	{
-		printf("Conf loaded without errors\n");
-#ifdef DOIT
-		{
-			int i;
-
-			printf("sleeping\n");
-			sleep(10);
-			for(i=0;i<1000;i++)
-				config_free(config_load(argv[1]));
-		}
-#else
-		conftest_print(cfptr);
-#endif
-		config_free(cfptr);
-		sleep(5);
-		printf("sleeping\n");
-	}
-	else
-		printf("Conf could not be loaded\n");
-	exit(0);
-}
-
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/include.conf ircd-devel/confparse/include.conf
--- ircd-comstud-1.12-REL/confparse/include.conf	Tue Mar 16 23:28:43 1999
+++ ircd-devel/confparse/include.conf	Wed Dec 31 19:00:00 1969
@@ -1,6 +0,0 @@
-
-included this {
-	conf file;
-};
-
-testing 123;
diff -uNrd -x CVS ircd-comstud-1.12-REL/confparse/test.conf ircd-devel/confparse/test.conf
--- ircd-comstud-1.12-REL/confparse/test.conf	Wed Mar 17 20:59:33 1999
+++ ircd-devel/confparse/test.conf	Wed Dec 31 19:00:00 1969
@@ -1,32 +0,0 @@
-
-include "include.conf";
-
-// Data files for this package
-files "Data Files" {
-  file blarg.data;
-  file foo.data;
-};
-
-/* Birthdays we care about.
-   Organized per-month */
-Birthdays {
-  January {
-    Bob 14;
-    Joe 18;
-  };
-  December {
-    Jane 24;
-  };
-};
-
-# arrrgh !!! ! !! ! ! ! ! ! !  ! ! ! /* nmoe oamdf ljkafl dksf
-#
-#
-
-#
-#
-
-outputfile "birthday.out";
-
-/* Network port to listen on */
-port 9999;
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/access.h ircd-devel/include/access.h
--- ircd-comstud-1.12-REL/include/access.h	Wed Nov  8 00:51:38 2000
+++ ircd-devel/include/access.h	Sun Dec  3 12:17:45 2000
@@ -25,7 +25,6 @@
 	ircd_uint32_t		ip_net;
 	ircd_uint32_t		ip_mask;
 	char			*ipstring;
-#define ALLOW_FLAGS_CHECKHOSTNAME	0x001
 	int				flags;
 	char			*classname;
 	void			*classptr;
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/confparse.h ircd-devel/include/confparse.h
--- ircd-comstud-1.12-REL/include/confparse.h	Wed Dec 31 19:00:00 1969
+++ ircd-devel/include/confparse.h	Tue Dec  5 12:23:23 2000
@@ -0,0 +1,63 @@
+/*
+**   Generic Config file parser (confparse.h)
+**   Copyright (C) 1999 Fred Jacobs, Chris Behrens
+**
+**   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.
+*/
+
+/*
+**  The idea of something this generic came solely from Fred Jacobs.
+**  I completely rewrote his implementation, however, although some
+**  pieces remain similar.  Thank you very much, Fred! :)
+**    - Chris
+*/
+
+#ifndef __CONFPARSE_H__
+#define __CONFPARSE_H__
+
+typedef struct _configfile	CONFIGFILE;
+typedef struct _configentry	CONFIGENTRY;
+
+struct _configfile
+{
+	char		*cf_filename;
+	CONFIGENTRY	*cf_entries;
+	CONFIGFILE	*cf_next;
+};
+
+struct _configentry
+{
+	CONFIGFILE	*ce_fileptr;
+
+	int			ce_varlinenum;
+	char		*ce_varname;
+	char		*ce_vardata;
+	int			ce_vardatanum;
+	int			ce_fileposstart;
+	int			ce_fileposend;
+
+	int			ce_sectlinenum;
+	CONFIGENTRY	*ce_entries;
+
+	CONFIGENTRY	*ce_prevlevel;
+
+	CONFIGENTRY	*ce_next;
+};
+
+void config_free(CONFIGFILE *cfptr);
+CONFIGFILE *config_load(char *filename);
+CONFIGENTRY *config_find(CONFIGENTRY *ceptr, char *name);
+
+#endif
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/defines.h ircd-devel/include/defines.h
--- ircd-comstud-1.12-REL/include/defines.h	Tue Nov  9 23:41:06 1999
+++ ircd-devel/include/defines.h	Sun Dec  3 12:17:45 2000
@@ -59,7 +59,6 @@
 #define IsMember			_channel_ismember
 
 extern char				*Conffile;
-extern FDLIST			*Fdlist_main;
 extern IRCD_CONN		**Fds;
 extern int				Fds_size;
 extern IRCDRES_REQLIST	*Reqlist;
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/fdlist.h ircd-devel/include/fdlist.h
--- ircd-comstud-1.12-REL/include/fdlist.h	Sun Jul 18 14:39:17 1999
+++ ircd-devel/include/fdlist.h	Tue Dec  5 05:58:40 2000
@@ -1,48 +1,19 @@
 #ifndef __FDLIST_H__
 #define __FDLIST_H__
 
+#include "structs.h"
 #include "config.h"
 
 #include <string.h>
-/*
-#include <poll.h>
-*/
+#include <sys/event.h>
 
 typedef struct pollfd		FDLIST_POLLFD;
 
 #define FDLIST_FLAGS_READ	0x001
 #define FDLIST_FLAGS_WRITE	0x002
 
-typedef struct _fdlist		FDLIST;
-typedef struct _fdlistinfo	FDLISTINFO;
-
-struct _fdlist
-{
-	FDLIST_POLLFD	*pfd_array;
-	int				pfd_size;
-	int				pfd_num;
-};
-
-struct _fdlistinfo
-{
-    int             fd;
-    FDLIST          *fdlist;
-    int             fdlist_pos;
-};
-
-#define FDLIST_FD(__fdlist, __pos)	(__fdlist)->pfd_array[(__pos)].fd
-
-#define SET_FDS(__fd, __ptr)	Fds[(__fd)] = (__ptr)
-#define GET_FDS(__fd)			Fds[(__fd)]
-
-#define fdlist_events(__fdlist, __pos)	(__fdlist)->pfd_array[(__pos)].events
-#define fdlist_init(__fdlist)	memset((__fdlist), 0, sizeof(FDLIST))
-
-int fdlist_add_fd(FDLIST *fdlist, int fd, int flags);
-int fdlist_del_fd(FDLIST *fdlist, int pos, int *mfd);
-int fdlist_add_event(FDLIST *fdlist, int pos, int flags);
-int fdlist_del_event(FDLIST *fdlist, int pos, int flags);
-int fdlist_set_events(FDLIST *fdlist, int pos, int flags);
-int fdlist_get_events(FDLIST *fdlist, int pos);
+struct kevent *fdlist_kqueue_increase(struct kevent *, int);
+int fdlist_add_event(IRCD_CONN *, int);
+int fdlist_del_event(IRCD_CONN *, int);
 
 #endif
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/ircd_includes.h ircd-devel/include/ircd_includes.h
--- ircd-comstud-1.12-REL/include/ircd_includes.h	Mon Jun 14 17:44:47 1999
+++ ircd-devel/include/ircd_includes.h	Sun Dec  3 12:17:45 2000
@@ -56,11 +56,11 @@
 #include "support.h"
 #include "config.h"
 
-#include "fdlist.h"
 #include "queue.h"
 #include "fileio.h"
 #include "conf.h"
 #include "structs.h"
+#include "fdlist.h"
 #include "cidr.h"
 #include "access.h"
 #include "misc.h"
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/misc.h ircd-devel/include/misc.h
--- ircd-comstud-1.12-REL/include/misc.h	Sun Oct 22 21:38:45 2000
+++ ircd-devel/include/misc.h	Sun Dec  3 12:17:45 2000
@@ -6,8 +6,8 @@
 #define NEXTARG_FLAGS_LASTARG	0x001
 
 void command_tree_init(void);
-int ircd_open_fd(int fd, int flags, IRCD_CONN *cptr, FDLIST *fdlistptr);
-int ircd_close_fd(FDLISTINFO *fdlistinfo);
+int ircd_open_fd(int fd, int flags, IRCD_CONN *cptr);
+int ircd_close_fd(int fd);
 int client_add_rejecthold(int fd, struct sockaddr_in *rem_sin);
 int client_add_local(IRCD_LISTENER *listener, int fd, struct sockaddr_in *rem_sin);
 int rejecthold_del(IRCD_CLIENT *from, IRCD_REJECTHOLD *rptr, char *reason);
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/structs.h ircd-devel/include/structs.h
--- ircd-comstud-1.12-REL/include/structs.h	Wed Nov  8 00:49:22 2000
+++ ircd-devel/include/structs.h	Tue Dec  5 10:54:28 2000
@@ -2,12 +2,9 @@
 #define __STRUCTS_H__
 
 #include "defines.h"
-#include "fdlist.h"
 #include "queue.h"
 #include "res.h"
 
-#define ALLOW_FLAGS_CHECKHOSTNAME	0x001
-
 typedef struct _ircd_conn			IRCD_CONN;
 typedef struct _ircd_auth			IRCD_AUTH;
 typedef struct _ircd_rejecthold		IRCD_REJECTHOLD;
@@ -29,7 +26,7 @@
 
 struct _ircd_conn
 {
-	FDLISTINFO		fdlistinfo;
+	int				fd;
 #define IRCD_CONN_TYPE_CLIENT		0x001
 #define IRCD_CONN_TYPE_AUTH			0x002
 #define IRCD_CONN_TYPE_LISTENER		0x004
@@ -254,7 +251,7 @@
 	IRCD_CLIENT		*c_h_prev;
 	IRCD_CLIENT		*c_h_next;
 
-	IRCD_IPENTRY	*c_ipaddr_ptr;
+	IRCD_IPENTRY		*c_ipaddr_ptr;
 	IRCD_CLIENT		*c_i_prev;
 	IRCD_CLIENT		*c_i_next;
 	IRCD_CLIENT		*c_n_prev;
@@ -409,8 +406,6 @@
 	int				c_recv_msg;
 	int				c_recv_bytes;
 	int				c_recv_kbytes;
-
-	int				c_writetries;
 
 	int				c_rate_msgs;
 	int				c_rate_time;
diff -uNrd -x CVS ircd-comstud-1.12-REL/include/version.h ircd-devel/include/version.h
--- ircd-comstud-1.12-REL/include/version.h	Wed Nov  8 00:38:14 2000
+++ ircd-devel/include/version.h	Sun Dec  3 12:17:45 2000
@@ -1,7 +1,7 @@
 #ifndef __VERSION_H__
 #define __VERSION_H__
 
-#define VERSIONSTRING "2.8/comstud-1.12-REL"
+#define VERSIONSTRING "2.8/comstud-1.11-REL"
 
 #ifdef CONCENTRIC
 #define VERSION VERSIONSTRING "+cnc"
diff -uNrd -x CVS ircd-comstud-1.12-REL/install-sh ircd-devel/install-sh
--- ircd-comstud-1.12-REL/install-sh	Wed Dec 31 19:00:00 1969
+++ ircd-devel/install-sh	Tue Dec  5 12:24:50 2000
@@ -0,0 +1,251 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
diff -uNrd -x CVS ircd-comstud-1.12-REL/ircd.conf ircd-devel/ircd.conf
--- ircd-comstud-1.12-REL/ircd.conf	Wed Dec 31 19:00:00 1969
+++ ircd-devel/ircd.conf	Sun Dec 10 07:46:32 2000
@@ -0,0 +1,79 @@
+global {
+	name irc.freebsd.org;
+	info "Development and testing server";
+	nameserver 127.0.0.1;
+};
+
+listen {
+	address 127.0.0.1 {
+		port 31337;
+	};
+};
+
+
+set {
+	clientconnect yes;
+        chanopsonsplit 6;
+        maxclients 32000;
+        goodoper_log yes;
+        badoper_log yes;
+        clones_log yes;
+        users_log no;
+        newklines_file "kline.conf";
+        isoperstring "is routing packets to Null0 (IRC Operator)";
+        reject_hold 15;
+	IPADDR_ACCEPT_RATE_NUM 0;
+	ipaddr_client_rate_num 0;
+	show_nickchanges no;
+        default_maxchannels 20;
+        operscanjoinonsplit yes;
+};
+
+admin {
+        "irc.freebsd.org administration";
+        "pm        ( Dave McKay    )";
+        "bfumerola ( Bill Fumerola )";
+        "ik        ( Dan Haskell   )";
+};
+
+class users {
+	maxsendq 640000;
+	maxclients 4096;
+	pingfreq 99999;
+	recvbuf 16384;
+	sendbuf 16384;
+};
+
+allow { hostname *; username *; class users; };
+allow { ipaddr *; username *; class users; };
+
+opers {
+	name testing {
+		from {
+			username *;
+			hostname *;
+		};
+		passwd "$1$TDK9j7iW$CrZTapr9Xdc79h9o22mqH0";
+		flag {
+			canset;		/* Can "/quote set" */
+			candie;		/* Can "/quote die" the server */
+			canflood;	/* Can Flood (without lag) */
+			cankline;	/* Can "/quote kline" */
+			canunkline;	/* Can "/quote unkline" */
+			canrehash;	/* Can "/quote rehash" the server */
+			canlocalkill;	/* Can /kill Locally */
+			canlocalroute;	/* Can /connect & /squit locally */
+		};
+                userflag {
+                        SWALLOPS;
+                        OKILLS;
+                        SNOTICES;
+                        OWALLOPS;
+                        STATSNOTICES;
+                        THROTTLES;
+                        LWALLOPS;
+                        CONNECTS;
+                        SQUITS;
+                };
+	};
+};
diff -uNrd -x CVS ircd-comstud-1.12-REL/ircd.motd ircd-devel/ircd.motd
--- ircd-comstud-1.12-REL/ircd.motd	Wed Dec 31 19:00:00 1969
+++ ircd-devel/ircd.motd	Tue Dec  5 12:46:33 2000
@@ -0,0 +1,36 @@
+   $Id$
+
+   \. admins \._________________________________________________
+
+      (pm)        - (dave@sneakerz.org)
+      (bfumerola) - (billf@FreeBSD.org)
+      (ik)        - (ik@lsl.com)
+
+      Questions / Complaints    - (irc@freebsd.org)
+
+   \. client policy \.__________________________________________
+
+      > clones (more than 2 u@h) will be klined without notice.
+      > if you have plans to flood / spam or otherwise act
+        in an inappropriate manner, save the operator staff
+        some time and /quit.
+      > your client must be set to respond to CTCP queries.
+      > violation of any of these terms will result in a kline.
+        if you feel your kline was unjustified, email irc@freebsd.org
+        with the user@host you were using at the time, as well
+        a description of what happened.
+
+   \. bot policy \._____________________________________________
+
+      > we will allow a single connection from a non-abusive bot.
+
+   \. involvement policy \._____________________________________
+
+      > this server is maintained by a group of dedicated
+        admins and operators. a list of active opers can be
+        obtained using /stats p. overall keep in mind your
+        use of this server is a privilege, NOT A RIGHT.
+        to be more specific, your connection can be terminated
+        any time at the sole discretion of the operator staff.
+
+	Remember:      ITS JUST IRC
diff -uNrd -x CVS ircd-comstud-1.12-REL/ircd.pid ircd-devel/ircd.pid
--- ircd-comstud-1.12-REL/ircd.pid	Wed Dec 31 19:00:00 1969
+++ ircd-devel/ircd.pid	Sun Dec 10 08:51:16 2000
@@ -0,0 +1 @@
+53620
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/Makefile.in ircd-devel/lib/Makefile.in
--- ircd-comstud-1.12-REL/lib/Makefile.in	Wed Dec 31 19:00:00 1969
+++ ircd-devel/lib/Makefile.in	Tue Dec  5 12:36:33 2000
@@ -0,0 +1,31 @@
+CC 		= @CC@
+CFLAGS 		= @CFLAGS@
+LDFLAGS		= @LDFLAGS@
+DEFS 		= @DEFS@
+LIBS		= @LIBS@
+SHLIB_CC	= @SHLIB_CC@
+SHLIB_LD	= @SHLIB_LD@
+
+LIB = ircd.so
+
+OBJS= access.o cidr.o commands.o conf.o confparse.o fdlist.o fileio.o \
+	hash.o iphash.o ircd.o log.o match.o misc.o mysocket.o numeric.o \
+	queue.o res.o send.o support.o vars.o whowas.o
+
+SRCS= access.c cidr.c commands.c conf.c confparse.c fdlist.c fileio.c \
+	hash.c iphash.c ircd.c log.c match.c misc.c mysocket.c numeric.c \
+	queue.c res.c send.c support.c tmp vars.c whowas.c
+
+.c.o:
+	${SHLIB_CC} ${CFLAGS} ${DEFS} -I. -I../include -o $@ -c $<
+
+all:	ircd.so
+
+ircd.so:	${OBJS}
+	${SHLIB_LD} ${LDFLAGS} -o ../$@ ${OBJS}
+
+clean:
+	rm -f ${OBJS} ${LIB}
+
+distclean: clean
+	rm -f Makefile
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/commands.c ircd-devel/lib/commands.c
--- ircd-comstud-1.12-REL/lib/commands.c	Thu Nov 23 23:23:55 2000
+++ ircd-devel/lib/commands.c	Tue Dec  5 12:37:20 2000
@@ -22,7 +22,7 @@
 
 #include "ircd_includes.h"
 #include "commands.h"
-#include "../confparse/configparse.h"
+#include "confparse.h"
 
 RCSID("$Id: commands.c,v 1.40 1999/02/23 07:57:15 cbehrens Exp $");
 
@@ -173,8 +173,7 @@
 
 	for(;*tptr;tptr++)
 	{
-		if ((*tptr <= ' ') || (*tptr > 'z') || (*tptr == ':') ||
-				(*tptr == '*') || (*tptr == '%'))
+		if ((*tptr <= ' ') || (*tptr > 'z') || (*tptr == ':') || (*tptr == '*'))
 			break;
 		if (*tptr == '.')
 			dotptr = tptr;
@@ -302,6 +301,9 @@
 				case	-7: /* host limit exceeded */
 					strcpy(exitbuf, "Class uservhost limit exceeded");
 					break;
+				case	-8: /* incorrect password */
+					strcpy(exitbuf, "Incorrect password");
+					break;
 				default:
 					sprintf(exitbuf, "Unknown error: %i", err);
 					break;
@@ -2947,11 +2949,6 @@
 	send_to_flag(CLIENT_NFLAGS_CONNECTS, NULL,
 			"Server %s being introduced locally", lptr->name);
 
-	ret = Recvbuffersize;
-	setsockopt(lptr->c_connptr->fdlistinfo.fd, SOL_SOCKET, SO_RCVBUF, (char *)&ret, sizeof(ret));
-	ret = Sendbuffersize;
-	setsockopt(lptr->c_connptr->fdlistinfo.fd, SOL_SOCKET, SO_SNDBUF, (char *)&ret, sizeof(ret));
-
 	if (++Globalinfo->g_servers > Globalinfo->g_maxservers)
 	{
 		Globalinfo->g_maxservers = Globalinfo->g_servers;
@@ -4497,7 +4494,7 @@
 		return -1;
 	}
 
-	if (ircd_open_fd(afd, FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE, acptr->c_connptr, NULL) < 0)
+	if (ircd_open_fd(afd, FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE, acptr->c_connptr) < 0)
 	{
 		queue_delete(&(acptr->c_queue_out));
 		queue_delete(&(acptr->c_queue_in));
@@ -5235,12 +5232,12 @@
 					send_prefix_to_client(meptr, pptr,
 						IRCD_REPLY(RPL_TRACEOPERATOR, pptr->name),
 						acptr->c_class->classname,
-						ircd_clientname(acptr, 0, cnamebuf));
+						ircd_clientname(acptr, 0, cnamebuf), acptr->c_ipstring);
 				else
 					send_prefix_to_client(meptr, pptr,
 						IRCD_REPLY(RPL_TRACEUSER, pptr->name),
 						acptr->c_class->classname,
-						ircd_clientname(acptr, 0, cnamebuf));
+						ircd_clientname(acptr, 0, cnamebuf), acptr->c_ipstring);
 			}
 			else if (IsServer(acptr))
 			{
@@ -5273,21 +5270,21 @@
 					send_prefix_to_client(meptr, pptr,
 						IRCD_REPLY(RPL_TRACEOPERATOR, pptr->name),
 						acptr->c_class->classname,
-						ircd_clientname(acptr, 0, cnamebuf));
+						ircd_clientname(acptr, 0, cnamebuf), acptr->c_ipstring);
 				}
 				else if (IsAnOper(pptr))
 				{
 					send_prefix_to_client(meptr, pptr,
 						IRCD_REPLY(RPL_TRACEUSER, pptr->name),
 						acptr->c_class->classname,
-						ircd_clientname(acptr, 0, cnamebuf));
+						ircd_clientname(acptr, 0, cnamebuf), acptr->c_ipstring);
 				}
 			}
 			else if (IsUnknown(acptr) && IsAnOper(pptr))
 			{
 				send_prefix_to_client(meptr, pptr,
 					IRCD_REPLY(RPL_TRACEUNKNOWN, pptr->name),
-					acptr->c_class ? acptr->c_class->classname : "unknown", ircd_clientname(acptr, 0, cnamebuf));
+					acptr->c_class ? acptr->c_class->classname : "unknown", ircd_clientname(acptr, 0, cnamebuf), acptr->c_ipstring);
 			}
 		}
 		if (IsAnOper(pptr))
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/conf.c ircd-devel/lib/conf.c
--- ircd-comstud-1.12-REL/lib/conf.c	Wed Nov  8 00:54:49 2000
+++ ircd-devel/lib/conf.c	Tue Dec  5 12:37:09 2000
@@ -22,9 +22,8 @@
 
 #include "ircd_includes.h"
 #include "conf.h"
-#include "../confparse/configparse.h"
+#include "confparse.h"
 #include "commands.h"
-#include "access.h"
 
 RCSID("$Id: conf.c,v 1.17 1999/02/21 22:34:39 cbehrens Exp $");
 
@@ -238,10 +237,7 @@
 						ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
 					continue;
 				}
-				if (!strcasecmp(flagname, "checkhostname"))
-					flags |= ALLOW_FLAGS_CHECKHOSTNAME;
-				else
-					syslog(LOG_NOTICE,
+				syslog(LOG_NOTICE,
 						"%s:%i: unknown flag",
 						ce->ce_fileptr->cf_filename, ce2->ce_varlinenum);
 			}
@@ -309,7 +305,7 @@
 
 static int _conf_class(IRCDCONF *conf, CONFIGENTRY *ce)
 {
-	IRCD_CLASSENTRY		class;
+	IRCD_CLASSENTRY		class, *ceptr;
 	int					ret;
 	CONFIGENTRY			*ce2;
 
@@ -356,7 +352,44 @@
 	
 	for(ce=ce->ce_entries;ce;ce=ce->ce_next)
 	{
-		if (!strcasecmp(ce->ce_varname, "maxsendq"))
+
+		if (!strcasecmp(ce->ce_varname, "inherit"))
+		{
+		        if (!ce->ce_vardata || !*ce->ce_vardata)
+		        {
+		                syslog(LOG_NOTICE,
+		                                "%s:%i: no inherit specified",
+		                                ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
+		                continue;
+		        }
+                        
+		        ret = class_find(&(_ircd_conf.classes), ce->ce_vardata, &ceptr);
+                        
+		        if (ret < 0)
+		        {
+		                syslog(LOG_NOTICE,
+		                                "%s:%i: could not find classname",
+		                                ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
+		                continue;
+		        }
+
+                        class.maxsendq = ceptr->maxsendq;
+                        class.pingfreq = ceptr->pingfreq;
+                        class.connfreq = ceptr->connfreq;
+                        class.maxclients = ceptr->maxclients;
+                        class.flags = ceptr->flags;
+                        class.floodnum = ceptr->floodnum;
+                        class.floodtime = ceptr->floodtime;
+                        class.floodexit = ceptr->floodexit;
+                        class.uhlimit = ceptr->uhlimit;
+                        class.hlimit = ceptr->hlimit;
+                        class.uvlimit = ceptr->uvlimit;
+                        class.vlimit = ceptr->vlimit;
+                        class.ipaddr_rate_time = ceptr->ipaddr_rate_time;
+                        class.ipaddr_rate_num = ceptr->ipaddr_rate_num;
+                        class.maxchannels = ceptr->maxchannels;
+		}
+		else if (!strcasecmp(ce->ce_varname, "maxsendq"))
 		{
 			if (!ce->ce_vardata)
 			{
@@ -1807,7 +1840,7 @@
 		if (!l->l_num_on)
 		{
 			del_listener_from_llist(lptr, l);
-			ircd_close_fd(&(l->l_connptr->fdlistinfo));
+			ircd_close_fd(l->l_connptr->fd);
 			MyFree(l->l_connptr);
 			MyFree(l);
 		}
@@ -1848,7 +1881,7 @@
 	l->l_connptr->conn_type = IRCD_CONN_TYPE_LISTENER;
 	l->l_connptr->conn_ptr = (void *)l;
 
-	if ((ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, l->l_connptr, NULL)) < 0)
+	if ((ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, l->l_connptr)) < 0)
 	{
 		close(fd);
 		MyFree(l->l_connptr);
@@ -2196,21 +2229,10 @@
 				pptr->username, pptr->c_ipstring,
 				pptr->c_rem_ipaddr, ACCESS_FLAGS_BESTMATCH,
 				&entryptr);
-	if (strcmp(pptr->c_ipstring, pptr->hostname) &&
-		((ret < 0) || (entryptr->flags & ALLOW_FLAGS_CHECKHOSTNAME)))
-	{
-		CONFHOSTIPENTRY		*eptr;
-		int				r;
-
-		r = access_match_hostname(&(_ircd_conf.allow),
+	if ((ret < 0) && strcmp(pptr->c_ipstring, pptr->hostname))
+		ret = access_match_hostname(&(_ircd_conf.allow),
 				pptr->username, pptr->hostname, ACCESS_FLAGS_BESTMATCH,
-				&eptr);
-		if (!r)
-		{
-			entryptr = eptr;
-			ret = r;
-		}
-	}
+				&entryptr);
 
 	/* FIX...check pptr->res_req->rl_reverse aliases also */
 
@@ -2224,6 +2246,11 @@
 		if (err)
 			*err = ret;
 		return -1;
+	}
+
+	if (entryptr->data && pptr->c_passwd && strcmp(entryptr->data, pptr->c_passwd))
+	{
+		return -8;
 	}
 
 	if (entryptr->classptr)
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/confparse.c ircd-devel/lib/confparse.c
--- ircd-comstud-1.12-REL/lib/confparse.c	Wed Dec 31 19:00:00 1969
+++ ircd-devel/lib/confparse.c	Tue Dec  5 12:23:14 2000
@@ -0,0 +1,418 @@
+/*
+**   Generic Config file parser (confparse.c)
+**   Copyright (C) 1999 Fred Jacobs, Chris Behrens
+**
+**   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.
+*/
+
+/*
+**  The idea of something this generic came solely from Fred Jacobs.
+**  I completely rewrote his implementation, however, although some
+**  pieces remain similar.  Thank you very much, Fred! :)
+**    - Chris
+*/
+
+#include "ircd_includes.h"
+#include "confparse.h"
+
+RCSID("$Id: confparse.c,v 1.2 2000/11/10 07:49:31 humble Exp $");
+
+static void config_error(char *format, ...);
+static CONFIGFILE *config_parse(char *filename, char *confdata);
+static void config_entry_free(CONFIGENTRY *ceptr);
+
+static void config_error(char *format, ...)
+{
+	va_list		ap;
+	char		buffer[1024];
+	char		*ptr;
+
+	va_start(ap, format);
+	vsprintf(buffer, format, ap);
+	va_end(ap);
+	if ((ptr = strchr(buffer, '\n')) != NULL)
+		*ptr = '\0';
+	syslog(LOG_NOTICE, "%s", buffer);
+}
+
+static CONFIGFILE *config_parse(char *filename, char *confdata)
+{
+	char		*ptr;
+	char		*start;
+	int			linenumber = 1;
+	CONFIGENTRY	*curce;
+	CONFIGENTRY	**lastce;
+	CONFIGENTRY	*cursection;
+
+	CONFIGFILE	*curcf;
+	CONFIGFILE	*lastcf;
+
+	lastcf = curcf = (CONFIGFILE *)MyMalloc(sizeof(CONFIGFILE));
+	memset(curcf, 0, sizeof(CONFIGFILE));
+	curcf->cf_filename = MyStrdup(filename);
+	lastce = &(curcf->cf_entries);
+	curce = NULL;
+	cursection = NULL;
+	for(ptr=confdata;*ptr;ptr++)
+	{
+		switch(*ptr)
+		{
+			case ';':
+				if (!curce)
+				{
+					config_error("%s:%i Ignoring extra semicolon\n",
+						filename, linenumber);
+					break;
+				}
+				if (!strcmp(curce->ce_varname, "include"))
+				{
+					CONFIGFILE	*cfptr;
+
+					if (!curce->ce_vardata)
+					{
+						config_error("%s:%i Ignoring \"include\": No filename given\n",
+							filename, linenumber);
+						config_entry_free(curce);
+						curce = NULL;
+						continue;
+					}
+					if (strlen(curce->ce_vardata) > 255)
+						curce->ce_vardata[255] = '\0';
+					cfptr = config_load(curce->ce_vardata);
+					if (cfptr)
+					{
+						lastcf->cf_next = cfptr;
+						lastcf = cfptr;
+					}
+					config_entry_free(curce);
+					curce = NULL;
+					continue;
+				}
+				*lastce = curce;
+				lastce = &(curce->ce_next);
+				curce->ce_fileposend = (ptr - confdata);
+				curce = NULL;
+				break;
+			case '{':
+				if (!curce)
+				{
+					config_error("%s:%i: No name for section start\n",
+							filename, linenumber);
+					continue;
+				}
+				else if (curce->ce_entries)
+				{
+					config_error("%s:%i: Ignoring extra section start\n",
+							filename, linenumber);
+					continue;
+				}
+				curce->ce_sectlinenum = linenumber;
+				lastce = &(curce->ce_entries);
+				cursection = curce;
+				curce = NULL;
+				break;
+			case '}':
+				if (curce)
+				{
+					config_error("%s:%i: Missing semicolon before close brace\n",
+						filename, linenumber);
+					config_entry_free(curce);
+					config_free(curcf);
+					return NULL;
+				}
+				else if (!cursection)
+				{
+					config_error("%s:%i: Ignoring extra close brace\n",
+						filename, linenumber);
+					continue;
+				}
+				curce = cursection;
+				cursection->ce_fileposend = (ptr - confdata);
+				cursection = cursection->ce_prevlevel;
+				if (!cursection)
+					lastce = &(curcf->cf_entries);
+				else
+					lastce = &(cursection->ce_entries);
+				for(;*lastce;lastce = &((*lastce)->ce_next))
+					continue;
+				break;
+			case '/':
+				if (*(ptr+1) == '/')
+				{
+					ptr += 2;
+					while(*ptr && (*ptr != '\n'))
+						ptr++;
+					if (!*ptr)
+						break;
+					ptr--; /* grab the \n on next loop thru */
+					continue;
+				}
+				else if (*(ptr+1) == '*')
+				{
+					int commentstart = linenumber;
+
+					for(ptr+=2;*ptr;ptr++)
+					{
+						if ((*ptr == '*') && (*(ptr+1) == '/'))
+						{
+							ptr++;
+							break;
+						}
+						else if (*ptr == '\n')
+							linenumber++;
+					}
+					if (!*ptr)
+					{
+						config_error("%s:%i Comment on this line does not end\n",
+							filename, commentstart);
+						config_entry_free(curce);
+						config_free(curcf);
+						return NULL;
+					}
+				}
+				break;
+			case '\"':
+				start = ++ptr;
+				for(;*ptr;ptr++)
+				{
+					if ((*ptr == '\\') && (*(ptr+1) == '\"'))
+					{
+						char *tptr = ptr;
+						while((*tptr = *(tptr+1)))
+							tptr++;
+					}
+					else if ((*ptr == '\"') || (*ptr == '\n'))
+						break;
+				}
+				if (!*ptr || (*ptr == '\n'))
+				{
+					config_error("%s:%i: Unterminated quote found\n",
+							filename, linenumber);
+					config_entry_free(curce);
+					config_free(curcf);
+					return NULL;
+				}
+				if (curce)
+				{
+					if (curce->ce_vardata)
+					{
+						config_error("%s:%i: Ignoring extra data\n",
+							filename, linenumber);
+					}
+					else
+					{
+						curce->ce_vardata = (char *)MyMalloc(ptr-start+1);
+						strncpy(curce->ce_vardata, start, ptr-start);
+						curce->ce_vardata[ptr-start] = '\0';
+						curce->ce_vardatanum = atoi(curce->ce_vardata);
+					}
+				}
+				else
+				{
+					curce = (CONFIGENTRY *)MyMalloc(sizeof(CONFIGENTRY));
+					memset(curce, 0, sizeof(CONFIGENTRY));
+					curce->ce_varname = (char *)MyMalloc(ptr-start+1);
+					strncpy(curce->ce_varname, start, ptr-start);
+					curce->ce_varname[ptr-start] = '\0';
+					curce->ce_varlinenum = linenumber;
+					curce->ce_fileptr = curcf;
+					curce->ce_prevlevel = cursection;
+					curce->ce_fileposstart = (start - confdata);
+				}
+				break;
+			case '\n':
+				linenumber++;
+				if (*(ptr+1) == '#')
+				{
+					ptr += 2;
+					while(*ptr && (*ptr != '\n'))
+						ptr++;
+					if (*ptr == '\n')
+					{
+						ptr--;
+						continue;
+					}
+				}
+				/* fall through */
+			case '\t':
+			case ' ':
+			case '\r':
+				break;
+			default:
+				if ((*ptr == '*') && (*(ptr+1) == '/'))
+				{
+					config_error("%s:%i Ignoring extra end comment\n",
+						filename, linenumber);
+					ptr++;
+					break;
+				}
+				start = ptr;
+				for(;*ptr;ptr++)
+				{
+					if ((*ptr == ' ') || (*ptr == '\t') || (*ptr == '\n') || (*ptr == ';'))
+						break;
+				}
+				if (!*ptr)
+				{
+					if (curce)
+						config_error("%s: Unexpected EOF for variable starting at %i\n",
+							filename, curce->ce_varlinenum);
+					else if (cursection)
+						config_error("%s: Unexpected EOF for section starting at %i\n",
+							filename, curce->ce_sectlinenum);
+					else
+						config_error("%s: Unexpected EOF.\n", filename);
+					config_entry_free(curce);
+					config_free(curcf);
+					return NULL;
+				}
+				if (curce)
+				{
+					if (curce->ce_vardata)
+					{
+						config_error("%s:%i: Ignoring extra data\n",
+							filename, linenumber);
+					}
+					else
+					{
+						curce->ce_vardata = (char *)MyMalloc(ptr-start+1);
+						strncpy(curce->ce_vardata, start, ptr-start);
+						curce->ce_vardata[ptr-start] = '\0';
+						curce->ce_vardatanum = atoi(curce->ce_vardata);
+					}
+				}
+				else
+				{
+					curce = (CONFIGENTRY *)MyMalloc(sizeof(CONFIGENTRY));
+					memset(curce, 0, sizeof(CONFIGENTRY));
+					curce->ce_varname = (char *)MyMalloc(ptr-start+1);
+					strncpy(curce->ce_varname, start, ptr-start);
+					curce->ce_varname[ptr-start] = '\0';
+					curce->ce_varlinenum = linenumber;
+					curce->ce_fileptr = curcf;
+					curce->ce_prevlevel = cursection;
+					curce->ce_fileposstart = (start - confdata);
+				}
+				if ((*ptr == ';') || (*ptr == '\n'))
+					ptr--;
+				break;
+		} /* switch */
+	} /* for */
+	if (curce)
+	{
+		config_error("%s: Unexpected EOF for variable starting on line %i\n",
+			filename, curce->ce_varlinenum);
+		config_entry_free(curce);
+		config_free(curcf);
+		return NULL;
+	}
+	else if (cursection)
+	{
+		config_error("%s: Unexpected EOF for section starting on line %i\n",
+				filename, cursection->ce_sectlinenum);
+		config_free(curcf);
+		return NULL;
+	}
+	return curcf;
+}
+
+static void config_entry_free(CONFIGENTRY *ceptr)
+{
+	CONFIGENTRY	*nptr;
+
+	for(;ceptr;ceptr=nptr)
+	{
+		nptr = ceptr->ce_next;
+		if (ceptr->ce_entries)
+			config_entry_free(ceptr->ce_entries);
+		if (ceptr->ce_varname)
+			MyFree(ceptr->ce_varname);
+		if (ceptr->ce_vardata)
+			MyFree(ceptr->ce_vardata);
+		MyFree(ceptr);
+	}
+}
+
+void config_free(CONFIGFILE *cfptr)
+{
+	CONFIGFILE	*nptr;
+
+	for(;cfptr;cfptr=nptr)
+	{
+		nptr = cfptr->cf_next;
+		if (cfptr->cf_entries)
+			config_entry_free(cfptr->cf_entries);
+		if (cfptr->cf_filename)
+			MyFree(cfptr->cf_filename);
+		MyFree(cfptr);
+	}
+}
+
+CONFIGFILE *config_load(char *filename)
+{
+	struct stat sb;
+	int			fd;
+	int			ret;
+	char		*buf = NULL;
+	CONFIGFILE	*cfptr;
+
+	fd = open(filename, O_RDONLY);
+	if (fd == -1)
+	{
+		config_error("Couldn't open \"%s\": %i\n", filename, errno);
+		return NULL;
+	}
+	if (fstat(fd, &sb) == -1)
+	{
+		config_error("Couldn't fstat \"%s\": %i\n", filename, errno);
+		close(fd);
+		return NULL;
+	}
+	if (!sb.st_size)
+	{
+		close(fd);
+		return NULL;
+	}
+	buf = (char *)MyMalloc(sb.st_size+1);
+	if (buf == NULL)
+	{
+		config_error("Out of memory trying to load \"%s\"\n", filename);
+		close(fd);
+		return NULL;
+	}
+	ret = read(fd, buf, sb.st_size);
+	if (ret != sb.st_size)
+	{
+		config_error("Error reading \"%s\": %i\n", filename,
+			ret == -1 ? errno : EFAULT);
+		MyFree(buf);
+		close(fd);
+		return NULL;
+	}
+	buf[ret] = '\0';
+	close(fd);
+	cfptr = config_parse(filename, buf);
+	MyFree(buf);
+	return cfptr;
+}
+
+CONFIGENTRY *config_find(CONFIGENTRY *ceptr, char *name)
+{
+	for(;ceptr;ceptr=ceptr->ce_next)
+		if (!strcmp(ceptr->ce_varname, name))
+			break;
+	return ceptr;
+}
+
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/fdlist.c ircd-devel/lib/fdlist.c
--- ircd-comstud-1.12-REL/lib/fdlist.c	Mon Jun 14 17:42:44 1999
+++ ircd-devel/lib/fdlist.c	Sun Dec 10 06:50:38 2000
@@ -22,182 +22,56 @@
 
 RCSID("$Id: fdlist.c,v 1.6 1999/02/03 01:14:07 cbehrens Exp $");
 
-int fdlist_add_fd(FDLIST *fdlist, int fd, int flags)
-{
-	int	n;
-
-	if (!fdlist || (fd < 0) ||
-			!(flags & (FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE)))
-	{
-		return -EINVAL;
-	}
-	if ((n=fdlist->pfd_num) == fdlist->pfd_size)
-	{
-		void 	*ptr;
+extern struct kevent *kqchange;
+extern int kqchangesize;
+extern int kqchangepos;
 
-		fdlist->pfd_size += 16;
-		ptr = realloc(fdlist->pfd_array,
-					fdlist->pfd_size * sizeof(FDLIST_POLLFD));
-		if (!ptr)
-		{
-			fdlist->pfd_size -= 16;
-			return -ENOMEM;
-		}
-		fdlist->pfd_array = (FDLIST_POLLFD *)ptr;
-	}
-	fdlist->pfd_array[n].fd = fd;
-	fdlist->pfd_array[n].revents = 0;
-	fdlist->pfd_array[n].events = 0;
-	if (flags & FDLIST_FLAGS_READ)
-		fdlist->pfd_array[n].events |= POLLIN;
-	if (flags & FDLIST_FLAGS_WRITE)
-		fdlist->pfd_array[n].events |= POLLOUT;
-	return fdlist->pfd_num++;
+struct kevent *fdlist_kqueue_increase(struct kevent *kq, int kqsize)
+{
+	return (struct kevent *)MyRealloc(kq, kqsize * sizeof(struct kevent));
 }
 
-int fdlist_del_fd(FDLIST *fdlist, int pos, int *mfd)
+static int _fdlist_event(IRCD_CONN *cptr, int flags, int filter)
 {
-	int		n;
+	struct kevent *kv;
 
-	if (!fdlist || (pos > (n = fdlist->pfd_num)) || (pos < 0))
-	{
-		return -EINVAL;
-	}
-	if (mfd)
-		*mfd = -1;
-	if ((--fdlist->pfd_num) && (n-1 != pos))
+	if (kqchangesize < kqchangepos + 64)
 	{
-		BCOPY(&(fdlist->pfd_array[n-1]), &(fdlist->pfd_array[pos]),
-			sizeof(FDLIST_POLLFD));
-		if (mfd)
-			*mfd = fdlist->pfd_array[pos].fd;
+		kqchangesize += 64;
+		if ((kqchange = fdlist_kqueue_increase(kqchange, kqchangesize)) == NULL)
+			return -ENOMEM;
 	}
-	return fdlist->pfd_num;
-}
-
-int fdlist_add_event(FDLIST *fdlist, int pos, int flags)
-{
-	if (!fdlist || (pos > fdlist->pfd_num) || (pos < 0))
-		return -EINVAL;
-	if (flags & FDLIST_FLAGS_READ)
-		fdlist->pfd_array[pos].events |= POLLIN;
-	if (flags & FDLIST_FLAGS_WRITE)
-		fdlist->pfd_array[pos].events |= POLLOUT;
-	return fdlist->pfd_array[pos].events;
-}
-
-int fdlist_del_event(FDLIST *fdlist, int pos, int flags)
-{
-	if (!fdlist || (pos > fdlist->pfd_num) || (pos < 0))
-		return -EINVAL;
-	if (flags & FDLIST_FLAGS_READ)
-		fdlist->pfd_array[pos].events &= ~POLLIN;
-	if (flags & FDLIST_FLAGS_WRITE)
-		fdlist->pfd_array[pos].events &= ~POLLOUT;
-	return fdlist->pfd_array[pos].events;
-}
-
-int fdlist_set_events(FDLIST *fdlist, int pos, int flags)
-{
-	if (!fdlist || (pos > fdlist->pfd_num) || (pos < 0) || !flags)
-		return -EINVAL;
-	fdlist->pfd_array[pos].events = 0;
-	if (flags & FDLIST_FLAGS_READ)
-		fdlist->pfd_array[pos].events |= POLLIN;
-	if (flags & FDLIST_FLAGS_WRITE)
-		fdlist->pfd_array[pos].events |= POLLOUT;
-	return fdlist->pfd_array[pos].events;
-}
-
-int fdlist_get_events(FDLIST *fdlist, int pos)
-{
-	int flags = 0;
 
-	if (!fdlist || (pos > fdlist->pfd_num) || (pos < 0))
-		return -EINVAL;
-	if (fdlist->pfd_array[pos].events & POLLIN)
-		flags |= FDLIST_FLAGS_READ;
-	if (fdlist->pfd_array[pos].events & POLLOUT)
-		flags |= FDLIST_FLAGS_WRITE;
-	return flags;
-}
-
-
-#if 0
+	kv = kqchange + kqchangepos++;
 
-int fdlist_add_fd(FDLIST *fdlist, int fd, int flags)
-{
-	if (!fdlist || (fd < 0) ||
-			!(flags & (FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE)))
-		return -EINVAL;
-	if (fd < fdlist->lowest_fd)
-		fdlist->lowest_fd = fd;
-	if (flags & FDLIST_FLAGS_READ)
-		FD_SET(fd, &fdlist->read_fds);
-	if (flags & FDLIST_FLAGS_WRITE)
-		FD_SET(fd, &fdlist->write_fds);
-	fdlist->pfd_num++;
-	return fd;
-}
+	kv->ident = cptr->fd;
+	kv->flags = flags;
+	kv->filter = filter;
+	kv->fflags = 0;
+	kv->data = NULL;
+	kv->udata = cptr;
 
-int fdlist_del_fd(FDLIST *fdlist, int fd, int *mfd)
-{
-	if (!fdlist || (fd < 0))
-		return -EINVAL;
-	if (mfd)
-		*mfd = -1;
-	FD_CLR(fd, &fdlist->read_fds);
-	FD_CLR(fd, &fdlist->write_fds);
-	fdlist->pfd_num--;
 	return 0;
 }
 
-int fdlist_add_event(FDLIST *fdlist, int fd, int flags)
-{
-	if (!fdlist || (fd < 0))
-		return -EINVAL;
-	if (flags & FDLIST_FLAGS_READ)
-		FD_SET(fd, &fdlist->read_fds);
-	if (flags & FDLIST_FLAGS_WRITE)
-		FD_SET(fd, &fdlist->write_fds);
-	return 0;
-}
-
-int fdlist_del_event(FDLIST *fdlist, int fd, int flags)
+int fdlist_add_event(IRCD_CONN *cptr, int flags)
 {
-	if (!fdlist || (fd < 0))
-		return -EINVAL;
-	if (flags & FDLIST_FLAGS_READ)
-		FD_CLR(fd, &fdlist->read_fds);
-	if (flags & FDLIST_FLAGS_WRITE)
-		FD_CLR(fd, &fdlist->write_fds);
-	return 0;
-}
+        if (flags & FDLIST_FLAGS_READ)
+		_fdlist_event(cptr, EV_ADD, EVFILT_READ);
+                
+        if (flags & FDLIST_FLAGS_WRITE)
+		_fdlist_event(cptr, EV_ADD, EVFILT_WRITE);
 
-int fdlist_set_events(FDLIST *fdlist, int fd, int flags)
-{
-	if (!fdlist || (fd < 0) || !flags)
-		return -EINVAL;
-	FD_CLR(fd, &fdlist->read_fds);
-	FD_CLR(fd, &fdlist->write_fds);
-	if (flags & FDLIST_FLAGS_READ)
-		FD_SET(fd, &fdlist->read_fds);
-	if (flags & FDLIST_FLAGS_WRITE)
-		FD_SET(fd, &fdlist->write_fds);
 	return 0;
 }
 
-int fdlist_get_events(FDLIST *fdlist, int fd)
+int fdlist_del_event(IRCD_CONN *cptr, int flags)
 {
-	int flags = 0;
+        if (flags & FDLIST_FLAGS_READ)
+		_fdlist_event(cptr, EV_DELETE, EVFILT_READ);
+                
+        if (flags & FDLIST_FLAGS_WRITE)
+		_fdlist_event(cptr, EV_DELETE, EVFILT_WRITE);
 
-	if (!fdlist || (fd < 0))
-		return -EINVAL;
-	if (FD_ISSET(fd, &fdlist->read_fds))
-		flags |= FDLIST_FLAGS_READ;
-	if (FD_ISSET(fd, &fdlist->write_fds))
-		flags |= FDLIST_FLAGS_WRITE;
-	return flags;
+	return 0;
 }
-
-#endif /* 0 */
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/ircd.c ircd-devel/lib/ircd.c
--- ircd-comstud-1.12-REL/lib/ircd.c	Mon Oct 23 01:13:04 2000
+++ ircd-devel/lib/ircd.c	Sun Dec 10 08:39:31 2000
@@ -26,7 +26,6 @@
 
 RCSID("$Id: ircd.c,v 1.34 1999/02/23 07:57:20 cbehrens Exp $");
 
-
 typedef struct _ircd_data	IRCD_DATA;
 
 struct _ircd_data
@@ -36,12 +35,6 @@
 	/* LEAVE THE ABOVE 3 FIRST AND NEVER CHANGE !!! */
 
 	int				ircd_pagesize;
-	int				Fdlist_num;
-	FDLIST			*Fdlist_main;
-	FDLIST			*Fdlist_clients;
-	int				*Fdlist_lasttime;
-	IRCD_CONN		**Fds;				/* for easy fd -> client lookup */
-	int				Fds_size;
 	IRCD_CLIENT		*Locals;
 	IRCD_AUTH		*Auths;
 	IRCD_CLIENT		**Clients;
@@ -52,9 +45,8 @@
 	GLOBALSTATS		*Globalinfo;
 	IRCD_REJECTHOLD	*Rejectholds;
 	IRCD_MOTD		*Motd;
-	int				Sendbuffersize;
-	int				Recvbuffersize;
 
+	int			Fds_size;
 	unsigned int	*Sentalong;
 	unsigned int	Sentalong_marker;
 	unsigned int	*Sentalong_end;
@@ -96,14 +88,9 @@
 
 int				Auths_did_delete = 0;
 int				Flooders_did_delete = 0;
-int				Fdlist_num = 100;
 char			*Conffile;
+int			Fds_size;
 int				ircd_pagesize;
-FDLIST			*Fdlist_main;
-static FDLIST	*Fdlist_clients;
-static int		*Fdlist_lasttime;
-int				Fds_size;
-IRCD_CONN		**Fds;				/* for easy fd -> client lookup */
 IRCDRES_REQLIST	*Reqlist = NULL;
 IRCD_CLIENT		*Locals = NULL;			/* local clients */
 IRCD_AUTH		*Auths = NULL;
@@ -115,8 +102,6 @@
 GLOBALSTATS		*Globalinfo;
 IRCD_REJECTHOLD	*Rejectholds = NULL;
 IRCD_MOTD		*Motd = NULL;
-int				Sendbuffersize = 0;
-int				Recvbuffersize = 0;
 unsigned int	*Sentalong;
 unsigned int	Sentalong_marker;
 unsigned int	*Sentalong_end;
@@ -132,14 +117,19 @@
 int				Rehashed = 0;
 int				Autoconncheck = 0;
 int				DoReload = 0;
-
+int			kqsock;
+int			Fds_size;
 
 static char		*ircdcore_versionstring;
 static int		*ircdcore_data_format_version;
 static char		**ircdcore_data;
 static int		*ircdcore_data_size;
-static FDLIST_POLLFD *_pfdarray = NULL;
-static int		_pfdarray_size = 0;
+
+struct kevent		*kqchange = NULL;
+struct kevent		*kqevent = NULL;
+int			kqchangesize = 0;
+int			kqchangepos = 0;
+int			kqeventsize = 0;
 
 char	_ircdso_versionstring[] = VERSION;
 int		_ircdso_version = 1;
@@ -147,7 +137,7 @@
 
 static RETSIGTYPE _ircd_sighup_handler(int sig);
 static int _auth_process(IRCD_AUTH *aptr);
-static int _ircd_pollfds(FDLIST *fdlist, int secs);
+static int _ircd_pollfds(int kqsock, int secs);
 static void flood_check(void);
 static void dns_check(void);
 static void auth_check(void);
@@ -228,121 +218,140 @@
 	return 0;
 }
 
-static int _ircd_pollfds(FDLIST *fdlist, int secs)
+static void _ircd_accept_listener(IRCD_CONN *cptr, int backlog)
+{
+	IRCD_LISTENER		*lptr = (IRCD_LISTENER *)cptr->conn_ptr;
+	struct sockaddr_in	sin;
+	int			sinsize = sizeof(sin);
+	int 			ipaddr;
+	int			i, ret;
+
+	for(i=0;i<backlog;++i) {
+		if ((ret = accept(cptr->fd, (struct sockaddr *)&sin, &sinsize)) < 0)
+			return;
+		lptr->l_lasttime = Now;
+		ipaddr = ntohl(sin.sin_addr.s_addr);
+		if (iphash_handle_accept(ipaddr))
+		{
+			int num;
+
+			if ((num=(int)vars_value_get_bynum(IRCD_VAR_REJECT_HOLD)) > 0)
+				if (client_add_rejecthold(ret, &sin) >= 0)
+					return;
+			close(ret);
+			return;
+		}
+
+		if (!access_match_ipaddr(&(_ircd_conf.deny), NULL, NULL, ipaddr, 0, NULL))
+		{
+			DEBUG(DEBUG_ALL, ("denying accept from %s\n", inet_ntoa(sin.sin_addr)));
+			close(ret);
+		}
+		else if (client_add_local(lptr, ret, &sin) < 0)
+			close(ret);
+	}
+
+	return;
+}
+
+static IRCD_CONN *_ircd_client_dead(IRCD_CONN *cptr, char *reason)
+{
+	IRCD_CONN *tmp;
+
+	if (!IsAuth(cptr))
+	{
+		conn_del(meptr, cptr, reason);
+		return NULL;
+	}
+
+	/* auth is done. */
+	tmp = ((IRCD_AUTH *)cptr->conn_ptr)->a_clptr->c_connptr;
+	conn_del(meptr, cptr, reason);
+	return tmp;
+}
+
+static int _ircd_pollfds(int kqsock, int secs)
 {
 	register int	i;
-	int				numfds;
 	int				ret;
-	int				nfds;
+	int				events;
 	static char		readbuf[1024*64];
 	static int		readbufsize = 1024*64;
 	IRCD_CONN		*cptr;
 	char			exitbuf[512];
+	struct timespec	timeout = { secs, 0 };
 
-	if (!fdlist->pfd_num)
+	if (!Fds_size)
 		return 0;
 
-	if (fdlist->pfd_num > _pfdarray_size)
+	if (Fds_size > kqeventsize)
 	{
-		FDLIST_POLLFD 	*tmp;
-
-		_pfdarray_size = fdlist->pfd_num + 64;
-		tmp = (FDLIST_POLLFD *)MyRealloc(_pfdarray,
-					_pfdarray_size * sizeof(FDLIST_POLLFD));
-		if (!tmp)
+		kqeventsize = Fds_size + 1024;
+		kqevent = fdlist_kqueue_increase(kqevent, kqeventsize);
+		if (kqevent == NULL)
 			return -ENOMEM;
-		_pfdarray = tmp;
 	}
 
-	BCOPY(fdlist->pfd_array, _pfdarray, sizeof(FDLIST_POLLFD)*fdlist->pfd_num); 
-	numfds = fdlist->pfd_num;
-
-	nfds = poll(_pfdarray, numfds, secs*1000);
+	events = kevent(kqsock, kqchange, kqchangepos, kqevent, kqeventsize, &timeout);
+	kqchangepos = 0;
 	Now = time(NULL);
-	if (nfds < 0) /* lets return on EINTR/EAGAIN also */
-	{
-		return nfds;
-	}
-	for(i=0;nfds && i<numfds;i++)
+
+	for(i=0;i<events;++i)
 	{
-		if (!_pfdarray[i].revents)
-			continue;
-		nfds--;
-		if ((cptr = GET_FDS(_pfdarray[i].fd)) == NULL)
+		if ((cptr = (IRCD_CONN *)kqevent[i].udata) == NULL)
 			continue;
+
 		cptr->conn_lasttime = Now;
-		if (IsRes(cptr))
+
+		if (kqevent[i].flags == EV_EOF)
 		{
-			(void)ircdres_get_answer((IRCDRES *)cptr->conn_ptr);
-			continue;
+			cptr = _ircd_client_dead(cptr, "EOF of client");
+			if (cptr == NULL)
+				continue;
 		}
-		if (_pfdarray[i].revents & ~(POLLIN|POLLOUT)) /* some error */
-			_pfdarray[i].revents |= POLLIN; /* will close() upon read()*/
-		if (_pfdarray[i].revents & POLLIN)
+		else if (kqevent[i].flags == EV_ERROR)
 		{
-			if (IsListener(cptr))
-			{
-				IRCD_LISTENER		*lptr = (IRCD_LISTENER *)cptr->conn_ptr;
-				struct sockaddr_in	sin;
-				int					sinsize = sizeof(sin);
-				int 				ipaddr;
-
-				ret = accept(cptr->fdlistinfo.fd,
-							(struct sockaddr *)&sin, &sinsize);
-				if (ret < 0)
-					continue;
-				lptr->l_lasttime = Now;
-				ipaddr = ntohl(sin.sin_addr.s_addr);
-				if (iphash_handle_accept(ipaddr))
-				{
-					int num;
+			if (kqevent[i].data == EBADF)
+				continue;
 
-					if ((num=(int)vars_value_get_bynum(IRCD_VAR_REJECT_HOLD)) > 0)
-					{
-						if (client_add_rejecthold(ret, &sin) >= 0)
-							continue;
-					}
-					close(ret);
-					continue;
-				}
+			cptr = _ircd_client_dead(cptr, "kqueue failure");
+			if (cptr == NULL)
+				continue;
+		}
 
-				if (!access_match_ipaddr(&(_ircd_conf.deny),
-					NULL, NULL, ipaddr, 0, NULL))
-				{
-					DEBUG(DEBUG_ALL, ("denying accept from %s\n",
-						inet_ntoa(sin.sin_addr)));
-					close(ret);
-				}
-				else if (client_add_local(lptr, ret, &sin) < 0)
-					close(ret);
+		if (kqevent[i].filter == EVFILT_READ)
+		{
+			if (IsRes(cptr))
+			{
+				(void)ircdres_get_answer((IRCDRES *)cptr->conn_ptr);
 				continue;
 			}
-			ret = read(cptr->fdlistinfo.fd, readbuf, readbufsize-1);
-			if ((ret < 0) && 
-					((errno == EAGAIN) || (errno == EINTR)
-						|| (errno == EWOULDBLOCK)))
+			if (IsListener(cptr))
+			{
+				_ircd_accept_listener(cptr, kqevent[i].data);
 				continue;
+			}
+
+			ret = read(cptr->fd, readbuf, readbufsize-1);
+
+			if ((ret < 0) && ((errno == EAGAIN) || (errno == EINTR) || (errno == EWOULDBLOCK)))
+				continue;
+
 			if (ret <= 0)
 			{
-				IRCD_CONN	*cptrkeep;
-
 				if (ret == 0)
 					sprintf(exitbuf, "EOF of client");
 				else
 					sprintf(exitbuf, "Read error %i: %s", errno,
 						(errno == 0) ? "Undefined error" : 
 								support_strerror(errno));
-				if (!IsAuth(cptr))
-				{
-					conn_del(meptr, cptr, exitbuf);
+
+				cptr = _ircd_client_dead(cptr, exitbuf);
+				if (cptr == NULL)
 					continue;
-				}
-				/* auth is done. */
-				cptrkeep = ((IRCD_AUTH *)cptr->conn_ptr)->a_clptr->c_connptr;
-				conn_del(meptr, cptr, exitbuf);
-				cptr = cptrkeep; /* fall through to the ircd_parse */
+
 				if ((int)vars_value_get_bynum(IRCD_VAR_SHOW_HEADERS))
-					send_to_client((IRCD_CLIENT *)cptr->conn_ptr, "NOTICE * :*** Ident request failed.");
+					send_to_client((IRCD_CLIENT *)cptr->conn_ptr, "NOTICE AUTH :*** Ident request failed.");
 			}
 			else
 				readbuf[ret] = '\0';
@@ -364,17 +373,16 @@
 						Globalinfo->bw_c_incoming_bytes += ret;
 
 						if (_auth_process(aptr) < 0)
-						{
 							continue;
-						}
+
 						if (sh)
-							send_to_client((IRCD_CLIENT *)cptrkeep->conn_ptr, "NOTICE * :*** Ident reply received.");
+							send_to_client((IRCD_CLIENT *)cptrkeep->conn_ptr, "NOTICE AUTH :*** Ident reply received.");
 						conn_del(meptr, cptr, "Auth Done.");
 					}
 					else
 					{
 						if (sh)
-							send_to_client((IRCD_CLIENT *)cptrkeep->conn_ptr, "NOTICE * :*** Ident request failed: add2queue failed.");
+							send_to_client((IRCD_CLIENT *)cptrkeep->conn_ptr, "NOTICE AUTH :*** Ident request failed: add2queue failed.");
 						conn_del(meptr, cptr, "Couldn't add to RecvQ");
 					}
 					cptr = cptrkeep; /* fall through to the ircd_parse */
@@ -435,7 +443,7 @@
 				}
 			}
 		}
-		if (_pfdarray[i].revents & POLLOUT)
+		else if (kqevent[i].filter == EVFILT_WRITE)
 		{
 			if (IsAuth(cptr))
 			{
@@ -444,19 +452,22 @@
 				int			len;
 				int			sh = (int)vars_value_get_bynum(IRCD_VAR_SHOW_HEADERS);
 
+				if (aptr == NULL)
+					continue;
+
 				if (sh)
-					send_to_client(aptr->a_clptr, "NOTICE * :*** Sending ident request...");
+					send_to_client(aptr->a_clptr, "NOTICE AUTH :*** Sending ident request...");
 				sprintf(buffer, "%u , %u\r\n",
 						(unsigned int)aptr->a_clptr->c_rem_port,
 						(unsigned int)aptr->a_clptr->c_loc_port);
 				len = strlen(buffer);
-				if (write(cptr->fdlistinfo.fd, buffer, len) != len)
+				if (write(cptr->fd, buffer, len) != len)
 				{
 					IRCD_CONN *cptrkeep = aptr->a_clptr->c_connptr;
 					conn_del(meptr, cptr, "write error");
 					cptr = cptrkeep; /* fall through */
 					if (sh)
-						send_to_client((IRCD_CLIENT *)cptr->conn_ptr, "NOTICE * :*** Ident request failed.");
+						send_to_client((IRCD_CLIENT *)cptr->conn_ptr, "NOTICE AUTH :*** Ident request failed.");
 					if (IsCClient(cptr))
 					{
 						IRCD_CLIENT	*clptr = (IRCD_CLIENT *)cptr->conn_ptr;
@@ -476,9 +487,7 @@
 				}
 				else
 				{
-					fdlist_del_event(cptr->fdlistinfo.fdlist,
-						cptr->fdlistinfo.fdlist_pos,
-						FDLIST_FLAGS_WRITE);
+					fdlist_del_event(cptr, FDLIST_FLAGS_WRITE);
 					continue;
 				}
 			}
@@ -490,9 +499,7 @@
 				{
 					clptr->c_flags &= ~CLIENT_FLAGS_DOINGCONNECT;
 					if (!clptr->c_queue_out.queue_size) /* should be false */
-						fdlist_del_event(cptr->fdlistinfo.fdlist,
-							cptr->fdlistinfo.fdlist_pos,
-							FDLIST_FLAGS_WRITE);
+						fdlist_del_event(cptr, FDLIST_FLAGS_WRITE);
 				}
 				if ((clptr->c_maxsendq != -1) &&
 					(clptr->c_queue_out.queue_size > clptr->c_maxsendq))
@@ -578,7 +585,7 @@
 				IRCD_CLIENT	*clptr = aptr->a_clptr;
 
 				if (sh)
-					send_to_client(clptr, "NOTICE * :*** Ident request failed: Timed out");
+					send_to_client(clptr, "NOTICE AUTH :*** Ident request failed: Timed out");
 				auth_del(meptr, aptr, "Auth timeout.");
 				if (!IsDoingDns(clptr))
 				{
@@ -631,7 +638,7 @@
 				*/
 				ircdres_request_del(pptr->c_res_req->rl_req, 0);
 				if (sh)
-					send_to_client(pptr, "NOTICE * :*** %s DNS request failed: Timed out",
+					send_to_client(pptr, "NOTICE AUTH :*** %s DNS request failed: Timed out",
 							type == T_PTR ? "Reverse" : "Forward");
 				pptr->c_res_req->rl_req = NULL;
 				del_reqlist_from_list(&Reqlist, pptr->c_res_req);
@@ -674,49 +681,6 @@
 				pptr->c_flags |= CLIENT_FLAGS_PINGSENT;
 			}
 		}
-		/* fdlist check */
-		if (IsClient(pptr))
-		{
-			int		fdlistnum = Now - pptr->c_idletime;
-			FDLIST	*fdlist = Fdlist_main;
-			int		mfd;
-			int		ret;
-			int		flags;
-			int		nfdlists;
-			int		ptime;
-
-			if (!IsAnOper(pptr) && ((nfdlists = (int)vars_value_get_bynum(IRCD_VAR_PRIORITY_FDLISTS)) > 0))
-			{
-				ptime = (int)vars_value_get_bynum(IRCD_VAR_PRIORITY_IDLE);
-				fdlistnum /= ptime;
-				if (fdlistnum > 0)
-				{
-					fdlistnum--;
-					if (fdlistnum >= nfdlists)
-						fdlistnum = nfdlists - 1;
-					fdlist = &Fdlist_clients[fdlistnum];
-				}
-			}
-			if (pptr->c_connptr->fdlistinfo.fdlist != fdlist)
-			{
-				flags = fdlist_get_events(pptr->c_connptr->fdlistinfo.fdlist,
-					pptr->c_connptr->fdlistinfo.fdlist_pos);
-				assert(flags);
-				ret = fdlist_del_fd(pptr->c_connptr->fdlistinfo.fdlist,
-                        pptr->c_connptr->fdlistinfo.fdlist_pos, &mfd);
-				if (mfd >= 0)
-				{
-					if (GET_FDS(mfd))
-						GET_FDS(mfd)->fdlistinfo.fdlist_pos =
-	                        pptr->c_connptr->fdlistinfo.fdlist_pos;
-				}
-				ret = ircd_open_fd(pptr->c_connptr->fdlistinfo.fd, flags, pptr->c_connptr, fdlist);
-				if (ret < 0)
-				{
-					client_del(meptr, pptr, "Fdlist problem");
-				}
-			}
-		}
 	}
 }
 
@@ -881,9 +845,6 @@
 static int _ircdso_firsttime(char *conf_file)
 {
 	int				ret;
-	register int	i;
-	int				opt;
-	int				optlen;
 
 	Ircd_zero_fd = open("/dev/zero", O_RDWR);
 	if (Ircd_zero_fd < 0)
@@ -892,64 +853,11 @@
 		exit(-1);
 	}
 
-	if ((i = socket(AF_INET, SOCK_STREAM, 0)) < 0)
-	{
-		fprintf(stderr, "couldn't socket(): %i\n", -errno);
-		exit(-1);
-	}
-
-	optlen = sizeof(opt);
-	if (getsockopt(i, SOL_SOCKET, SO_RCVBUF, (char *)&opt, &optlen) < 0)
-	{
-		fprintf(stderr, "couldn't getsockopt(): %i\n", -errno);
-		exit(-1);
-	}
-
-	while(setsockopt(i, SOL_SOCKET, SO_RCVBUF, (char *)&opt, sizeof(opt)) >= 0)
-	{
-		opt += 1024;
-		if (opt > (64*1024))
-			break;
-	}
-
-	optlen = sizeof(opt);
-	if (getsockopt(i, SOL_SOCKET, SO_RCVBUF, (char *)&opt, &optlen) < 0)
-	{
-		fprintf(stderr, "couldn't getsockopt(): %i\n", -errno);
-		exit(-1);
-	}
-
-	Recvbuffersize = opt;
-
-	optlen = sizeof(opt);
-	if (getsockopt(i, SOL_SOCKET, SO_SNDBUF, (char *)&opt, &optlen) < 0)
-	{
-		fprintf(stderr, "couldn't getsockopt(): %i\n", -errno);
-		exit(-1);
-	}
-
-	while(setsockopt(i, SOL_SOCKET, SO_SNDBUF, (char *)&opt, sizeof(opt)) >= 0)
-	{
-		opt += 1024;
-		if (opt > (64*1024))
-			break;
-	}
-
-	optlen = sizeof(opt);
-	if (getsockopt(i, SOL_SOCKET, SO_SNDBUF, (char *)&opt, &optlen) < 0)
-	{
-		fprintf(stderr, "couldn't getsockopt(): %i\n", -errno);
-		exit(-1);
-	}
-
-	Sendbuffersize = opt;
-	close(i);
 
 	Conffile = MyStrdup(conf_file);
 
 	meptr = (IRCD_CLIENT *)MyMalloc(sizeof(IRCD_CLIENT));
 	Fds_size = 1024;
-	Fds = (IRCD_CONN **)MyMalloc(sizeof(IRCD_CONN *) * Fds_size);
 	Sentalong_size = 1024;
 	Sentalong = (int *)MyMalloc(sizeof(int) * Sentalong_size);
 	Sentalong_marker = 0;
@@ -961,11 +869,6 @@
 			Globalinfo->m_totclientstime = (int)time(NULL);
 	Globalinfo->g_servers = 1;
 
-	Fdlist_num = 100;
-	Fdlist_main = (FDLIST *)MyMalloc(sizeof(FDLIST));
-	Fdlist_clients = (FDLIST *)MyMalloc(sizeof(FDLIST) * Fdlist_num);
-	Fdlist_lasttime = (int *)MyMalloc(sizeof(int) * Fdlist_num);
-
 	Flooders = (IRCD_CLIENT **)MyMalloc(sizeof(IRCD_CLIENT *));
 	Clients = (IRCD_CLIENT **)MyMalloc(sizeof(IRCD_CLIENT *));
 	Opers = (IRCD_CLIENT **)MyMalloc(sizeof(IRCD_CLIENT *));
@@ -974,6 +877,12 @@
 	Ircd_resconn = (IRCD_CONN *)MyMalloc(sizeof(IRCD_CONN));
 	Ircd_resconn->conn_type = IRCD_CONN_TYPE_RES;
 
+	if ((kqsock = kqueue()) < 0)
+	{
+		fprintf(stderr, "Couldn't allocate a kqueue\n");
+		exit(-1);
+	}
+
 	ret = ircdres_init((IRCDRES **)(&(Ircd_resconn->conn_ptr)));
 	if (ret < 0)
 	{
@@ -981,7 +890,7 @@
 		exit(-1);
 	}
 
-#if 0
+#if 1
 	ircd_pagesize = ircd_getpagesize();
 #else
 	ircd_pagesize = 2*1024;
@@ -990,17 +899,9 @@
 	vars_init();
 	numeric_init();
 	ircdconf_init(&_ircd_conf);
-	fdlist_init(Fdlist_main);
-
-	for(i=0;i<Fdlist_num;i++)
-	{
-		fdlist_init(&Fdlist_clients[i]);
-		Fdlist_lasttime[i] = 0;
-	}
-
 	iphash_init();
 
-	if (ircd_open_fd(((IRCDRES *)Ircd_resconn->conn_ptr)->res_fd,FDLIST_FLAGS_READ, Ircd_resconn, NULL)<0)
+	if (ircd_open_fd(((IRCDRES *)Ircd_resconn->conn_ptr)->res_fd,FDLIST_FLAGS_READ, Ircd_resconn)<0)
 	{
 		fprintf(stderr, "Error putting resfd into fdlist\n");
 		exit(-1);
@@ -1102,15 +1003,10 @@
 	{
 		if (!Coreptr || (*ircdcore_data_size != sizeof(IRCD_DATA)))
 			return -EFAULT;
-		Fdlist_num = Coreptr->Fdlist_num;
 		Conffile = Coreptr->Conffile;
 		ircd_pagesize = Coreptr->ircd_pagesize;
-		Fdlist_main = Coreptr->Fdlist_main;
-		Fdlist_clients = Coreptr->Fdlist_clients;
-		Fdlist_lasttime = Coreptr->Fdlist_lasttime;
 		Ircd_resconn = Coreptr->Ircd_resconn;
 		meptr = Coreptr->meptr;
-		Fds = Coreptr->Fds;
 		Fds_size = Coreptr->Fds_size;
 		Reqlist = Coreptr->ResReqlist;
 		Locals = Coreptr->Locals;
@@ -1123,8 +1019,6 @@
 		Globalinfo = Coreptr->Globalinfo;
 		Rejectholds = Coreptr->Rejectholds;
 		Motd = Coreptr->Motd;
-		Sendbuffersize = Coreptr->Sendbuffersize;
-		Recvbuffersize = Coreptr->Recvbuffersize;
 		Sentalong = Coreptr->Sentalong;
 		Sentalong_marker = Coreptr->Sentalong_marker;
 		Sentalong_end = Coreptr->Sentalong_end;
@@ -1165,19 +1059,11 @@
 	*ircdcore_data_size = sizeof(IRCD_DATA);
 	*ircdcore_data_format_version = 0;
 
-	if (_pfdarray)
-		MyFree(_pfdarray);
-
 	ircdres_deinit_reload(&Coreptr->ResRequests);
 	Coreptr->Conffile = Conffile;
 	Coreptr->ircd_pagesize = ircd_pagesize;
-	Coreptr->Fdlist_num = Fdlist_num;
-	Coreptr->Fdlist_main = Fdlist_main;
-	Coreptr->Fdlist_clients = Fdlist_clients;
-	Coreptr->Fdlist_lasttime = Fdlist_lasttime;
 	Coreptr->Ircd_resconn = Ircd_resconn;
 	Coreptr->meptr = meptr;
-	Coreptr->Fds = Fds;
 	Coreptr->Fds_size = Fds_size;
 	Coreptr->ResReqlist = Reqlist;
 	Coreptr->Locals = Locals;
@@ -1190,8 +1076,6 @@
 	Coreptr->Globalinfo = Globalinfo;
 	Coreptr->Rejectholds = Rejectholds;
 	Coreptr->Motd = Motd;
-	Coreptr->Sendbuffersize = Sendbuffersize;
-	Coreptr->Recvbuffersize = Recvbuffersize;
 	Coreptr->Sentalong = Sentalong;
 	Coreptr->Sentalong_size = Sentalong_size;
 	Coreptr->Sentalong_marker = Sentalong_marker;
@@ -1230,8 +1114,6 @@
 					int *Data_size)
 {
 	int			ret;
-	FDLIST		*curfdlist;
-	int			i;
 
 	if (!Data_format_version || !Data || !Data_size ||
 			!Ircdcore_versionstring)
@@ -1255,7 +1137,6 @@
 	if (!firsttime)
 		send_to_opers("ircd.so has been reloaded");
 
-	curfdlist = Fdlist_main;
 	for(;;)
 	{
 		if (DoRehash)
@@ -1267,6 +1148,13 @@
 
 		if (DoReload)
 		{
+			if (access("./ircd.so", R_OK) < 0)
+			{
+				send_to_opers("Unable to access ircd.so -- reload aborted");
+				DoReload = 0;
+				continue;
+			}
+
 			ret = _ircdso_deinit();
 
 			if (ret < 0)
@@ -1279,21 +1167,7 @@
 			}
 		}
 
-		ret = _ircd_pollfds(curfdlist, 2);
-
-		if (Now >= (Fdlist_lasttime[0] + (int)vars_value_get_bynum(IRCD_VAR_PRIORITY_LAG)))
-		{
-			_ircd_pollfds(&Fdlist_clients[0], 0);
-			Fdlist_lasttime[0] = Now;
-			for(i=1;i<(int)vars_value_get_bynum(IRCD_VAR_PRIORITY_FDLISTS);i++)
-			{
-				if (Now >= (Fdlist_lasttime[i] + ((i+1)*(int)vars_value_get_bynum(IRCD_VAR_PRIORITY_LAG))))
-				{
-					_ircd_pollfds(&Fdlist_clients[i], 0);
-					Fdlist_lasttime[i] = Now;
-				}
-			}
-		}
+		ret = _ircd_pollfds(kqsock, 2);
 
 		{
 			static int	lastcheck = 0;
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/misc.c ircd-devel/lib/misc.c
--- ircd-comstud-1.12-REL/lib/misc.c	Thu Dec  7 04:26:32 2000
+++ ircd-devel/lib/misc.c	Sun Dec 10 08:50:15 2000
@@ -218,17 +218,14 @@
 		_command_tree_add(cptr->command, cptr);
 }
 
-int ircd_open_fd(int fd, int flags, IRCD_CONN *ptr, FDLIST *fdlistptr)
+int ircd_open_fd(int fd, int flags, IRCD_CONN *ptr)
 {
-	FDLISTINFO	*fdlistinfo;
-
 	if (fd < 0)
 		return -EINVAL;
+
 	if (fd >= Fds_size)
-	{
 		Fds_size = fd + 1024;
-		Fds = (IRCD_CONN **)MyRealloc(Fds, sizeof(IRCD_CONN *) * Fds_size);
-	}
+
 	if (fd >= Sentalong_size)
 	{
 		Sentalong_size = fd + 1024;
@@ -236,37 +233,21 @@
 		Sentalong_end = Sentalong + Sentalong_size;
 		Sentalong_marker = 0; /* next "send" call will 0 Sentalong out */
 	}
-	SET_FDS(fd, ptr);
-	fdlistinfo = &(ptr->fdlistinfo);
-	fdlistinfo->fd = fd;
-	fdlistinfo->fdlist = fdlistptr ? fdlistptr : Fdlist_main;
-	if (flags)
-	{
-		fdlistinfo->fdlist_pos = fdlist_add_fd(fdlistinfo->fdlist, fd, flags);
-		return fdlistinfo->fdlist_pos;
-	}
-	fdlistinfo->fdlist_pos = -1;
+
+	ptr->fd = fd;
+
+	fdlist_add_event(ptr, flags);
+
 	return 0;
 }
 
-int ircd_close_fd(FDLISTINFO *fdlistinfo)
+int ircd_close_fd(int fd)
 {
-	int		ret;
-	int		mfd;
-
-	if (!fdlistinfo || fdlistinfo->fd < 0)
+	if (fd < 0)
 		return -EINVAL;
-	close(fdlistinfo->fd);
-	SET_FDS(fdlistinfo->fd, NULL);
-	if (fdlistinfo->fdlist && fdlistinfo->fdlist_pos >= 0)
-	{
-		ret = fdlist_del_fd(fdlistinfo->fdlist, fdlistinfo->fdlist_pos, &mfd);
-		if ((ret > 0) && (mfd >= 0)) /* update moved fds's position in fdlist */
-		{
-			if (GET_FDS(mfd))
-				GET_FDS(mfd)->fdlistinfo.fdlist_pos = fdlistinfo->fdlist_pos;
-		}
-	}
+
+	close(fd);
+
 	return 0;
 }
 
@@ -292,7 +273,7 @@
     rhptr->rh_rem_ipaddr = ntohl(rem_sin->sin_addr.s_addr);
     rhptr->rh_rem_port = ntohs(rem_sin->sin_port);
 	rhptr->rh_lasttime = rhptr->rh_firsttime = Now;
-    ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, rhptr->rh_connptr, NULL);
+    ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, rhptr->rh_connptr);
     if (ret < 0)
     {
         MyFree(rhptr->rh_connptr);
@@ -318,8 +299,8 @@
 
 		if (sh)
 		{
-			send_to_client(cptr, "NOTICE * :*** Reverse DNS reply received.");
-			send_to_client(cptr, "NOTICE * :*** Doing forward DNS lookup...");
+			send_to_client(cptr, "NOTICE AUTH :*** Reverse DNS reply received.");
+			send_to_client(cptr, "NOTICE AUTH :*** Doing forward DNS lookup...");
 		}
 
 		cptr->c_res_req->rl_reverse = result->res_he;
@@ -329,7 +310,7 @@
 		if ((ret >= 0) && heptr)
 		{
 			if (sh)
-				send_to_client(cptr, "NOTICE * :*** Forward DNS reply received.");
+				send_to_client(cptr, "NOTICE AUTH :*** Forward DNS reply received.");
 			cptr->c_res_req->rl_forward = heptr;
 			del_reqlist_from_list(&Reqlist, cptr->c_res_req);
 			assert(0); /* FIX if we finish dns cache */
@@ -343,14 +324,14 @@
 		else
 		{
 			if (sh)
-				send_to_client(cptr, "NOTICE * :*** Forward DNS request failed.");
+				send_to_client(cptr, "NOTICE AUTH :*** Forward DNS request failed.");
 			del_reqlist_from_list(&Reqlist, cptr->c_res_req);
 		}
 	}
 	else
 	{
 		if (sh)
-			send_to_client(cptr, "NOTICE * :*** Reverse DNS request failed.");
+			send_to_client(cptr, "NOTICE AUTH :*** Reverse DNS request failed.");
 		del_reqlist_from_list(&Reqlist, cptr->c_res_req);
 	}
 	if (!(cptr->c_flags & (CLIENT_FLAGS_DOINGAUTH|CLIENT_FLAGS_DOINGDNS)))
@@ -372,7 +353,7 @@
 		struct in_addr	inaddr;
 
 		if (sh)
-			send_to_client(cptr, "NOTICE * :*** Forward DNS reply received.");
+			send_to_client(cptr, "NOTICE AUTH :*** Forward DNS reply received.");
 
 		cptr->c_res_req->rl_forward = result->res_he;
 
@@ -392,7 +373,7 @@
 	else
 	{
 		if (sh)
-			send_to_client(cptr, "NOTICE * :*** Forward DNS request failed.");
+			send_to_client(cptr, "NOTICE AUTH :*** Forward DNS request failed.");
 	}
 	if (!(cptr->c_flags & CLIENT_FLAGS_DOINGAUTH))
 	{
@@ -459,7 +440,7 @@
         MyFree(cptr);
         return ret;
     }
-    ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, cptr->c_connptr, NULL);
+    ret = ircd_open_fd(fd, FDLIST_FLAGS_READ, cptr->c_connptr);
     if (ret < 0)
     {
         queue_delete(&(cptr->c_queue_in));
@@ -482,7 +463,7 @@
 	sh = (int)vars_value_get_bynum(IRCD_VAR_SHOW_HEADERS);
 
 	if (sh)
-		send_to_client(cptr, "NOTICE * :*** Doing reverse DNS lookup...");
+		send_to_client(cptr, "NOTICE AUTH :*** Doing reverse DNS lookup...");
 
 	ret = ircdres_gethostbyaddr((IRCDRES *)(Ircd_resconn->conn_ptr), &inaddr,
 				(ircdres_func_t)_client_res_callback1, (void *)cptr,
@@ -491,8 +472,8 @@
 	{
 		if (sh)
 		{
-			send_to_client(cptr, "NOTICE * :*** Reverse DNS reply received.");
-			send_to_client(cptr, "NOTICE * :*** Doing forward DNS lookup...");
+			send_to_client(cptr, "NOTICE AUTH :*** Reverse DNS reply received.");
+			send_to_client(cptr, "NOTICE AUTH :*** Doing forward DNS lookup...");
 		}
 		cptr->c_res_req->rl_reverse = heptr;
 		ret = ircdres_gethostbyname((IRCDRES *)(Ircd_resconn->conn_ptr),
@@ -502,7 +483,7 @@
 		if ((ret >= 0) && heptr)
 		{
 			if (sh)
-				send_to_client(cptr, "NOTICE * :*** Forward DNS reply received.");
+				send_to_client(cptr, "NOTICE AUTH :*** Forward DNS reply received.");
 			cptr->c_res_req->rl_forward = heptr;
 		}
 		else if (ret == -EINPROGRESS)
@@ -518,7 +499,7 @@
 	}
 
 	if (sh)
-		send_to_client(cptr, "NOTICE * :*** Connecting for ident request...");
+		send_to_client(cptr, "NOTICE AUTH :*** Connecting for ident request...");
 
 	afd = mysocket_connectip(cptr->c_rem_ipaddr, 113,
 		cptr->c_loc_ipaddr, MYSOCKET_FLAGS_REUSEADDR|MYSOCKET_FLAGS_NONBLOCKING);
@@ -535,7 +516,7 @@
 	    if (ret < 0)
 	    {
 			if (sh)
-				send_to_client(cptr, "NOTICE * :*** Ident request failed: in_queue init failed");
+				send_to_client(cptr, "NOTICE AUTH :*** Ident request failed: in_queue init failed");
 			close(afd);
 	        MyFree(authptr->a_connptr);
 	        MyFree(authptr);
@@ -543,10 +524,10 @@
 			cptr->c_flags &= ~CLIENT_FLAGS_DOINGAUTH;
 	        return 0;
 	    }
-		if (ircd_open_fd(afd, FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE, authptr->a_connptr, NULL) < 0)
+		if (ircd_open_fd(afd, FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE, authptr->a_connptr) < 0)
 		{
 			if (sh)
-				send_to_client(cptr, "NOTICE * :*** Ident request failed: fd init failed");
+				send_to_client(cptr, "NOTICE AUTH :*** Ident request failed: fd init failed");
 			queue_delete(&(authptr->a_queue_in));
 			close(afd);
 	        MyFree(authptr->a_connptr);
@@ -560,14 +541,14 @@
 	else
 	{
 		if (sh)
-			send_to_client(cptr, "NOTICE * :*** Ident request failed.");
+			send_to_client(cptr, "NOTICE AUTH :*** Ident request failed.");
 	}
     return 0;
 }
 
 int rejecthold_del(IRCD_CLIENT *from, IRCD_REJECTHOLD *rptr, char *reason)
 {
-	ircd_close_fd(&(rptr->rh_connptr->fdlistinfo));
+	ircd_close_fd(rptr->rh_connptr->fd);
 	del_rejecthold_from_rhlist(&Rejectholds, rptr);
 	rptr->rh_connptr->conn_ptr = NULL;
 	MyFree(rptr->rh_connptr);
@@ -577,7 +558,7 @@
 
 int auth_del(IRCD_CLIENT *from, IRCD_AUTH *cptr, char *reason)
 {
-	ircd_close_fd(&(cptr->a_connptr->fdlistinfo));
+	ircd_close_fd(cptr->a_connptr->fd);
     queue_delete(&(cptr->a_queue_in));
 	del_auth_from_alist(&Auths, cptr);
 	Auths_did_delete = 1;
@@ -771,13 +752,15 @@
 		MyFree(cptr->c_connectby);
 		cptr->c_connectby = NULL;
 	}
+#if 0
 	client_queue_flush(cptr, NULL);
-	ircd_close_fd(&(cptr->c_connptr->fdlistinfo));
+#endif
+	ircd_close_fd(cptr->c_connptr->fd);
 	cptr->c_connptr->conn_ptr = NULL;
 	MyFree(cptr->c_connptr);
 	cptr->c_connptr = NULL;
-    queue_delete(&(cptr->c_queue_in));
-    queue_delete(&(cptr->c_queue_out));
+	queue_delete(&(cptr->c_queue_in));
+	queue_delete(&(cptr->c_queue_out));
 	cptr->c_flags |= CLIENT_FLAGS_DEAD;
 	assert(IsLocal(cptr));
 	del_client_from_lolist(&Locals, cptr);
@@ -948,7 +931,7 @@
 		{
 			assert(cptr->c_listener->l_clients == NULL);
 			del_listener_from_llist(&(_ircd_conf.listeners), cptr->c_listener);
-			ircd_close_fd(&(cptr->c_listener->l_connptr->fdlistinfo));
+			ircd_close_fd(cptr->c_listener->l_connptr->fd);
 			cptr->c_listener->l_connptr->conn_ptr = NULL;
 			MyFree(cptr->c_listener->l_connptr);
             MyFree(cptr->c_listener);
@@ -1226,17 +1209,17 @@
 
 	if (!src || !(sptr = *src))
 		return NULL;
-	while(*sptr == ',')
+	while(*sptr == ' ')
 		sptr++;
 	if (!*sptr)
 		return NULL;
 	tok = sptr;
-	while(*sptr && *sptr != ',')
+	while(*sptr && *sptr != ' ')
 		sptr++;
 	if (*sptr)
 	{
 		*sptr++ = '\0';
-		while(*sptr == ',')
+		while(*sptr == ' ')
 			sptr++;
 		*src = sptr;
 	}
@@ -1288,14 +1271,13 @@
 
 		ret = queue_data_get(&(cptr->c_queue_out), &ptr, &len);
 		assert(ret >= 0);
-		ret = write(cptr->c_connptr->fdlistinfo.fd, ptr, len);
+		ret = write(cptr->c_connptr->fd, ptr, len);
 		if (ret > 0)
 		{
 			if (IsClient(cptr))
 				Globalinfo->bw_c_outgoing_bytes += ret;
 			else if (IsServer(cptr))
 				Globalinfo->bw_s_outgoing_bytes += ret;
-			cptr->c_writetries = 0;
 			queue_data_del(&(cptr->c_queue_out), ret);
 			if (ret == len)
 				continue;
@@ -1320,9 +1302,10 @@
 		}
 		break;
 	}
+
 	if (!(cptr->c_lastqsize = cptr->c_queue_out.queue_size))
-		fdlist_del_event(cptr->c_connptr->fdlistinfo.fdlist,
-			cptr->c_connptr->fdlistinfo.fdlist_pos, FDLIST_FLAGS_WRITE);
+		fdlist_del_event(cptr->c_connptr, FDLIST_FLAGS_WRITE);
+
 	return 0;
 }
 
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/numeric.c ircd-devel/lib/numeric.c
--- ircd-comstud-1.12-REL/lib/numeric.c	Sun Oct 22 21:52:24 2000
+++ ircd-devel/lib/numeric.c	Tue Dec  5 12:40:50 2000
@@ -51,10 +51,10 @@
 {
 /* 200 */	{	RPL_TRACELINK,			"Link %s%s %s %s" },
 /* 201 */	{	RPL_TRACECONNECTING,	"Try. %s %s" },
-/* 202 */	{	RPL_TRACEHANDSHAKE,		"H.S. %s %s" },
-/* 203 */	{	RPL_TRACEUNKNOWN,		"???? %s %s" },
-/* 204 */	{	RPL_TRACEOPERATOR,		"Oper %s %s" },
-/* 205 */	{	RPL_TRACEUSER,			"User %s %s" },
+/* 202 */	{	RPL_TRACEHANDSHAKE,		"H.S. %s %s (%s)" },
+/* 203 */	{	RPL_TRACEUNKNOWN,		"???? %s %s (%s)" },
+/* 204 */	{	RPL_TRACEOPERATOR,		"Oper %s %s (%s)" },
+/* 205 */	{	RPL_TRACEUSER,			"User %s %s (%s)" },
 /* 206 */	{	RPL_TRACESERVER,		"Serv %s %dS %dC %s %s" },
 /* 207 */	{	RPL_TRACESERVICE,		"Service %s %s" },
 /* 208 */	{	RPL_TRACENEWTYPE,		"<newtype> 0 %s" },
diff -uNrd -x CVS ircd-comstud-1.12-REL/lib/send.c ircd-devel/lib/send.c
--- ircd-comstud-1.12-REL/lib/send.c	Wed Jul  5 13:48:03 2000
+++ ircd-devel/lib/send.c	Sun Dec  3 12:17:45 2000
@@ -55,12 +55,13 @@
 		cptr->c_send_bytes %= 1024;
 	}
 
+// humble
 	if (
 		IsServer(cptr) &&
 		!cptr->c_queue_out.queue_size &&
 		!(cptr->c_flags & CLIENT_FLAGS_DOINGCONNECT))
 	{
-		ret = write(cptr->c_connptr->fdlistinfo.fd, addptr, len);
+		ret = write(cptr->c_connptr->fd, addptr, len);
 		if (ret > 0)
 		{
 			if (IsClient(cptr))
@@ -79,64 +80,9 @@
 		cptr->c_flags |= CLIENT_FLAGS_DEAD;
 		return -1;
 	}
-#if 1
-	if (cptr->c_connptr->fdlistinfo.fdlist != Fdlist_main)
-	{
-		int mfd;
 
-		ret = fdlist_del_fd(cptr->c_connptr->fdlistinfo.fdlist,
-						cptr->c_connptr->fdlistinfo.fdlist_pos, &mfd);
-		if (mfd >= 0)
-		{
-			if (GET_FDS(mfd))
-				GET_FDS(mfd)->fdlistinfo.fdlist_pos =
-						cptr->c_connptr->fdlistinfo.fdlist_pos;
-		}
-		ret = ircd_open_fd(cptr->c_connptr->fdlistinfo.fd,
-					FDLIST_FLAGS_READ|FDLIST_FLAGS_WRITE, cptr->c_connptr, Fdlist_main);
-	}
-	else
-#endif
-		ret = fdlist_add_event(cptr->c_connptr->fdlistinfo.fdlist,
-				cptr->c_connptr->fdlistinfo.fdlist_pos, FDLIST_FLAGS_WRITE);
-	if ((cptr->c_queue_out.queue_size >= cptr->c_lastqsize + 4096) &&
-			!(cptr->c_flags & CLIENT_FLAGS_DOINGCONNECT))
-	{
-		char	*buf;
-		int		len;
+	ret = fdlist_add_event(cptr->c_connptr, FDLIST_FLAGS_WRITE);
 
-		if (cptr->c_writetries++ == 5)
-			cptr->c_writetries = 1;
-		if (cptr->c_writetries == 1)
-		{
-			ret = queue_data_get(&(cptr->c_queue_out), &buf, &len);
-			if (ret >= 0)
-			{
-				cptr->c_lastqsize = cptr->c_queue_out.queue_size;
-				ret = write(cptr->c_connptr->fdlistinfo.fd, buf, len);
-				if (ret > 0)
-				{
-					if (IsClient(cptr))
-						Globalinfo->bw_c_outgoing_bytes += ret;
-					else if (IsServer(cptr))
-						Globalinfo->bw_s_outgoing_bytes += ret;
-					cptr->c_writetries = 0;
-					queue_data_del(&(cptr->c_queue_out), ret);
-				}
-				else if (ret < 0)
-				{
-					if ((errno != EAGAIN) && (errno != EINTR) &&
-										(errno != EWOULDBLOCK))
-					{
-						cptr->c_flags |= CLIENT_FLAGS_DEAD;
-						return -1;
-					}
-					if (++cptr->c_writetries == 5)
-						cptr->c_writetries = 0;
-				}
-			}
-		}
-	}
 	return ret >= 0 ? len : ret;
 }
 
@@ -529,8 +475,8 @@
 	Sentalong_marker++;
 	if (IsLocal(pptr) && pptr->c_connptr)
 	{
-		assert(pptr->c_connptr->fdlistinfo.fd < Sentalong_size);
-		Sentalong[pptr->c_connptr->fdlistinfo.fd] = Sentalong_marker;
+		assert(pptr->c_connptr->fd < Sentalong_size);
+		Sentalong[pptr->c_connptr->fd] = Sentalong_marker;
 	}
 
 	*clientbuf = ':';
@@ -572,9 +518,9 @@
 		for(users=chlptr->chptr->members;users;users=users->next)
 		{
 			cptr = users->cptr;
-			if (!IsLocal(cptr) || !cptr->c_connptr || (Sentalong[cptr->c_connptr->fdlistinfo.fd] == Sentalong_marker))
+			if (!IsLocal(cptr) || !cptr->c_connptr || (Sentalong[cptr->c_connptr->fd] == Sentalong_marker))
 				continue;
-			Sentalong[cptr->c_connptr->fdlistinfo.fd] = Sentalong_marker;
+			Sentalong[cptr->c_connptr->fd] = Sentalong_marker;
 			_send_message_to_client(cptr, clientbuf, len+2);
 		}
 	}
@@ -666,11 +612,11 @@
 			if (!(flags & CHANNEL_SEND_CLIENTS))
 				continue;
 		}
-		assert(cptr->c_connptr->fdlistinfo.fd < Sentalong_size);
+		assert(cptr->c_connptr->fd < Sentalong_size);
 		if (!cptr->c_connptr ||
-			(Sentalong[cptr->c_connptr->fdlistinfo.fd] == Sentalong_marker))
+			(Sentalong[cptr->c_connptr->fd] == Sentalong_marker))
 				continue;
-		Sentalong[cptr->c_connptr->fdlistinfo.fd] = Sentalong_marker;
+		Sentalong[cptr->c_connptr->fd] = Sentalong_marker;
 		if (IsServer(cptr))
 			_send_message_to_client(cptr, serverbuf, slen+2);
 		else
@@ -750,11 +696,11 @@
 			if (!(flags & CHANNEL_SEND_CLIENTS))
 				continue;
 		}
-		assert(cptr->c_connptr->fdlistinfo.fd < Sentalong_size);
+		assert(cptr->c_connptr->fd < Sentalong_size);
 		if (!cptr->c_connptr ||
-			(Sentalong[cptr->c_connptr->fdlistinfo.fd] == Sentalong_marker))
+			(Sentalong[cptr->c_connptr->fd] == Sentalong_marker))
 				continue;
-		Sentalong[cptr->c_connptr->fdlistinfo.fd] = Sentalong_marker;
+		Sentalong[cptr->c_connptr->fd] = Sentalong_marker;
 		if (IsServer(cptr))
 			_send_message_to_client(cptr, serverbuf, slen+2);
 		else
diff -uNrd -x CVS ircd-comstud-1.12-REL/source/Makefile.in ircd-devel/source/Makefile.in
--- ircd-comstud-1.12-REL/source/Makefile.in	Wed Dec 31 19:00:00 1969
+++ ircd-devel/source/Makefile.in	Tue Dec  5 12:22:46 2000
@@ -0,0 +1,18 @@
+CC 		= @CC@
+CFLAGS 		= -g
+LDFLAGS		= @LDFLAGS@
+DEFS 		= @DEFS@
+LIBS		= @LIBS@
+
+OBJS=	ircd
+
+all:	ircdcore
+
+ircdcore:
+	${CC} ${CFLAGS} ${DEFS} -I. -I../include ircdcore.c -o ../ircd ${LIBS}
+
+clean:
+	rm -f ${OBJS} ${LIB}
+
+distclean: clean
+	rm -f Makefile
diff -uNrd -x CVS ircd-comstud-1.12-REL/utils/Makefile.in ircd-devel/utils/Makefile.in
--- ircd-comstud-1.12-REL/utils/Makefile.in	Wed Dec 31 19:00:00 1969
+++ ircd-devel/utils/Makefile.in	Tue Dec  5 12:28:20 2000
@@ -0,0 +1,28 @@
+CC 		= @CC@
+CFLAGS 		= -g
+LDFLAGS		= @LDFLAGS@
+DEFS 		= @DEFS@
+LIBS		= @LIBS@
+
+CIDRTEST_OBJS=	cidrtest.o ../lib/cidr.o ../lib/match.o
+MKPASSWD_OBJS=	mkpasswd.o
+
+BINS=	cidrtest mkpasswd
+OBJS=	${CIDRTEST_OBJS} ${MKPASSWD_OBJS}
+
+.c.o:
+	${CC} ${CFLAGS} ${DEFS} -I. -I../include -c $< -o $@
+
+all:	cidrtest mkpasswd
+
+cidrtest: ${CIDRTEST_OBJS}
+	${CC} ${CFLAGS} ${DEFS} -I. -I../include -o $@ ${CIDRTEST_OBJS} ${LIBS}
+
+mkpasswd: ${MKPASSWD_OBJS}
+	${CC} ${CFLAGS} ${DEFS} -I. -I../include -o $@ ${MKPASSWD_OBJS} ${LIBS}
+
+clean:
+	-rm -f ${OBJS} ${BINS} ${LIB}
+
+distclean: clean
+	-rm -f Makefile
