diff -BbuprN -x '*.o' suntzu/ChangeLog.suntzu yoda/ChangeLog.suntzu
--- suntzu/ChangeLog.suntzu	2004-08-31 21:47:06.000000000 -0500
+++ yoda/ChangeLog.suntzu	2004-09-29 21:06:28.000000000 -0500
@@ -1,4 +1,57 @@
 changelog:
+        9/28/04 
+	- Added the wizupdate command back in, it appears to have been
+	  taken out during the APF upgrade a few releases back.
+	  Thanks to Random for pointing that out!
+        9/27/04 
+	- Added current.patch submitted by Cunning.
+	  This code randomly moves you out of a room flagged CURRENT.
+	- Added color_question_remove.patch submitted by Cunning.
+ 	  This modifies the query ansi code so you don't have to answer
+	  Y/N each time you connect.
+        9/23/04 
+	- Added Circle Unsigned Patch submitted by 
+	  Star (starchaser5000@yahoo.co.uk)
+        9/20/04 
+	- Updates to oedit.c to fix iedit crashes.
+	  Thanks to Fnord!
+        9/18/04 
+	- Added a cedit toggle for CONFIG_ALL_ITEMS_UNIQUE. This
+	  goes along with code submitted by Fnord which tags all
+	  items in the game with a unique ID stamp. This is to help
+	  prevent object duping. The default behavior is ON, and this
+	  means all objects created will be flagged with the UNIQUE flag.
+	  You can see more info with the show uniques command, or
+	  show uniques (vnum) of an object you are interested in. If you do
+	  toggle this flag ON or OFF you should copyover to reload all objects
+	  appropriately. 
+	  Thanks to Fnord!
+        9/11/04 
+	- Added a cedit toggle for CONFIG_ENABLE_LANGUAGES. The default
+	  behavior is ON. However, turning this off makes everyone speak
+	  and understand the same language.
+	- Added sector type to the information displayed on a room if
+	  you have ROOMFLAGS turned on. 
+	- Added Autoassist patch. Also updated it so that it works either
+	  way (master assists followers or followers assist master).
+	  Thanks to Dark for submitting the original update!
+        9/10/04 
+	- Updates for cedit and DISPLAY_CLOSED_DOORS tag. There was
+	  some mixed confusion about disp_closed_doors and display_closed_doors
+	  so changes to the toggle weren't behaving correctly.
+	  Thanks to Dark (dark_court_jester@hotmail.com) for pointing this out!
+        9/7/04 
+	- Added iedit code updated by Fnord.
+        9/6/04 
+	- Added MCCP2 compression code submitted by Fnord.
+	- Added duplicate object checking code submitted by Fnord.
+        9/4/04 
+	- Hopefully the final fixes for dynamic board code.
+	  Thanks Fnord and Fade both!
+        9/1/04 
+	- Added short title to board objects (in show_board) when you look 
+	  at them.
+	  Thanks Ken!
         8/31/04 (release)
 	- Boards are pretty much broken at this point. Sorry. I'll try
 	  to get it fixed by the next release.
diff -BbuprN -x '*.o' suntzu/cnf/configure.in yoda/cnf/configure.in
--- suntzu/cnf/configure.in	2003-02-06 22:20:01.000000000 -0600
+++ yoda/cnf/configure.in	2004-09-06 16:18:41.000000000 -0500
@@ -3,6 +3,7 @@ AC_INIT(src/act.comm.c)
 AC_SUBST(MYFLAGS)
 AC_SUBST(NETLIB)
 AC_SUBST(CRYPTLIB)
+AC_SUBST(ZLIB)
 
 AC_CONFIG_HEADER(src/conf.h)
 AC_DEFINE(CIRCLE_UNIX)
@@ -87,6 +88,9 @@ AC_CHECK_FUNC(crypt, AC_DEFINE(CIRCLE_CR
     [AC_CHECK_LIB(crypt, crypt, AC_DEFINE(CIRCLE_CRYPT) CRYPTLIB="-lcrypt")]
     )
 
+AC_CHECK_FUNC(deflate, ,
+    [AC_CHECK_LIB(z, deflate, ZLIB="-lz $ZLIB")])
+
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
@@ -94,7 +98,7 @@ AC_CHECK_HEADERS(fcntl.h sys/fcntl.h err
 AC_CHECK_HEADERS(limits.h sys/time.h sys/select.h sys/types.h unistd.h)
 AC_CHECK_HEADERS(memory.h crypt.h assert.h arpa/telnet.h arpa/inet.h)
 AC_CHECK_HEADERS(sys/stat.h sys/socket.h sys/resource.h netinet/in.h netdb.h)
-AC_CHECK_HEADERS(signal.h sys/uio.h mcheck.h)
+AC_CHECK_HEADERS(signal.h sys/uio.h mcheck.h zlib.h)
 
 AC_UNSAFE_CRYPT
 
diff -BbuprN -x '*.o' suntzu/config.status yoda/config.status
--- suntzu/config.status	2004-07-18 12:42:55.000000000 -0500
+++ yoda/config.status	2004-09-06 16:20:30.000000000 -0500
@@ -60,6 +60,7 @@ s%@mandir@%${prefix}/man%g
 s%@MYFLAGS@%-Wall%g
 s%@NETLIB@%%g
 s%@CRYPTLIB@%-lcrypt%g
+s%@ZLIB@%-lz %g
 s%@MORE@%less%g
 s%@CC@%gcc%g
 s%@CPP@%gcc -E%g
@@ -304,15 +305,18 @@ ${ac_eA}HAVE_SYS_UIO_H${ac_eB}HAVE_SYS_U
 ${ac_dA}HAVE_MCHECK_H${ac_dB}HAVE_MCHECK_H${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_MCHECK_H${ac_uB}HAVE_MCHECK_H${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_MCHECK_H${ac_eB}HAVE_MCHECK_H${ac_eC}1${ac_eD}
-${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD}
-${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD}
-${ac_eA}TIME_WITH_SYS_TIME${ac_eB}TIME_WITH_SYS_TIME${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ZLIB_H${ac_dB}HAVE_ZLIB_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ZLIB_H${ac_uB}HAVE_ZLIB_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ZLIB_H${ac_eB}HAVE_ZLIB_H${ac_eC}1${ac_eD}
 CEOF
   sed -f conftest.frag conftest.in > conftest.out
   rm -f conftest.in
   mv conftest.out conftest.in
 
   cat > conftest.frag <<CEOF
+${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD}
+${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD}
+${ac_eA}TIME_WITH_SYS_TIME${ac_eB}TIME_WITH_SYS_TIME${ac_eC}1${ac_eD}
 ${ac_dA}HAVE_STRUCT_IN_ADDR${ac_dB}HAVE_STRUCT_IN_ADDR${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_STRUCT_IN_ADDR${ac_uB}HAVE_STRUCT_IN_ADDR${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_STRUCT_IN_ADDR${ac_eB}HAVE_STRUCT_IN_ADDR${ac_eC}1${ac_eD}
@@ -322,15 +326,15 @@ ${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac
 ${ac_dA}HAVE_VPRINTF${ac_dB}HAVE_VPRINTF${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_VPRINTF${ac_uB}HAVE_VPRINTF${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_VPRINTF${ac_eB}HAVE_VPRINTF${ac_eC}1${ac_eD}
-${ac_dA}HAVE_GETTIMEOFDAY${ac_dB}HAVE_GETTIMEOFDAY${ac_dC}1${ac_dD}
-${ac_uA}HAVE_GETTIMEOFDAY${ac_uB}HAVE_GETTIMEOFDAY${ac_uC}1${ac_uD}
-${ac_eA}HAVE_GETTIMEOFDAY${ac_eB}HAVE_GETTIMEOFDAY${ac_eC}1${ac_eD}
 CEOF
   sed -f conftest.frag conftest.in > conftest.out
   rm -f conftest.in
   mv conftest.out conftest.in
 
   cat > conftest.frag <<CEOF
+${ac_dA}HAVE_GETTIMEOFDAY${ac_dB}HAVE_GETTIMEOFDAY${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETTIMEOFDAY${ac_uB}HAVE_GETTIMEOFDAY${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETTIMEOFDAY${ac_eB}HAVE_GETTIMEOFDAY${ac_eC}1${ac_eD}
 ${ac_dA}HAVE_SELECT${ac_dB}HAVE_SELECT${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_SELECT${ac_uB}HAVE_SELECT${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_SELECT${ac_eB}HAVE_SELECT${ac_eC}1${ac_eD}
@@ -340,15 +344,15 @@ ${ac_eA}HAVE_SNPRINTF${ac_eB}HAVE_SNPRIN
 ${ac_dA}HAVE_STRCASECMP${ac_dB}HAVE_STRCASECMP${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_STRCASECMP${ac_uB}HAVE_STRCASECMP${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_STRCASECMP${ac_eB}HAVE_STRCASECMP${ac_eC}1${ac_eD}
-${ac_dA}HAVE_STRDUP${ac_dB}HAVE_STRDUP${ac_dC}1${ac_dD}
-${ac_uA}HAVE_STRDUP${ac_uB}HAVE_STRDUP${ac_uC}1${ac_uD}
-${ac_eA}HAVE_STRDUP${ac_eB}HAVE_STRDUP${ac_eC}1${ac_eD}
 CEOF
   sed -f conftest.frag conftest.in > conftest.out
   rm -f conftest.in
   mv conftest.out conftest.in
 
   cat > conftest.frag <<CEOF
+${ac_dA}HAVE_STRDUP${ac_dB}HAVE_STRDUP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_STRDUP${ac_uB}HAVE_STRDUP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_STRDUP${ac_eB}HAVE_STRDUP${ac_eC}1${ac_eD}
 ${ac_dA}HAVE_STRERROR${ac_dB}HAVE_STRERROR${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_STRERROR${ac_uB}HAVE_STRERROR${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_STRERROR${ac_eB}HAVE_STRERROR${ac_eC}1${ac_eD}
@@ -358,15 +362,15 @@ ${ac_eA}HAVE_STRNCASECMP${ac_eB}HAVE_STR
 ${ac_dA}HAVE_STRSTR${ac_dB}HAVE_STRSTR${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_STRSTR${ac_uB}HAVE_STRSTR${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_STRSTR${ac_eB}HAVE_STRSTR${ac_eC}1${ac_eD}
-${ac_dA}HAVE_VSNPRINTF${ac_dB}HAVE_VSNPRINTF${ac_dC}1${ac_dD}
-${ac_uA}HAVE_VSNPRINTF${ac_uB}HAVE_VSNPRINTF${ac_uC}1${ac_uD}
-${ac_eA}HAVE_VSNPRINTF${ac_eB}HAVE_VSNPRINTF${ac_eC}1${ac_eD}
 CEOF
   sed -f conftest.frag conftest.in > conftest.out
   rm -f conftest.in
   mv conftest.out conftest.in
 
   cat > conftest.frag <<CEOF
+${ac_dA}HAVE_VSNPRINTF${ac_dB}HAVE_VSNPRINTF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_VSNPRINTF${ac_uB}HAVE_VSNPRINTF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_VSNPRINTF${ac_eB}HAVE_VSNPRINTF${ac_eC}1${ac_eD}
 ${ac_dA}HAVE_INET_ADDR${ac_dB}HAVE_INET_ADDR${ac_dC}1${ac_dD}
 ${ac_uA}HAVE_INET_ADDR${ac_uB}HAVE_INET_ADDR${ac_uC}1${ac_uD}
 ${ac_eA}HAVE_INET_ADDR${ac_eB}HAVE_INET_ADDR${ac_eC}1${ac_eD}
@@ -376,15 +380,15 @@ ${ac_eA}HAVE_INET_ATON${ac_eB}HAVE_INET_
 ${ac_dA}NEED_STRICMP_PROTO${ac_dB}NEED_STRICMP_PROTO${ac_dC}${ac_dD}
 ${ac_uA}NEED_STRICMP_PROTO${ac_uB}NEED_STRICMP_PROTO${ac_uC}${ac_uD}
 ${ac_eA}NEED_STRICMP_PROTO${ac_eB}NEED_STRICMP_PROTO${ac_eC}${ac_eD}
-${ac_dA}NEED_STRLCPY_PROTO${ac_dB}NEED_STRLCPY_PROTO${ac_dC}${ac_dD}
-${ac_uA}NEED_STRLCPY_PROTO${ac_uB}NEED_STRLCPY_PROTO${ac_uC}${ac_uD}
-${ac_eA}NEED_STRLCPY_PROTO${ac_eB}NEED_STRLCPY_PROTO${ac_eC}${ac_eD}
 CEOF
   sed -f conftest.frag conftest.in > conftest.out
   rm -f conftest.in
   mv conftest.out conftest.in
 
   cat > conftest.frag <<CEOF
+${ac_dA}NEED_STRLCPY_PROTO${ac_dB}NEED_STRLCPY_PROTO${ac_dC}${ac_dD}
+${ac_uA}NEED_STRLCPY_PROTO${ac_uB}NEED_STRLCPY_PROTO${ac_uC}${ac_uD}
+${ac_eA}NEED_STRLCPY_PROTO${ac_eB}NEED_STRLCPY_PROTO${ac_eC}${ac_eD}
 ${ac_dA}NEED_STRNICMP_PROTO${ac_dB}NEED_STRNICMP_PROTO${ac_dC}${ac_dD}
 ${ac_uA}NEED_STRNICMP_PROTO${ac_uB}NEED_STRNICMP_PROTO${ac_uC}${ac_uD}
 ${ac_eA}NEED_STRNICMP_PROTO${ac_eB}NEED_STRNICMP_PROTO${ac_eC}${ac_eD}
diff -BbuprN -x '*.o' suntzu/configure yoda/configure
--- suntzu/configure	2003-02-06 22:20:00.000000000 -0600
+++ yoda/configure	2004-09-06 16:18:41.000000000 -0500
@@ -536,7 +536,7 @@ 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:540: checking for $ac_word" >&5
+echo "configure:541: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MORE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -569,7 +569,7 @@ done
 # 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:573: checking for $ac_word" >&5
+echo "configure:574: 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
@@ -599,7 +599,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:603: checking for $ac_word" >&5
+echo "configure:604: 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
@@ -650,7 +650,7 @@ fi
       # 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:654: checking for $ac_word" >&5
+echo "configure:655: 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
@@ -682,7 +682,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:686: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:687: 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.
@@ -693,12 +693,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 697 "configure"
+#line 698 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:703: \"$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
@@ -724,12 +724,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:728: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:729: 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:733: checking whether we are using GNU C" >&5
+echo "configure:734: 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
@@ -738,7 +738,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:742: \"$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:743: \"$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
@@ -757,7 +757,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:761: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:762: 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
@@ -792,7 +792,7 @@ fi
 if test $ac_cv_prog_gcc = yes; then
 
     echo $ac_n "checking whether ${CC-cc} -Wall also needs -Wno-char-subscripts""... $ac_c" 1>&6
-echo "configure:796: checking whether ${CC-cc} -Wall also needs -Wno-char-subscripts" >&5
+echo "configure:797: checking whether ${CC-cc} -Wall also needs -Wno-char-subscripts" >&5
 if eval "test \"`echo '$''{'ac_cv_char_warn'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -800,7 +800,7 @@ else
     OLDCFLAGS=$CFLAGS
     CFLAGS="$CFLAGS -Wall -Werror"
     cat > conftest.$ac_ext <<EOF
-#line 804 "configure"
+#line 805 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 int main() {
@@ -811,7 +811,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_char_warn=no
 else
@@ -828,7 +828,7 @@ fi
 echo "$ac_t""$ac_cv_char_warn" 1>&6
 
     echo $ac_n "checking whether ${CC-cc} accepts -Wno-char-subscripts""... $ac_c" 1>&6
-echo "configure:832: checking whether ${CC-cc} accepts -Wno-char-subscripts" >&5
+echo "configure:833: checking whether ${CC-cc} accepts -Wno-char-subscripts" >&5
 if eval "test \"`echo '$''{'ac_cv_gcc_ncs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -836,14 +836,14 @@ else
     OLDCFLAGS=$CFLAGS
     CFLAGS="$CFLAGS -Wno-char-subscripts"
     cat > conftest.$ac_ext <<EOF
-#line 840 "configure"
+#line 841 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_gcc_ncs=yes
 else
@@ -860,7 +860,7 @@ fi
 echo "$ac_t""$ac_cv_gcc_ncs" 1>&6
 
     echo $ac_n "checking whether ${CC-cc} accepts -fno-builtin""... $ac_c" 1>&6
-echo "configure:864: checking whether ${CC-cc} accepts -fno-builtin" >&5
+echo "configure:865: checking whether ${CC-cc} accepts -fno-builtin" >&5
 if eval "test \"`echo '$''{'ac_cv_gcc_fnb'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -868,14 +868,14 @@ else
     OLDCFLAGS=$CFLAGS
     CFLAGS="$CFLAGS -fno-builtin"
     cat > conftest.$ac_ext <<EOF
-#line 872 "configure"
+#line 873 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_gcc_fnb=yes
 else
@@ -908,12 +908,12 @@ else
 fi
 
 echo $ac_n "checking for gethostbyaddr""... $ac_c" 1>&6
-echo "configure:912: checking for gethostbyaddr" >&5
+echo "configure:913: checking for gethostbyaddr" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 917 "configure"
+#line 918 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyaddr(); below.  */
@@ -936,7 +936,7 @@ gethostbyaddr();
 
 ; return 0; }
 EOF
-if { (eval echo configure:940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyaddr=yes"
 else
@@ -954,7 +954,7 @@ if eval "test \"`echo '$ac_cv_func_'geth
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for gethostbyaddr in -lnsl""... $ac_c" 1>&6
-echo "configure:958: checking for gethostbyaddr in -lnsl" >&5
+echo "configure:959: checking for gethostbyaddr in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyaddr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -962,7 +962,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 966 "configure"
+#line 967 "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
@@ -973,7 +973,7 @@ int main() {
 gethostbyaddr()
 ; return 0; }
 EOF
-if { (eval echo configure:977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:978: \"$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
@@ -997,12 +997,12 @@ fi
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:1001: checking for socket" >&5
+echo "configure:1002: checking for socket" >&5
 if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1006 "configure"
+#line 1007 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -1025,7 +1025,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -1043,7 +1043,7 @@ if eval "test \"`echo '$ac_cv_func_'sock
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:1047: checking for socket in -lsocket" >&5
+echo "configure:1048: 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
@@ -1051,7 +1051,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1055 "configure"
+#line 1056 "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
@@ -1062,7 +1062,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:1066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1067: \"$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
@@ -1086,12 +1086,12 @@ fi
 
 
 echo $ac_n "checking for malloc""... $ac_c" 1>&6
-echo "configure:1090: checking for malloc" >&5
+echo "configure:1091: checking for malloc" >&5
 if eval "test \"`echo '$''{'ac_cv_func_malloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1095 "configure"
+#line 1096 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc(); below.  */
@@ -1114,7 +1114,7 @@ malloc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc=yes"
 else
@@ -1132,7 +1132,7 @@ if eval "test \"`echo '$ac_cv_func_'mall
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for malloc in -lmalloc""... $ac_c" 1>&6
-echo "configure:1136: checking for malloc in -lmalloc" >&5
+echo "configure:1137: checking for malloc in -lmalloc" >&5
 ac_lib_var=`echo malloc'_'malloc | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1140,7 +1140,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmalloc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1144 "configure"
+#line 1145 "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
@@ -1151,7 +1151,7 @@ int main() {
 malloc()
 ; return 0; }
 EOF
-if { (eval echo configure:1155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1156: \"$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
@@ -1182,12 +1182,12 @@ fi
 
 
 echo $ac_n "checking for crypt""... $ac_c" 1>&6
-echo "configure:1186: checking for crypt" >&5
+echo "configure:1187: checking for crypt" >&5
 if eval "test \"`echo '$''{'ac_cv_func_crypt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1191 "configure"
+#line 1192 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char crypt(); below.  */
@@ -1210,7 +1210,7 @@ crypt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_crypt=yes"
 else
@@ -1231,7 +1231,7 @@ EOF
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:1235: checking for crypt in -lcrypt" >&5
+echo "configure:1236: 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
@@ -1239,7 +1239,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1243 "configure"
+#line 1244 "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
@@ -1250,7 +1250,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:1254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1255: \"$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
@@ -1277,8 +1277,97 @@ fi
 fi
 
 
+echo $ac_n "checking for deflate""... $ac_c" 1>&6
+echo "configure:1283: checking for deflate" >&5
+if eval "test \"`echo '$''{'ac_cv_func_deflate'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1288 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char deflate(); 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 deflate();
+
+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_deflate) || defined (__stub___deflate)
+choke me
+#else
+deflate();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_deflate=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_deflate=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'deflate`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6
+echo "configure:1329: checking for deflate in -lz" >&5
+ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lz  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1337 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char deflate();
+
+int main() {
+deflate()
+; return 0; }
+EOF
+if { (eval echo configure:1348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  ZLIB="-lz $ZLIB"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1282: checking how to run the C preprocessor" >&5
+echo "configure:1372: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1293,13 +1382,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1297 "configure"
+#line 1387 "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:1303: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1393: \"$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
   :
@@ -1310,13 +1399,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1314 "configure"
+#line 1404 "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:1320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1410: \"$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
   :
@@ -1327,13 +1416,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1331 "configure"
+#line 1421 "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:1337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1427: \"$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
   :
@@ -1358,12 +1447,12 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1362: checking for ANSI C header files" >&5
+echo "configure:1452: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1367 "configure"
+#line 1457 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1371,7 +1460,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1465: \"$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*
@@ -1388,7 +1477,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1392 "configure"
+#line 1482 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1406,7 +1495,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1410 "configure"
+#line 1500 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1427,7 +1516,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1431 "configure"
+#line 1521 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1438,7 +1527,7 @@ if (XOR (islower (i), ISLOWER (i)) || to
 exit (0); }
 
 EOF
-if { (eval echo configure:1442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1462,12 +1551,12 @@ EOF
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1466: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:1556: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1471 "configure"
+#line 1561 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -1483,7 +1572,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:1487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -1507,17 +1596,17 @@ for ac_hdr in fcntl.h sys/fcntl.h errno.
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1511: checking for $ac_hdr" >&5
+echo "configure:1601: 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 1516 "configure"
+#line 1606 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1611: \"$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*
@@ -1547,17 +1636,17 @@ for ac_hdr in limits.h sys/time.h sys/se
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1551: checking for $ac_hdr" >&5
+echo "configure:1641: 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 1556 "configure"
+#line 1646 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1651: \"$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*
@@ -1587,17 +1676,17 @@ for ac_hdr in memory.h crypt.h assert.h 
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1591: checking for $ac_hdr" >&5
+echo "configure:1681: 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 1596 "configure"
+#line 1686 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1691: \"$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*
@@ -1627,17 +1716,17 @@ for ac_hdr in sys/stat.h sys/socket.h sy
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1631: checking for $ac_hdr" >&5
+echo "configure:1721: 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 1636 "configure"
+#line 1726 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1731: \"$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*
@@ -1663,21 +1752,21 @@ else
 fi
 done
 
-for ac_hdr in signal.h sys/uio.h mcheck.h
+for ac_hdr in signal.h sys/uio.h mcheck.h zlib.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1671: checking for $ac_hdr" >&5
+echo "configure:1761: 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 1676 "configure"
+#line 1766 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1771: \"$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*
@@ -1706,7 +1795,7 @@ done
 
 
   echo $ac_n "checking whether crypt needs over 10 characters""... $ac_c" 1>&6
-echo "configure:1710: checking whether crypt needs over 10 characters" >&5
+echo "configure:1800: checking whether crypt needs over 10 characters" >&5
 if eval "test \"`echo '$''{'ac_cv_unsafe_crypt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1722,7 +1811,7 @@ else
   ac_cv_unsafe_crypt=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 1726 "configure"
+#line 1816 "configure"
 #include "confdefs.h"
 
 #define _XOPEN_SOURCE
@@ -1745,7 +1834,7 @@ int main(void)
 
 
 EOF
-if { (eval echo configure:1749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_unsafe_crypt=yes
 else
@@ -1772,12 +1861,12 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1776: checking for working const" >&5
+echo "configure:1866: 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 1781 "configure"
+#line 1871 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1826,7 +1915,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:1830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1847,12 +1936,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:1851: checking for pid_t" >&5
+echo "configure:1941: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1856 "configure"
+#line 1946 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1880,12 +1969,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1884: checking for size_t" >&5
+echo "configure:1974: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1889 "configure"
+#line 1979 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1913,12 +2002,12 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:1917: checking for ssize_t" >&5
+echo "configure:2007: checking for ssize_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1922 "configure"
+#line 2012 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1946,12 +2035,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1950: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2040: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1955 "configure"
+#line 2045 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -1960,7 +2049,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:1964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -1995,19 +2084,19 @@ EOF
   fi
 
   echo $ac_n "checking for struct in_addr""... $ac_c" 1>&6
-echo "configure:1999: checking for struct in_addr" >&5
+echo "configure:2089: checking for struct in_addr" >&5
 if eval "test \"`echo '$''{'ac_cv_struct_in_addr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
    cat > conftest.$ac_ext <<EOF
-#line 2004 "configure"
+#line 2094 "configure"
 #include "confdefs.h"
 $headers
 int main() {
 struct in_addr tp; tp.s_addr;
 ; return 0; }
 EOF
-if { (eval echo configure:2011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_in_addr=yes
 else
@@ -2034,19 +2123,19 @@ if test $ac_cv_header_sys_socket_h = no;
   ac_cv_socklen_t = no;
 else
   echo $ac_n "checking for typedef socklen_t""... $ac_c" 1>&6
-echo "configure:2038: checking for typedef socklen_t" >&5
+echo "configure:2128: checking for typedef socklen_t" >&5
 if eval "test \"`echo '$''{'ac_cv_socklen_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
    cat > conftest.$ac_ext <<EOF
-#line 2043 "configure"
+#line 2133 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
 int main() {
 socklen_t sl; sl=0;
 ; return 0; }
 EOF
-if { (eval echo configure:2050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_socklen_t=yes
 else
@@ -2070,12 +2159,12 @@ fi
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2074: checking return type of signal handlers" >&5
+echo "configure:2164: 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 2079 "configure"
+#line 2169 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2092,7 +2181,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:2096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -2111,12 +2200,12 @@ EOF
 
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2115: checking for vprintf" >&5
+echo "configure:2205: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2120 "configure"
+#line 2210 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -2139,7 +2228,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -2163,12 +2252,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2167: checking for _doprnt" >&5
+echo "configure:2257: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2172 "configure"
+#line 2262 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -2191,7 +2280,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -2218,12 +2307,12 @@ fi
 for ac_func in gettimeofday select snprintf strcasecmp strdup strerror stricmp strlcpy strncasecmp strnicmp strstr vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2222: checking for $ac_func" >&5
+echo "configure:2312: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2227 "configure"
+#line 2317 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2246,7 +2335,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2276,12 +2365,12 @@ LIBS="$LIBS $NETLIB"
 for ac_func in inet_addr inet_aton
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2280: checking for $ac_func" >&5
+echo "configure:2370: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2285 "configure"
+#line 2375 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2304,7 +2393,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2334,7 +2423,7 @@ LIBS=$ORIGLIBS
 ac_safe=accept;
 
 echo $ac_n "checking if accept is prototyped""... $ac_c" 1>&6
-echo "configure:2338: checking if accept is prototyped" >&5
+echo "configure:2428: checking if accept is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2344,7 +2433,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2348 "configure"
+#line 2438 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2360,7 +2449,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2391,7 +2480,7 @@ fi
 ac_safe=atoi;
 
 echo $ac_n "checking if atoi is prototyped""... $ac_c" 1>&6
-echo "configure:2395: checking if atoi is prototyped" >&5
+echo "configure:2485: checking if atoi is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2401,7 +2490,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2405 "configure"
+#line 2495 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2417,7 +2506,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2448,7 +2537,7 @@ fi
 ac_safe=atol;
 
 echo $ac_n "checking if atol is prototyped""... $ac_c" 1>&6
-echo "configure:2452: checking if atol is prototyped" >&5
+echo "configure:2542: checking if atol is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2458,7 +2547,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2462 "configure"
+#line 2552 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2474,7 +2563,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2505,7 +2594,7 @@ fi
 ac_safe=bind;
 
 echo $ac_n "checking if bind is prototyped""... $ac_c" 1>&6
-echo "configure:2509: checking if bind is prototyped" >&5
+echo "configure:2599: checking if bind is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2515,7 +2604,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2519 "configure"
+#line 2609 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2531,7 +2620,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2562,7 +2651,7 @@ fi
 ac_safe=bzero;
 
 echo $ac_n "checking if bzero is prototyped""... $ac_c" 1>&6
-echo "configure:2566: checking if bzero is prototyped" >&5
+echo "configure:2656: checking if bzero is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2572,7 +2661,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2576 "configure"
+#line 2666 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2588,7 +2677,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2619,7 +2708,7 @@ fi
 ac_safe=chdir;
 
 echo $ac_n "checking if chdir is prototyped""... $ac_c" 1>&6
-echo "configure:2623: checking if chdir is prototyped" >&5
+echo "configure:2713: checking if chdir is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2629,7 +2718,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2633 "configure"
+#line 2723 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2645,7 +2734,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2676,7 +2765,7 @@ fi
 ac_safe=close;
 
 echo $ac_n "checking if close is prototyped""... $ac_c" 1>&6
-echo "configure:2680: checking if close is prototyped" >&5
+echo "configure:2770: checking if close is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2686,7 +2775,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2690 "configure"
+#line 2780 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2702,7 +2791,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2733,7 +2822,7 @@ fi
 ac_safe=crypt;
 
 echo $ac_n "checking if crypt is prototyped""... $ac_c" 1>&6
-echo "configure:2737: checking if crypt is prototyped" >&5
+echo "configure:2827: checking if crypt is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2743,7 +2832,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2747 "configure"
+#line 2837 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2759,7 +2848,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2790,7 +2879,7 @@ fi
 ac_safe=fclose;
 
 echo $ac_n "checking if fclose is prototyped""... $ac_c" 1>&6
-echo "configure:2794: checking if fclose is prototyped" >&5
+echo "configure:2884: checking if fclose is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2800,7 +2889,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2804 "configure"
+#line 2894 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2816,7 +2905,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2847,7 +2936,7 @@ fi
 ac_safe=fcntl;
 
 echo $ac_n "checking if fcntl is prototyped""... $ac_c" 1>&6
-echo "configure:2851: checking if fcntl is prototyped" >&5
+echo "configure:2941: checking if fcntl is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2857,7 +2946,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2951 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2873,7 +2962,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2904,7 +2993,7 @@ fi
 ac_safe=fflush;
 
 echo $ac_n "checking if fflush is prototyped""... $ac_c" 1>&6
-echo "configure:2908: checking if fflush is prototyped" >&5
+echo "configure:2998: checking if fflush is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2914,7 +3003,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2918 "configure"
+#line 3008 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2930,7 +3019,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -2961,7 +3050,7 @@ fi
 ac_safe=fprintf;
 
 echo $ac_n "checking if fprintf is prototyped""... $ac_c" 1>&6
-echo "configure:2965: checking if fprintf is prototyped" >&5
+echo "configure:3055: checking if fprintf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2971,7 +3060,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 2975 "configure"
+#line 3065 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -2987,7 +3076,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3018,7 +3107,7 @@ fi
 ac_safe=fputc;
 
 echo $ac_n "checking if fputc is prototyped""... $ac_c" 1>&6
-echo "configure:3022: checking if fputc is prototyped" >&5
+echo "configure:3112: checking if fputc is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3028,7 +3117,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3032 "configure"
+#line 3122 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3044,7 +3133,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3075,7 +3164,7 @@ fi
 ac_safe=fputs;
 
 echo $ac_n "checking if fputs is prototyped""... $ac_c" 1>&6
-echo "configure:3079: checking if fputs is prototyped" >&5
+echo "configure:3169: checking if fputs is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3085,7 +3174,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3089 "configure"
+#line 3179 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3101,7 +3190,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3132,7 +3221,7 @@ fi
 ac_safe=fread;
 
 echo $ac_n "checking if fread is prototyped""... $ac_c" 1>&6
-echo "configure:3136: checking if fread is prototyped" >&5
+echo "configure:3226: checking if fread is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3142,7 +3231,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3146 "configure"
+#line 3236 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3158,7 +3247,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3189,7 +3278,7 @@ fi
 ac_safe=fscanf;
 
 echo $ac_n "checking if fscanf is prototyped""... $ac_c" 1>&6
-echo "configure:3193: checking if fscanf is prototyped" >&5
+echo "configure:3283: checking if fscanf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3199,7 +3288,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3203 "configure"
+#line 3293 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3215,7 +3304,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3246,7 +3335,7 @@ fi
 ac_safe=fseek;
 
 echo $ac_n "checking if fseek is prototyped""... $ac_c" 1>&6
-echo "configure:3250: checking if fseek is prototyped" >&5
+echo "configure:3340: checking if fseek is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3256,7 +3345,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3260 "configure"
+#line 3350 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3272,7 +3361,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3303,7 +3392,7 @@ fi
 ac_safe=fwrite;
 
 echo $ac_n "checking if fwrite is prototyped""... $ac_c" 1>&6
-echo "configure:3307: checking if fwrite is prototyped" >&5
+echo "configure:3397: checking if fwrite is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3313,7 +3402,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3317 "configure"
+#line 3407 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3329,7 +3418,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3360,7 +3449,7 @@ fi
 ac_safe=getpeername;
 
 echo $ac_n "checking if getpeername is prototyped""... $ac_c" 1>&6
-echo "configure:3364: checking if getpeername is prototyped" >&5
+echo "configure:3454: checking if getpeername is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3370,7 +3459,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3374 "configure"
+#line 3464 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3386,7 +3475,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3417,7 +3506,7 @@ fi
 ac_safe=getpid;
 
 echo $ac_n "checking if getpid is prototyped""... $ac_c" 1>&6
-echo "configure:3421: checking if getpid is prototyped" >&5
+echo "configure:3511: checking if getpid is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3427,7 +3516,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3431 "configure"
+#line 3521 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3443,7 +3532,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3474,7 +3563,7 @@ fi
 ac_safe=getrlimit;
 
 echo $ac_n "checking if getrlimit is prototyped""... $ac_c" 1>&6
-echo "configure:3478: checking if getrlimit is prototyped" >&5
+echo "configure:3568: checking if getrlimit is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3484,7 +3573,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3488 "configure"
+#line 3578 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3500,7 +3589,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3531,7 +3620,7 @@ fi
 ac_safe=getsockname;
 
 echo $ac_n "checking if getsockname is prototyped""... $ac_c" 1>&6
-echo "configure:3535: checking if getsockname is prototyped" >&5
+echo "configure:3625: checking if getsockname is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3541,7 +3630,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3545 "configure"
+#line 3635 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3557,7 +3646,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3588,7 +3677,7 @@ fi
 ac_safe=gettimeofday;
 
 echo $ac_n "checking if gettimeofday is prototyped""... $ac_c" 1>&6
-echo "configure:3592: checking if gettimeofday is prototyped" >&5
+echo "configure:3682: checking if gettimeofday is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3598,7 +3687,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3602 "configure"
+#line 3692 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3614,7 +3703,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3645,7 +3734,7 @@ fi
 ac_safe=htonl;
 
 echo $ac_n "checking if htonl is prototyped""... $ac_c" 1>&6
-echo "configure:3649: checking if htonl is prototyped" >&5
+echo "configure:3739: checking if htonl is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3655,7 +3744,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3659 "configure"
+#line 3749 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3671,7 +3760,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3702,7 +3791,7 @@ fi
 ac_safe=htons;
 
 echo $ac_n "checking if htons is prototyped""... $ac_c" 1>&6
-echo "configure:3706: checking if htons is prototyped" >&5
+echo "configure:3796: checking if htons is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3712,7 +3801,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3716 "configure"
+#line 3806 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3728,7 +3817,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3759,7 +3848,7 @@ fi
 ac_safe=inet_addr;
 
 echo $ac_n "checking if inet_addr is prototyped""... $ac_c" 1>&6
-echo "configure:3763: checking if inet_addr is prototyped" >&5
+echo "configure:3853: checking if inet_addr is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3769,7 +3858,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3773 "configure"
+#line 3863 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3785,7 +3874,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3816,7 +3905,7 @@ fi
 ac_safe=inet_aton;
 
 echo $ac_n "checking if inet_aton is prototyped""... $ac_c" 1>&6
-echo "configure:3820: checking if inet_aton is prototyped" >&5
+echo "configure:3910: checking if inet_aton is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3826,7 +3915,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3830 "configure"
+#line 3920 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3842,7 +3931,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3873,7 +3962,7 @@ fi
 ac_safe=inet_ntoa;
 
 echo $ac_n "checking if inet_ntoa is prototyped""... $ac_c" 1>&6
-echo "configure:3877: checking if inet_ntoa is prototyped" >&5
+echo "configure:3967: checking if inet_ntoa is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3883,7 +3972,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3887 "configure"
+#line 3977 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3899,7 +3988,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3930,7 +4019,7 @@ fi
 ac_safe=listen;
 
 echo $ac_n "checking if listen is prototyped""... $ac_c" 1>&6
-echo "configure:3934: checking if listen is prototyped" >&5
+echo "configure:4024: checking if listen is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3940,7 +4029,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 3944 "configure"
+#line 4034 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -3956,7 +4045,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -3987,7 +4076,7 @@ fi
 ac_safe=ntohl;
 
 echo $ac_n "checking if ntohl is prototyped""... $ac_c" 1>&6
-echo "configure:3991: checking if ntohl is prototyped" >&5
+echo "configure:4081: checking if ntohl is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3997,7 +4086,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4001 "configure"
+#line 4091 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4013,7 +4102,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4044,7 +4133,7 @@ fi
 ac_safe=perror;
 
 echo $ac_n "checking if perror is prototyped""... $ac_c" 1>&6
-echo "configure:4048: checking if perror is prototyped" >&5
+echo "configure:4138: checking if perror is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4054,7 +4143,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4058 "configure"
+#line 4148 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4070,7 +4159,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4101,7 +4190,7 @@ fi
 ac_safe=printf;
 
 echo $ac_n "checking if printf is prototyped""... $ac_c" 1>&6
-echo "configure:4105: checking if printf is prototyped" >&5
+echo "configure:4195: checking if printf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4111,7 +4200,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4115 "configure"
+#line 4205 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4127,7 +4216,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4158,7 +4247,7 @@ fi
 ac_safe=qsort;
 
 echo $ac_n "checking if qsort is prototyped""... $ac_c" 1>&6
-echo "configure:4162: checking if qsort is prototyped" >&5
+echo "configure:4252: checking if qsort is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4168,7 +4257,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4172 "configure"
+#line 4262 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4184,7 +4273,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4215,7 +4304,7 @@ fi
 ac_safe=read;
 
 echo $ac_n "checking if read is prototyped""... $ac_c" 1>&6
-echo "configure:4219: checking if read is prototyped" >&5
+echo "configure:4309: checking if read is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4225,7 +4314,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4229 "configure"
+#line 4319 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4241,7 +4330,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4272,7 +4361,7 @@ fi
 ac_safe=remove;
 
 echo $ac_n "checking if remove is prototyped""... $ac_c" 1>&6
-echo "configure:4276: checking if remove is prototyped" >&5
+echo "configure:4366: checking if remove is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4282,7 +4371,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4286 "configure"
+#line 4376 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4298,7 +4387,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4329,7 +4418,7 @@ fi
 ac_safe=rewind;
 
 echo $ac_n "checking if rewind is prototyped""... $ac_c" 1>&6
-echo "configure:4333: checking if rewind is prototyped" >&5
+echo "configure:4423: checking if rewind is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4339,7 +4428,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4343 "configure"
+#line 4433 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4355,7 +4444,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4386,7 +4475,7 @@ fi
 ac_safe=select;
 
 echo $ac_n "checking if select is prototyped""... $ac_c" 1>&6
-echo "configure:4390: checking if select is prototyped" >&5
+echo "configure:4480: checking if select is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4396,7 +4485,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4400 "configure"
+#line 4490 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4412,7 +4501,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4443,7 +4532,7 @@ fi
 ac_safe=setitimer;
 
 echo $ac_n "checking if setitimer is prototyped""... $ac_c" 1>&6
-echo "configure:4447: checking if setitimer is prototyped" >&5
+echo "configure:4537: checking if setitimer is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4453,7 +4542,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4457 "configure"
+#line 4547 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4469,7 +4558,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4500,7 +4589,7 @@ fi
 ac_safe=setrlimit;
 
 echo $ac_n "checking if setrlimit is prototyped""... $ac_c" 1>&6
-echo "configure:4504: checking if setrlimit is prototyped" >&5
+echo "configure:4594: checking if setrlimit is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4510,7 +4599,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4514 "configure"
+#line 4604 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4526,7 +4615,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4557,7 +4646,7 @@ fi
 ac_safe=setsockopt;
 
 echo $ac_n "checking if setsockopt is prototyped""... $ac_c" 1>&6
-echo "configure:4561: checking if setsockopt is prototyped" >&5
+echo "configure:4651: checking if setsockopt is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4567,7 +4656,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4571 "configure"
+#line 4661 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4583,7 +4672,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4614,7 +4703,7 @@ fi
 ac_safe=snprintf;
 
 echo $ac_n "checking if snprintf is prototyped""... $ac_c" 1>&6
-echo "configure:4618: checking if snprintf is prototyped" >&5
+echo "configure:4708: checking if snprintf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4624,7 +4713,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4628 "configure"
+#line 4718 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4640,7 +4729,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4671,7 +4760,7 @@ fi
 ac_safe=socket;
 
 echo $ac_n "checking if socket is prototyped""... $ac_c" 1>&6
-echo "configure:4675: checking if socket is prototyped" >&5
+echo "configure:4765: checking if socket is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4681,7 +4770,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4685 "configure"
+#line 4775 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4697,7 +4786,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4791: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4728,7 +4817,7 @@ fi
 ac_safe=sprintf;
 
 echo $ac_n "checking if sprintf is prototyped""... $ac_c" 1>&6
-echo "configure:4732: checking if sprintf is prototyped" >&5
+echo "configure:4822: checking if sprintf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4738,7 +4827,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4742 "configure"
+#line 4832 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4754,7 +4843,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4785,7 +4874,7 @@ fi
 ac_safe=sscanf;
 
 echo $ac_n "checking if sscanf is prototyped""... $ac_c" 1>&6
-echo "configure:4789: checking if sscanf is prototyped" >&5
+echo "configure:4879: checking if sscanf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4795,7 +4884,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4799 "configure"
+#line 4889 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4811,7 +4900,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4842,7 +4931,7 @@ fi
 ac_safe=strcasecmp;
 
 echo $ac_n "checking if strcasecmp is prototyped""... $ac_c" 1>&6
-echo "configure:4846: checking if strcasecmp is prototyped" >&5
+echo "configure:4936: checking if strcasecmp is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4852,7 +4941,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4856 "configure"
+#line 4946 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4868,7 +4957,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4899,7 +4988,7 @@ fi
 ac_safe=strdup;
 
 echo $ac_n "checking if strdup is prototyped""... $ac_c" 1>&6
-echo "configure:4903: checking if strdup is prototyped" >&5
+echo "configure:4993: checking if strdup is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4909,7 +4998,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4913 "configure"
+#line 5003 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4925,7 +5014,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4929: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -4956,7 +5045,7 @@ fi
 ac_safe=strerror;
 
 echo $ac_n "checking if strerror is prototyped""... $ac_c" 1>&6
-echo "configure:4960: checking if strerror is prototyped" >&5
+echo "configure:5050: checking if strerror is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4966,7 +5055,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 4970 "configure"
+#line 5060 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -4982,7 +5071,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5013,7 +5102,7 @@ fi
 ac_safe=stricmp;
 
 echo $ac_n "checking if stricmp is prototyped""... $ac_c" 1>&6
-echo "configure:5017: checking if stricmp is prototyped" >&5
+echo "configure:5107: checking if stricmp is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5023,7 +5112,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5027 "configure"
+#line 5117 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5039,7 +5128,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5070,7 +5159,7 @@ fi
 ac_safe=strlcpy;
 
 echo $ac_n "checking if strlcpy is prototyped""... $ac_c" 1>&6
-echo "configure:5074: checking if strlcpy is prototyped" >&5
+echo "configure:5164: checking if strlcpy is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5080,7 +5169,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5084 "configure"
+#line 5174 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5096,7 +5185,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5127,7 +5216,7 @@ fi
 ac_safe=strncasecmp;
 
 echo $ac_n "checking if strncasecmp is prototyped""... $ac_c" 1>&6
-echo "configure:5131: checking if strncasecmp is prototyped" >&5
+echo "configure:5221: checking if strncasecmp is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5137,7 +5226,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5141 "configure"
+#line 5231 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5153,7 +5242,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5184,7 +5273,7 @@ fi
 ac_safe=strnicmp;
 
 echo $ac_n "checking if strnicmp is prototyped""... $ac_c" 1>&6
-echo "configure:5188: checking if strnicmp is prototyped" >&5
+echo "configure:5278: checking if strnicmp is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5194,7 +5283,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5198 "configure"
+#line 5288 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5210,7 +5299,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5304: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5241,7 +5330,7 @@ fi
 ac_safe=system;
 
 echo $ac_n "checking if system is prototyped""... $ac_c" 1>&6
-echo "configure:5245: checking if system is prototyped" >&5
+echo "configure:5335: checking if system is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5251,7 +5340,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5255 "configure"
+#line 5345 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5267,7 +5356,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5298,7 +5387,7 @@ fi
 ac_safe=time;
 
 echo $ac_n "checking if time is prototyped""... $ac_c" 1>&6
-echo "configure:5302: checking if time is prototyped" >&5
+echo "configure:5392: checking if time is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5308,7 +5397,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5312 "configure"
+#line 5402 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5324,7 +5413,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5355,7 +5444,7 @@ fi
 ac_safe=unlink;
 
 echo $ac_n "checking if unlink is prototyped""... $ac_c" 1>&6
-echo "configure:5359: checking if unlink is prototyped" >&5
+echo "configure:5449: checking if unlink is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5365,7 +5454,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5369 "configure"
+#line 5459 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5381,7 +5470,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5412,7 +5501,7 @@ fi
 ac_safe=vsnprintf;
 
 echo $ac_n "checking if vsnprintf is prototyped""... $ac_c" 1>&6
-echo "configure:5416: checking if vsnprintf is prototyped" >&5
+echo "configure:5506: checking if vsnprintf is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5422,7 +5511,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5426 "configure"
+#line 5516 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5438,7 +5527,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5469,7 +5558,7 @@ fi
 ac_safe=write;
 
 echo $ac_n "checking if write is prototyped""... $ac_c" 1>&6
-echo "configure:5473: checking if write is prototyped" >&5
+echo "configure:5563: checking if write is prototyped" >&5
 if eval "test \"`echo '$''{'ac_cv_prototype_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5479,7 +5568,7 @@ else
     CFLAGS="$CFLAGS -fno-builtin"
   fi
 cat > conftest.$ac_ext <<EOF
-#line 5483 "configure"
+#line 5573 "configure"
 #include "confdefs.h"
 
 #define NO_LIBRARY_PROTOTYPES
@@ -5495,7 +5584,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_prototype_$ac_safe=no"
 else
@@ -5658,6 +5747,7 @@ s%@mandir@%$mandir%g
 s%@MYFLAGS@%$MYFLAGS%g
 s%@NETLIB@%$NETLIB%g
 s%@CRYPTLIB@%$CRYPTLIB%g
+s%@ZLIB@%$ZLIB%g
 s%@MORE@%$MORE%g
 s%@CC@%$CC%g
 s%@CPP@%$CPP%g
diff -BbuprN -x '*.o' suntzu/lib/etc/config yoda/lib/etc/config
--- suntzu/lib/etc/config	2004-08-21 20:27:15.000000000 -0500
+++ yoda/lib/etc/config	2004-09-25 16:05:42.000000000 -0500
@@ -73,6 +73,15 @@ disp_closed_doors = 1
 * Should players be able to reroll stats at creation?
 reroll_stats = 0
 
+* Should compression be used if the client supports it?
+compression = 1
+
+* Should spoken languages be used?
+enable_languages = 1
+
+* Should all items be treated as unique?
+all_items_unique = 1
+
 * Text sent to players when OK is all that is needed.
 ok = Okay.
 
diff -BbuprN -x '*.o' suntzu/src/act.comm.c yoda/src/act.comm.c
--- suntzu/src/act.comm.c	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/act.comm.c	2004-09-11 18:58:28.000000000 -0500
@@ -28,6 +28,8 @@
 void perform_tell(struct char_data *ch, struct char_data *vict, char *arg);
 int is_tell_ok(struct char_data *ch, struct char_data *vict);
 ACMD(do_say);
+ACMD(do_say_languages);
+ACMD(do_say_original);
 ACMD(do_gsay);
 ACMD(do_tell);
 ACMD(do_reply);
@@ -53,7 +55,7 @@ void list_languages(struct char_data *ch
 
   send_to_char(ch, "Languages:\r\n[");
   for (i = MIN_LANGUAGES ; i < MAX_LANGUAGES ; i++)
-    if (GET_SKILL(ch, i) > 60)
+    if (GET_SKILL(ch, i) > 59)
       send_to_char(ch, "%s %s%s%s",
         a++ != 0 ? "," : "",
         SPEAKING(ch) == i ? "@r": "@n",
@@ -66,6 +68,7 @@ ACMD(do_languages)
   int i, found = FALSE;
   char arg[MAX_STRING_LENGTH];
 
+  if (CONFIG_ENABLE_LANGUAGES) {
   one_argument(argument, arg);
   if (!*arg)
     list_languages(ch);
@@ -83,6 +86,12 @@ ACMD(do_languages)
       return;
     }
   }
+  } else {
+    send_to_char(ch, "But everyone already understands everyone else!\r\n");
+    return;
+  }
+
+  // Strictly speaking, I'm not sure these need to be here. --Ziz
   /* trigger check */
   speech_mtrigger(ch, argument);
   speech_wtrigger(ch, argument);
@@ -117,6 +126,14 @@ void garble_text(char *string, int perce
 
 ACMD(do_say)
 {
+  if (CONFIG_ENABLE_LANGUAGES)
+    do_say_languages(ch, argument, 0, 0);
+  else
+    do_say_original(ch, argument, 0, 0);
+}
+
+ACMD(do_say_languages)
+{
   skip_spaces(&argument);
 
   if(!*argument) {
@@ -165,6 +182,29 @@ ACMD(do_say)
   }
 }
 
+ACMD(do_say_original)
+{
+  skip_spaces(&argument);
+
+  if (!*argument)
+    send_to_char(ch, "Yes, but WHAT do you want to say?\r\n");
+  else {
+    char buf[MAX_INPUT_LENGTH + 12];
+
+    snprintf(buf, sizeof(buf), "$n says, '%s'", argument);
+    act(buf, FALSE, ch, 0, 0, TO_ROOM);
+
+    if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_NOREPEAT))
+      send_to_char(ch, "%s", CONFIG_OK);
+    else {
+      delete_doubledollar(argument);
+      send_to_char(ch, "You say, '%s'\r\n", argument);
+    }
+  /* trigger check */
+  speech_mtrigger(ch, argument);
+  speech_wtrigger(ch, argument);
+  }
+}
 
 ACMD(do_gsay)
 {
diff -BbuprN -x '*.o' suntzu/src/act.informative.c yoda/src/act.informative.c
--- suntzu/src/act.informative.c	2004-08-26 21:27:36.000000000 -0500
+++ yoda/src/act.informative.c	2004-09-29 20:48:12.000000000 -0500
@@ -246,14 +246,14 @@ void list_obj_to_char(struct obj_data *l
       for (j = list; j != i; j = j->next_content)
         if (str_cmp(j->short_description, i->short_description) == 0)
           break;
-        else if ((j->item_number == i->item_number) && (j->item_number != -1))
+        else if ((j->item_number == i->item_number) && (j->item_number != NOTHING))
           break;
       if (j!=i)
         continue;
       for (j = i; j; j = j->next_content)
         if (str_cmp(j->short_description, i->short_description) == 0)
           num++;
-        else if ((j->item_number == i->item_number) && (j->item_number != -1))
+        else if ((j->item_number == i->item_number) && (j->item_number != NOTHING))
           num++;
     }
     if (CAN_SEE_OBJ(ch, i) || (GET_OBJ_TYPE(i) == ITEM_LIGHT)) {
@@ -668,13 +668,15 @@ void look_at_room(room_rnum target_room,
   send_to_char(ch, "%s", CCCYN(ch, C_NRM));
   if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_ROOMFLAGS)) {
     char buf[MAX_STRING_LENGTH];
+    char buf2[MAX_STRING_LENGTH];
 
     sprintbitarray(ROOM_FLAGS(target_room), room_bits, RF_ARRAY_MAX, buf);
+    sprinttype(rm->sector_type, sector_types, buf2, sizeof(buf2));
     send_to_char(ch, "[%5d] ", GET_ROOM_VNUM(IN_ROOM(ch)));
 
-    send_to_char(ch, "%s%s [ %s]",
+    send_to_char(ch, "%s%s [ %s] [ %s ]",
                      SCRIPT(rm) ? "[TRIG] " : "",
-                     world[IN_ROOM(ch)].name, buf);
+                     world[IN_ROOM(ch)].name, buf, buf2);
   } else
     send_to_char(ch, "%s", world[target_room].name);
 
@@ -723,12 +725,11 @@ void look_in_obj(struct char_data *ch, c
 
   if (!*arg)
     send_to_char(ch, "Look in what?\r\n");
-  else if (find_exdesc(arg, world[IN_ROOM(ch)].ex_description) != NULL)
-    send_to_char(ch, "There's nothing inside that!\r\n");
-  else if (!(bits = generic_find(arg, FIND_OBJ_INV | FIND_OBJ_ROOM |
-				 FIND_OBJ_EQUIP, ch, &dummy, &obj))) {
+  else if (!(bits = generic_find(arg, FIND_OBJ_INV | FIND_OBJ_ROOM | FIND_OBJ_EQUIP, ch, &dummy, &obj))) {
     send_to_char(ch, "There doesn't seem to be %s %s here.\r\n", AN(arg), arg);
-  } else if ((GET_OBJ_TYPE(obj) == ITEM_PORTAL) && !OBJVAL_FLAGGED(obj, CONT_CLOSEABLE)) {
+  } else if (find_exdesc(arg, obj->ex_description) != NULL)
+      send_to_char(ch, "There's nothing inside that!\r\n");
+    else if ((GET_OBJ_TYPE(obj) == ITEM_PORTAL) && !OBJVAL_FLAGGED(obj, CONT_CLOSEABLE)) { 
     if (GET_OBJ_VAL(obj, 3) < 0) {
       /* You can look through the portal to the destination */
       /* where does this lead to? */
@@ -738,11 +739,11 @@ void look_in_obj(struct char_data *ch, c
       } else if (IS_DARK(portal_dest) && !CAN_SEE_IN_DARK(ch)) {
         send_to_char(ch, "You see nothing but infinite darkness...\r\n");
       } else {
-        send_to_char(ch, "After seconds of concentration you see the image of %s.\r\n",
-                          world[portal_dest].name);
+       send_to_char(ch, "After seconds of concentration you see the image of %s.\r\n", world[portal_dest].name);
       }
     } else if (GET_OBJ_VAL(obj, 3) < MAX_PORTAL_TYPES) {
-      /* display the appropriate description from the list of descriptions */
+     /* display the appropriate description from the list of descriptions
+*/
       send_to_char(ch, "%s\r\n", portal_appearance[GET_OBJ_VAL(obj, 3)]);
     } else {
       /* We shouldn't really get here, so give a default message */
@@ -797,11 +798,13 @@ void look_in_obj(struct char_data *ch, c
       if (GET_OBJ_VAL(obj, 1) <= 0)
 	send_to_char(ch, "It is empty.\r\n");
       else {
-      if (GET_OBJ_VAL(obj, 0) < 0) {
+        if (GET_OBJ_VAL(obj, 0) < 0)
+        {
           char buf2[MAX_STRING_LENGTH];
 	  sprinttype(GET_OBJ_VAL(obj, 2), color_liquid, buf2, sizeof(buf2));
 	  send_to_char(ch, "It's full of a %s liquid.\r\n", buf2);
-      } else if (GET_OBJ_VAL(obj,1)>GET_OBJ_VAL(obj,0)) {
+        }
+       else if (GET_OBJ_VAL(obj,1)>GET_OBJ_VAL(obj,0)) {
 	  send_to_char(ch, "Its contents seem somewhat murky.\r\n"); /* BUG */
 	} else {
           char buf2[MAX_STRING_LENGTH];
@@ -1616,7 +1618,7 @@ ACMD(do_who)
 /* BIG OL' FIXME: Rewrite it all. Similar to do_who(). */
 ACMD(do_users)
 {
-  char line[200], line2[220], idletime[10], classname[20];
+  char line[200], line2[220], idletime[10];
   char state[30], *timeptr, mode;
   char name_search[MAX_INPUT_LENGTH], host_search[MAX_INPUT_LENGTH];
   struct char_data *tch;
@@ -1673,8 +1675,8 @@ ACMD(do_users)
     }
   }				/* end while (parser) */
   send_to_char(ch,
-         "Num Class       Name         State          Idl Login@   Site\r\n"
-         "--- ----------- ------------ -------------- --- -------- -----------------------\r\n");
+         "Num Name         State          Idl Login    C Site\r\n"
+         "--- ------------ -------------- --- -------- - -----------------------\r\n");
 
   one_argument(argument, arg);
 
@@ -1704,15 +1706,7 @@ ACMD(do_users)
         continue;
       if (GET_INVIS_LEV(ch) > GET_LEVEL(ch))
 	continue;
-
-      if (d->original)
-	sprintf(classname, "[%2d %s %s]", GET_LEVEL(d->original),
-		CLASS_ABBR(d->original), RACE_ABBR(d->original));
-      else
-	sprintf(classname, "[%2d %s %s]", GET_LEVEL(d->character),
-		CLASS_ABBR(d->character), RACE_ABBR(d->character));
-    } else
-      strcpy(classname, "   -   ");
+    }
 
     timeptr = asctime(localtime(&d->login_time));
     timeptr += 11;
@@ -1729,11 +1723,11 @@ ACMD(do_users)
     else
       strcpy(idletime, "");
 
-    sprintf(line, "%3d %-7s %-12s %-14s %-3s %-8s ", d->desc_num, classname,
+    sprintf(line, "%3d %-12s %-14s %-3s %-8s %1s ", d->desc_num,
 	d->original && d->original->player.name ? d->original->player.name :
 	d->character && d->character->player.name ? d->character->player.name :
-	"UNDEFINED",
-	state, idletime, timeptr);
+	"UNDEFINED", state, idletime, timeptr,
+        d->comp->state ? d->comp->state == 1 ? "?" : "Y" : "N");
 
     if (d->host && *d->host)
       sprintf(line + strlen(line), "[%s]\r\n", d->host);
@@ -2150,7 +2144,9 @@ ACMD(do_toggle)
 
           "     Auto Split: %-3s    "
           "       Auto Sac: %-3s    "
-          "     View Order: %-3s    ",
+          "     View Order: %-3s\r\n"
+
+          "    Auto Assist: %-3s\r\n",
 
 	  ONOFF(PRF_FLAGGED(ch, PRF_DISPHP)),
 	  ONOFF(PRF_FLAGGED(ch, PRF_BRIEF)),
@@ -2178,7 +2174,13 @@ ACMD(do_toggle)
 
           ONOFF(PRF_FLAGGED(ch, PRF_AUTOSPLIT)),
           ONOFF(PRF_FLAGGED(ch, PRF_AUTOSAC)),
-          ONOFF(PRF_FLAGGED(ch, PRF_VIEWORDER)));
+          ONOFF(PRF_FLAGGED(ch, PRF_VIEWORDER)),
+
+          ONOFF(PRF_FLAGGED(ch, PRF_AUTOASSIST)));
+
+          if (CONFIG_ENABLE_COMPRESSION) {
+            send_to_char(ch, "    Compression: %-3s\r\n", ONOFF(!PRF_FLAGGED(ch, PRF_NOCOMPRESS)));
+          }
 }
 
 
diff -BbuprN -x '*.o' suntzu/src/act.item.c yoda/src/act.item.c
--- suntzu/src/act.item.c	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/act.item.c	2004-09-06 19:17:12.000000000 -0500
@@ -90,6 +90,7 @@ ACMD(do_assemble)
     send_to_char(ch, "You can't %s %s %s.\r\n", CMD_NAME, AN(argument), argument);
     return;
   }
+  add_unique_id(pObject);
 
   /* Now give the object to the character. */
   obj_to_char(pObject, ch);
@@ -280,9 +281,9 @@ void perform_get_from_container(struct c
       obj_to_char(obj, ch);
       act("You get $p from $P.", FALSE, ch, obj, cont, TO_CHAR);
       act("$n gets $p from $P.", TRUE, ch, obj, cont, TO_ROOM);
-      get_check_money(ch, obj);
       if (IS_NPC(ch)) {
         item_check(obj, ch);
+      get_check_money(ch, obj);
       }
     }
   }
@@ -347,10 +348,10 @@ int perform_get_from_room(struct char_da
     obj_to_char(obj, ch);
     act("You get $p.", FALSE, ch, obj, 0, TO_CHAR);
     act("$n gets $p.", TRUE, ch, obj, 0, TO_ROOM);
-    get_check_money(ch, obj);
     if (IS_NPC(ch))
       item_check(obj, ch);
     return (1);
+    get_check_money(ch, obj);
   }
   return (0);
 }
diff -BbuprN -x '*.o' suntzu/src/act.movement.c yoda/src/act.movement.c
--- suntzu/src/act.movement.c	2004-02-24 19:05:21.000000000 -0600
+++ yoda/src/act.movement.c	2004-09-27 22:16:28.000000000 -0500
@@ -29,6 +29,7 @@ void death_cry(struct char_data *ch);
 int find_eq_pos(struct char_data *ch, struct obj_data *obj, char *arg);
 int buildwalk(struct char_data *ch, int dir);
 struct obj_data *find_vehicle_by_vnum(int vnum);
+void timed_dt(struct char_data *ch);
 
 /* local functions */
 int has_boat(struct char_data *ch);
@@ -46,6 +47,27 @@ ACMD(do_sleep);
 ACMD(do_wake);
 ACMD(do_follow);
 
+void current_update(void)
+{
+  struct char_data *i, *next_char;
+  char buf[MAX_STRING_LENGTH];
+  int door =0;
+ 
+  /* characters */
+  for (i = character_list; i; i = next_char) {
+    next_char = i->next;
+    if ((GET_POS(i) == POS_STANDING) && ROOM_FLAGGED(IN_ROOM(i), ROOM_CURRENT) &&
+      ((door = rand_number(0, 18)) < NUM_OF_DIRS) && CAN_GO(i, door) && 
+      !FIGHTING(i) && !IS_NPC(i) && (SECT(IN_ROOM(i)) == SECT_WATER_NOSWIM)) {
+      snprintf(buf, sizeof(buf),"The strong current carries you %s!\r\n", dirs[door]);
+      send_to_char(i, buf);
+      snprintf(buf, sizeof(buf), "$n is taken %s by the rough current!", dirs[door]);
+      act(buf, FALSE, i, 0, 0, TO_NOTVICT);
+      perform_move(i, door, 1);
+    }
+  }
+}
+
 
 /* simple function to determine if char can walk on water */
 int has_boat(struct char_data *ch)
@@ -77,6 +99,21 @@ int has_boat(struct char_data *ch)
   return (0);
 }
 
+/* simple function to determine if char can fly */
+int has_flight(struct char_data *ch)
+{
+  if (GET_LEVEL(ch) > LVL_IMMORT)
+    return (1);
+
+  if (AFF_FLAGGED(ch, AFF_FLYING) || AFF_FLAGGED(ch, AFF_ANGELIC))
+    return (1);
+
+  /* anything worn as wings will do */
+  if (GET_EQ(ch, WEAR_WINGS))
+      return (1);
+
+  return (0);
+}
   
 
 /* do_simple_move assumes
@@ -123,6 +160,15 @@ int do_simple_move(struct char_data *ch,
     }
   }
 
+  /* if this room or the one we're going to needs flight, check for it */
+  if ((SECT(IN_ROOM(ch)) == SECT_FLYING) ||
+      (SECT(EXIT(ch, dir)->to_room) == SECT_FLYING)) {
+    if (!has_flight(ch)) {
+      send_to_char(ch, "You need wings to go there!\r\n");
+      return (0);
+    }
+  }
+
   /* move points needed is avg. move loss for src and destination sect type */
   need_movement = (movement_loss[SECT(IN_ROOM(ch))] +
 		   movement_loss[SECT(EXIT(ch, dir)->to_room)]) / 2;
@@ -190,6 +236,9 @@ int do_simple_move(struct char_data *ch,
   if (ch->desc != NULL)
     look_at_room(IN_ROOM(ch), ch, 0);
 
+  if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_TIMED_DT) && GET_LEVEL(ch) < LVL_IMMORT)
+     timed_dt(NULL);
+
   if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_DEATH) && GET_LEVEL(ch) < LVL_IMMORT) {
     log_death_trap(ch);
     death_cry(ch);
diff -BbuprN -x '*.o' suntzu/src/act.other.c yoda/src/act.other.c
--- suntzu/src/act.other.c	2004-08-14 11:18:04.000000000 -0500
+++ yoda/src/act.other.c	2004-09-10 19:22:48.000000000 -0500
@@ -924,7 +924,11 @@ ACMD(do_gen_tog)
     {"Autosac disabled.\r\n",
      "Autosac enabled.\r\n"},
     {"Viewing newest board messages first.\r\n",
-     "Viewing eldest board messages first.  Wierdo.\r\n"}
+     "Viewing eldest board messages first.  Wierdo.\r\n"},
+    {"Compression will be used if your client supports it.\r\n",
+     "Compression will not be used even if your client supports it.\r\n"},
+    {"You will no longer Auto-Assist.\r\n",
+     "You will now Auto-Assist.\r\n"}
   };
 
 
@@ -1025,6 +1029,16 @@ ACMD(do_gen_tog)
   case SCMD_VIEWORDER:
     result = PRF_TOG_CHK(ch, PRF_VIEWORDER);
     break;
+  case SCMD_NOCOMPRESS:
+    if (CONFIG_ENABLE_COMPRESSION) {
+      result = PRF_TOG_CHK(ch, PRF_NOCOMPRESS);
+      break;
+    } else {
+      send_to_char(ch, "Sorry, compression is globally disabled.\r\n");
+    }
+  case SCMD_AUTOASSIST:
+    result = PRF_TOG_CHK(ch, PRF_AUTOASSIST);
+    break;
   default:
     log("SYSERR: Unknown subcmd %d in do_gen_toggle.", subcmd);
     return;
diff -BbuprN -x '*.o' suntzu/src/act.wizard.c yoda/src/act.wizard.c
--- suntzu/src/act.wizard.c	2004-08-21 20:47:34.000000000 -0500
+++ yoda/src/act.wizard.c	2004-09-28 20:31:10.000000000 -0500
@@ -108,6 +108,7 @@ ACMD(do_show);
 ACMD(do_set);
 void snoop_check(struct char_data *ch);
 ACMD(do_saveall);
+ACMD(do_wizupdate);
 
 ACMD(do_echo)
 {
@@ -620,6 +621,9 @@ void do_stat_object(struct char_data *ch
 	CCGRN(ch, C_NRM), vnum, CCNRM(ch, C_NRM), GET_OBJ_RNUM(j), GET_ID(j), buf,
 	GET_OBJ_SPEC(j) ? "Exists" : "None");
 
+  send_to_char(ch, "Generation time: @g%s@nUnique ID: @g%lld@n\r\n",
+    ctime(&j->generation), j->unique_id);
+
   send_to_char(ch, "Object Hit Points: [ @g%3d@n/@g%3d@n]\r\n",
    GET_OBJ_VAL(j, 4), GET_OBJ_VAL(j, 5));
 
@@ -1294,6 +1298,7 @@ ACMD(do_load)
       return;
     }
     obj = read_object(r_num, REAL);
+    add_unique_id(obj);
     if (CONFIG_LOAD_INVENTORY)
       obj_to_char(obj, ch);
     else
@@ -1475,7 +1480,7 @@ ACMD(do_copyover)
     struct char_data * och = d->character;
     d_next = d->next; /* We delete from the list , so need to save this */
     if (!d->character || d->connected > CON_PLAYING) {
-      write_to_descriptor (d->descriptor, "\n\rSorry, we are rebooting. Come back in a few seconds.\n\r");
+      write_to_descriptor (d->descriptor, "\n\rSorry, we are rebooting. Come back in a few seconds.\n\r", d->comp);
       close_socket (d); /* throw'em out */
     } else {
       fprintf (fp, "%d %s %s %d\n", d->descriptor, GET_NAME(och), d->host, GET_ROOM_VNUM(IN_ROOM(och)));
@@ -1483,7 +1488,21 @@ ACMD(do_copyover)
       /* save och */
       Crash_rentsave(och, 0);
       save_char(och);
-      write_to_descriptor (d->descriptor, buf);
+#ifdef HAVE_ZLIB_H
+      if (d->comp->state == 2) {
+        d->comp->state = 3; /* Code to use Z_FINISH for deflate */
+      }
+#endif /* HAVE_ZLIB_H */
+      write_to_descriptor (d->descriptor, buf, d->comp);
+      d->comp->state = 0;
+#ifdef HAVE_ZLIB_H
+      if (d->comp->stream) {
+        deflateEnd(d->comp->stream);
+        free(d->comp->stream);
+        free(d->comp->buff_out);
+        free(d->comp->buff_in);
+      }
+#endif /* HAVE_ZLIB_H */
     }
   }
 	
@@ -2263,11 +2282,12 @@ ACMD(do_show)
   size_t len, nlen;
   zone_rnum zrn;
   zone_vnum zvn;
+  int low, high;
   byte self = FALSE;
   struct char_data *vict = NULL;
   struct obj_data *obj;
   struct descriptor_data *d;
-  char field[MAX_INPUT_LENGTH], value[MAX_INPUT_LENGTH],
+  char field[MAX_INPUT_LENGTH], value[MAX_INPUT_LENGTH], *strp,
 	arg[MAX_INPUT_LENGTH], buf[MAX_STRING_LENGTH];
   extern int top_of_trigt;
 
@@ -2288,6 +2308,7 @@ ACMD(do_show)
     { "snoop",		LVL_GRGOD },			/* 10 */
     { "assemblies",     LVL_IMMORT },
     { "guilds",         LVL_GOD },
+    { "uniques",        LVL_GRGOD },
     { "\n", 0 }
   };
 
@@ -2503,6 +2526,25 @@ ACMD(do_show)
     show_guild(ch, value);
     break;
 
+  case 13:
+    if (value && *value) {
+      if (sscanf(value, "%d-%d", &low, &high) != 2) {
+        if (sscanf(value, "%d", &low) != 1) {
+          send_to_char(ch, "Usage: show uniques, show uniques [vnum], or show uniques [low-high]\r\n");
+          return;
+        } else {
+          high = low;
+        }
+      }
+    } else {
+      low = -1;
+      high = 9999999;
+    }
+    strp = sprintuniques(low, high);
+    page_string(ch->desc, strp, TRUE);
+    free(strp);
+    break;
+
   /* show what? */
   default:
     send_to_char(ch, "Sorry, I don't understand that.\r\n");
@@ -3128,3 +3170,9 @@ ACMD(do_peace)
     GET_POS(ch) = POS_STANDING;  
 }
 
+ACMD(do_wizupdate)
+{
+       run_autowiz();
+       send_to_char(ch, "Wizlists updated.\n\r");
+}
+
diff -BbuprN -x '*.o' suntzu/src/assedit.c yoda/src/assedit.c
--- suntzu/src/assedit.c	2004-01-18 18:20:47.000000000 -0600
+++ yoda/src/assedit.c	2004-09-23 21:54:04.000000000 -0500
@@ -324,8 +324,13 @@ send_to_char(d->character, buf);
  case ASSEDIT_ADD_COMPONENT:              /* add a new component */
    if (isdigit(*arg)){
       pos = atoi(arg);
-     if ((real_object(pos)) < 0)    /* does the object exist? */
+#if CIRCLE_UNSIGNED_INDEX
+     if ((real_object(pos)) == NOTHING)    /* does the object exist? */
          break;
+#else
+     if ((real_object(pos)) <= NOTHING)    /* does the object exist? */
+         break;
+#endif
 
      for ( i = 0; i < OLC_ASSEDIT(d)->lNumComponents; i++) {
         if(OLC_ASSEDIT(d)->pComponents[i].lVnum == pos)
diff -BbuprN -x '*.o' suntzu/src/assemblies.c yoda/src/assemblies.c
--- suntzu/src/assemblies.c	2004-02-27 18:00:24.000000000 -0600
+++ yoda/src/assemblies.c	2004-09-23 21:54:04.000000000 -0500
@@ -210,7 +210,11 @@ bool assemblyAddComponent( long lVnum, l
     log( "SYSERR: assemblyAddComponent(): Invalid 'lVnum' #%ld.", lVnum );
     return (FALSE);
   }
-  else if( real_object( lComponentVnum ) < 0 )
+#if CIRCLE_UNSIGNED_INDEX
+  else if( real_object( lComponentVnum ) == NOTHING)
+#else
+  else if( real_object( lComponentVnum ) <= NOTHING )
+#endif
   {
     log( "SYSERR: assemblyAddComponent(): Invalid 'lComponentVnum' #%ld.",
       lComponentVnum );
diff -BbuprN -x '*.o' suntzu/src/boards.c yoda/src/boards.c
--- suntzu/src/boards.c	2004-08-14 10:42:15.000000000 -0500
+++ yoda/src/boards.c	2004-09-06 18:54:43.000000000 -0500
@@ -68,13 +69,21 @@ void init_boards(void) {
   int i,j,board_vnum;
   struct xap_dir xd;
   struct board_info *tmp_board;
+  char dir_name[128];
 
   if(!insure_directory(BOARD_DIRECTORY,0)) {
     log("Unable to open/create directory '%s' - Exiting", BOARD_DIRECTORY);
     exit(1);
   }
   
-  if((i=xdir_scan(BOARD_DIRECTORY,&xd)) <= 0) {
+
+  #if defined(CIRCLE_WINDOWS)
+    strcpy(dir_name, "etc/boards/*");
+  #else
+    strcpy(dir_name, "etc/boards");
+  #endif
+
+  if((i=xdir_scan(dir_name, &xd)) <= 0) {
     log("Funny, no board files found.\n");
     return;
   }
@@ -160,6 +169,7 @@ int save_board(struct board_info *ts) {
 	  WRITE_LVL(ts), REMOVE_LVL(ts), BOARD_MNUM(ts));
   
   for(message=BOARD_MESSAGES(ts);message;message=MESG_NEXT(message)) {
+	  if (message)
     fprintf(fl,"#%d\n"
 	    "%ld\n"
 	    "%ld\n"
@@ -411,6 +421,7 @@ void clear_one_board(struct board_info *
 void show_board(int board_vnum, struct char_data *ch) {
   struct board_info *thisboard;
   struct board_msg *message;
+  struct obj_data *obj;
   char *tmstr;
   int msgcount=0,yesno=0;
   char buf[MAX_STRING_LENGTH];
@@ -434,8 +445,12 @@ void show_board(int board_vnum, struct c
   
   /* send the standard board boilerplate */
 
-  sprintf(buf,"This is a bulletin board.\r\n"
-	  "Usage:READ/REMOVE <messg #>, RESPOND <messg #>, WRITE <header>.\r\n");
+  obj = &(obj_proto[real_object(board_vnum)]);
+
+  sprintf(buf,"%s\r\n"
+    "Usage:READ/REMOVE <messg #>, RESPOND <messg #>, WRITE <header>.\r\n",
+    obj->short_description); 
+
   if (!BOARD_MNUM(thisboard) || !BOARD_MESSAGES(thisboard)) {
     strcat(buf, "The board is empty.\r\n");
     send_to_char(ch,buf);
@@ -633,13 +648,13 @@ void write_board_message(int board_vnum,
   MESG_POSTER(message)=GET_IDNUM(ch);
   MESG_TIMESTAMP(message)=time(0);
   MESG_SUBJECT(message) = strdup(arg);
-  MESG_NEXT(message)=NULL;
+  MESG_PREV(message)=NULL;
   MESG_DATA(message)=NULL;
   BOARD_MNUM(thisboard) = MAX(BOARD_MNUM(thisboard) + 1,1);
 
   MESG_NEXT(message)=BOARD_MESSAGES(thisboard);
   if(BOARD_MESSAGES(thisboard)) {
-
+    MESG_PREV(BOARD_MESSAGES(thisboard)) = message;
   }
   BOARD_MESSAGES(thisboard) = message;
   send_to_char(ch,"Write your message.  (/s saves /h for help)\r\n");
@@ -735,7 +750,7 @@ struct board_info *locate_board(int boar
 
 void remove_board_msg(int board_vnum, struct char_data * ch, int arg) {
   struct board_info *thisboard;
-  struct board_msg *cur;
+  struct board_msg *cur, *temp;
   struct descriptor_data *d;
   int msgcount;
   char buf[MAX_STRING_LENGTH+1];
@@ -779,24 +794,7 @@ void remove_board_msg(int board_vnum, st
     }
   }
   /* everything else is peachy, kill the message */
-  if(BOARD_MESSAGES(thisboard) == cur) {
-    if(MESG_NEXT(cur) != NULL) {
-      BOARD_MESSAGES(thisboard) = MESG_NEXT(cur);
-    } else {
-      BOARD_MESSAGES(thisboard) = NULL;
-    }
-  }
-  
-  /* due to the way these things work, these will never dereference nulls
-     because the unknown is based on cur */
-  
-  if(MESG_PREV(cur)) {
-    MESG_NEXT(MESG_PREV(cur)) = MESG_NEXT(cur);
-  }
-  
-  if(MESG_NEXT(cur)) {
-    MESG_PREV(MESG_NEXT(cur)) = MESG_PREV(cur);
-  }
+  REMOVE_FROM_LIST(cur, BOARD_MESSAGES(thisboard), next);
   free(cur);
   cur = NULL;
   BOARD_MNUM (thisboard) = BOARD_MNUM (thisboard) - 1;
diff -BbuprN -x '*.o' suntzu/src/cedit.c yoda/src/cedit.c
--- suntzu/src/cedit.c	2004-05-27 20:38:26.000000000 -0500
+++ yoda/src/cedit.c	2004-09-18 12:22:17.000000000 -0500
@@ -120,6 +120,9 @@ void cedit_setup(struct descriptor_data 
   OLC_CONFIG(d)->play.mob_fighting        = CONFIG_MOB_FIGHTING;
   OLC_CONFIG(d)->play.disp_closed_doors   = CONFIG_DISP_CLOSED_DOORS;
   OLC_CONFIG(d)->play.reroll_player       = CONFIG_REROLL_PLAYER_CREATION;
+  OLC_CONFIG(d)->play.enable_compression  = CONFIG_ENABLE_COMPRESSION;
+  OLC_CONFIG(d)->play.enable_languages    = CONFIG_ENABLE_LANGUAGES;
+  OLC_CONFIG(d)->play.all_items_unique    = CONFIG_ALL_ITEMS_UNIQUE;
   
   /****************************************************************************/
   /** Crash Saves                                                            **/
@@ -231,6 +234,9 @@ void cedit_save_internally(struct descri
   CONFIG_MOB_FIGHTING        = OLC_CONFIG(d)->play.mob_fighting;
   CONFIG_DISP_CLOSED_DOORS   = OLC_CONFIG(d)->play.disp_closed_doors;
   CONFIG_REROLL_PLAYER_CREATION = OLC_CONFIG(d)->play.reroll_player;
+  CONFIG_ENABLE_COMPRESSION = OLC_CONFIG(d)->play.enable_compression;
+  CONFIG_ENABLE_LANGUAGES = OLC_CONFIG(d)->play.enable_languages;
+  CONFIG_ALL_ITEMS_UNIQUE = OLC_CONFIG(d)->play.all_items_unique;
   
   /****************************************************************************/
   /** Crash Saves                                                            **/
@@ -414,6 +420,12 @@ int save_config( IDXTYPE nowhere )
               "disp_closed_doors = %d\n\n", CONFIG_DISP_CLOSED_DOORS);
   fprintf(fl, "* Should players be able to reroll stats at creation?\n"
               "reroll_stats = %d\n\n", CONFIG_REROLL_PLAYER_CREATION);
+  fprintf(fl, "* Should compression be used if the client supports it?\n"
+              "compression = %d\n\n", CONFIG_ENABLE_COMPRESSION);
+  fprintf(fl, "* Should spoken languages be used?\n"
+              "enable_languages = %d\n\n", CONFIG_ENABLE_LANGUAGES);
+  fprintf(fl, "* Should all items be treated as unique?\n"
+              "all_items_unique = %d\n\n", CONFIG_ALL_ITEMS_UNIQUE);
               
               
   strcpy(buf, CONFIG_OK);
@@ -652,6 +664,7 @@ void cedit_disp_game_play_options(struct
         "%sO%s) Track Through Doors         : %s%s\r\n"
         "%sP%s) Display Closed Doors        : %s%s\r\n"
         "%sR%s) Mortals Level To Immortal   : %s%s\r\n"
+        "%sS%s) Treat all Objects as Unique : %s%s\r\n"
 	"%s1%s) Stack Mobiles in room descs : %s%s\r\n"
 	"%s2%s) Stack Objects in room descs : %s%s\r\n"
 	"%s3%s) Allow mobs to fight mobs    : %s%s\r\n"
@@ -659,6 +672,8 @@ void cedit_disp_game_play_options(struct
         "%s5%s) NOPERSON Message Text   : %s%s"
         "%s6%s) NOEFFECT Message Text   : %s%s"
         "%s7%s) Players can reroll stats on creation : %s%s\r\n"
+	"%s8%s) Allow MCCP2 stream compression (recommended): %s%s\r\n"
+	"%s9%s) Allow spoken languages : %s%s\r\n"
         "%sQ%s) Exit To The Main Menu\r\n"
         "Enter your choice : ",
         grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.pk_allowed),
@@ -679,6 +694,7 @@ void cedit_disp_game_play_options(struct
         grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.track_through_doors),
         grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.disp_closed_doors),
         grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.immort_level_ok),
+	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.all_items_unique),
 	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.stack_mobs),
 	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.stack_objs),
         grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.mob_fighting),
@@ -686,6 +702,8 @@ void cedit_disp_game_play_options(struct
         grn, nrm, cyn, OLC_CONFIG(d)->play.NOPERSON,
         grn, nrm, cyn, OLC_CONFIG(d)->play.NOEFFECT,
 	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.reroll_player),
+	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.enable_compression),
+	grn, nrm, cyn, CHECK_VAR(OLC_CONFIG(d)->play.enable_languages),
         
         grn, nrm
         );
@@ -1000,6 +1018,11 @@ void cedit_parse(struct descriptor_data 
           TOGGLE_VAR(OLC_CONFIG(d)->play.immort_level_ok);
           break;
         
+	case 's':
+	case 'S':
+	  TOGGLE_VAR(OLC_CONFIG(d)->play.all_items_unique);
+	  break;
+        
         case '1':
 	  TOGGLE_VAR(OLC_CONFIG(d)->play.stack_mobs);
 	  break;
@@ -1031,6 +1054,14 @@ void cedit_parse(struct descriptor_data 
 	  TOGGLE_VAR(OLC_CONFIG(d)->play.reroll_player);
 	  break;
         
+	case '8':
+	  TOGGLE_VAR(OLC_CONFIG(d)->play.enable_compression);
+	  break;
+        
+	case '9':
+	  TOGGLE_VAR(OLC_CONFIG(d)->play.enable_languages);
+	  break;
+        
         case 'q':
         case 'Q':
           cedit_disp_menu(d);
diff -BbuprN -x '*.o' suntzu/src/comm.c yoda/src/comm.c
--- suntzu/src/comm.c	2004-08-21 20:32:18.000000000 -0500
+++ yoda/src/comm.c	2004-09-27 22:08:44.000000000 -0500
@@ -75,6 +75,10 @@
 #define INVALID_SOCKET (-1)
 #endif
 
+/* mccp defines */
+#define COMPRESS2 86
+
+
 /* externs */
 extern struct ban_list_element *ban_list;
 extern int num_invalid;
@@ -123,8 +127,8 @@ RETSIGTYPE unrestrict_game(int sig);
 RETSIGTYPE reap(int sig);
 RETSIGTYPE checkpointing(int sig);
 RETSIGTYPE hupsig(int sig);
-ssize_t perform_socket_read(socket_t desc, char *read_point,size_t space_left);
-ssize_t perform_socket_write(socket_t desc, const char *txt,size_t length);
+ssize_t perform_socket_read(socket_t desc, char *read_point, size_t space_left);
+ssize_t perform_socket_write(socket_t desc, const char *txt, size_t length, struct compr *comp);
 void echo_off(struct descriptor_data *d);
 void echo_on(struct descriptor_data *d);
 void circle_sleep(struct timeval *timeout);
@@ -176,6 +180,21 @@ void Free_Invalid_List(void);
 void free_command_list(void);
 void load_config(void);
 void affect_update_violence(void);      /* In magic.c */
+void timed_dt(struct char_data *ch);
+
+
+#ifdef HAVE_ZLIB_H
+/* zlib helper functions */
+void *z_alloc(void *opaque, uInt items, uInt size)
+{
+  return calloc(items, size);
+}
+
+void z_free(void *opaque, void *address)
+{
+  return free(address);
+}
+#endif /* HAVE_ZLIB_H */
 
 #ifdef __CXREF__
 #undef FD_ZERO
@@ -411,6 +430,16 @@ int main(int argc, char **argv)
 
 int enter_player_game(struct descriptor_data *d);
 
+/* first compression neg. string */
+const char compress_offer[] =
+{
+  (char) IAC,
+  (char) WILL,
+  (char) COMPRESS2,
+  (char) 0,
+};
+
+
 /* Reload players after a copyover */
 void copyover_recover()
 {
@@ -439,7 +468,7 @@ void copyover_recover()
       break;
 
     /* Write something, and check if it goes error-free */		
-    if (write_to_descriptor (desc, "\n\rFolding initiated...\n\r") < 0) {
+    if (write_to_descriptor (desc, "\n\rFolding initiated...\n\r", NULL) < 0) {
       close (desc); /* nope */
       continue;
     }
@@ -476,10 +505,16 @@ void copyover_recover()
         fOld = FALSE;
 		
      if (!fOld) /* Player file not found?! */ {
-       write_to_descriptor (desc, "\n\rSomehow, your character was lost during the folding. Sorry.\n\r");
+       write_to_descriptor (desc, "\n\rSomehow, your character was lost during the folding. Sorry.\n\r", NULL);
        close_socket (d);			
      } else {
-       write_to_descriptor (desc, "\n\rFolding complete.\n\r");
+       write_to_descriptor (desc, "\n\rFolding complete.\n\r", NULL);
+#ifdef HAVE_ZLIB_H
+       if (CONFIG_ENABLE_COMPRESSION && !PRF_FLAGGED(d->character, PRF_NOCOMPRESS)) {
+         d->comp->state = 1; /* indicates waiting for comp negotiation */
+         write_to_output(d, "%s", compress_offer);
+       }
+#endif /* HAVE_ZLIB_H */
        if (!PLR_FLAGGED(d->character, PLR_LOADROOM))
          GET_LOADROOM(d->character) = saved_loadroom;
        enter_player_game(d);
@@ -929,7 +964,7 @@ void game_loop(socket_t mother_desc)
     /* Print prompts for other descriptors who had no other output */
     for (d = descriptor_list; d; d = d->next) {
       if (!d->has_prompt) {
-	write_to_descriptor(d->descriptor, make_prompt(d));
+	write_to_descriptor(d->descriptor, make_prompt(d), d->comp);
 	d->has_prompt = TRUE;
       }
     }
@@ -1029,6 +1064,12 @@ void heartbeat(int heart_pulse)
   if (!(heart_pulse % PULSE_TIMESAVE))
     save_mud_time(&time_info);
 
+  if (!(heart_pulse % PULSE_CURRENT))
+    current_update();
+
+  if (!(heart_pulse % (30 * PASSES_PER_SEC)))
+    timed_dt(NULL);  
+
   /* Every pulse! Don't want them to stink the place up... */
   extract_pending_chars();
 }
@@ -1579,11 +1620,32 @@ void init_descriptor (struct descriptor_
   *newd->output = '\0';
   newd->bufptr = 0;
   newd->has_prompt = 1;  /* prompt is part of greetings */
-  STATE(newd) = CON_QANSI;
+  STATE(newd) = CON_GET_NAME;
   CREATE(newd->history, char *, HISTORY_SIZE);
   if (++last_desc == 1000)
     last_desc = 1;
   newd->desc_num = last_desc;
+
+  CREATE(newd->comp, struct compr, 1);
+  newd->comp->state = 0; /* we start in normal mode */
+#ifdef HAVE_ZLIB_H
+  newd->comp->stream = NULL;
+#endif /* HAVE_ZLIB_H */
+}
+
+void set_color(struct descriptor_data *d)
+{
+   if (d->character == NULL) {
+      CREATE(d->character, struct char_data, 1);
+      clear_char(d->character);
+      CREATE(d->character->player_specials, struct player_special_data, 1);
+      d->character->desc = d;
+    }
+  SET_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_1);
+  SET_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_2);
+  write_to_output(d, GREETANSI);
+  write_to_output(d, "\r\n\r\n@CBy what name do you wish to be known? @n");
+  return;
 }
 
 int new_descriptor(socket_t s)
@@ -1595,7 +1657,6 @@ int new_descriptor(socket_t s)
   struct descriptor_data *newd;
   struct sockaddr_in peer;
   struct hostent *from;
-  extern char *ANSIQUESTION;
 
   /* accept the new connection */
   i = sizeof(peer);
@@ -1617,7 +1678,7 @@ int new_descriptor(socket_t s)
     sockets_connected++;
 
   if (sockets_connected >= CONFIG_MAX_PLAYING) {
-    write_to_descriptor(desc, "Sorry, CircleMUD is full right now... please try again later!\r\n");
+    write_to_descriptor(desc, "Sorry, CircleMUD is full right now... please try again later!\r\n", NULL);
     CLOSE_SOCKET(desc);
     return (0);
   }
@@ -1675,7 +1736,7 @@ int new_descriptor(socket_t s)
   newd->next = descriptor_list;
   descriptor_list = newd;
 
-  write_to_output(newd, "%s", ANSIQUESTION);
+  set_color(newd);
 
   return (0);
 }
@@ -1719,11 +1780,11 @@ int process_output(struct descriptor_dat
    */
   if (t->has_prompt) {
     t->has_prompt = FALSE;
-    result = write_to_descriptor(t->descriptor, i);
+    result = write_to_descriptor(t->descriptor, i, t->comp);
     if (result >= 2)
       result -= 2;
   } else
-    result = write_to_descriptor(t->descriptor, osb);
+    result = write_to_descriptor(t->descriptor, osb, t->comp);
 
   if (result < 0) {     /* Oops, fatal error. Bye! */
     close_socket(t);
@@ -1795,7 +1856,7 @@ int process_output(struct descriptor_dat
 
 #if defined(CIRCLE_WINDOWS)
 
-ssize_t perform_socket_write(socket_t desc, const char *txt, size_t length)
+ssize_t perform_socket_write(socket_t desc, const char *txt, size_t length, struct compr *comp)
 {
   ssize_t result;
 
@@ -1829,10 +1890,81 @@ ssize_t perform_socket_write(socket_t de
 #endif
 
 /* perform_socket_write for all Non-Windows platforms */
-ssize_t perform_socket_write(socket_t desc, const char *txt, size_t length)
+ssize_t perform_socket_write(socket_t desc, const char *txt, size_t length, struct compr *comp)
 {
-  ssize_t result;
+  ssize_t result = 0;
+
+#ifdef HAVE_ZLIB_H
+  int compr_result, tmp, cnt, bytes_copied;
+  
+  /* MCCP! this is where the zlib compression is handled */
+  if (comp && comp->state >= 2) { /* compress2 on */
+    /* copy data to input buffer */
+    /* first check that overflow won't happen */
+    /* if it will, we only copy over so much text */
+    if (comp->size_in + length > comp->total_in)
+      bytes_copied = comp->total_in - comp->size_in;
+    else
+      bytes_copied = length;
+    
+    /* now copy what will fit into the buffer */
+    strncpy(comp->buff_in + comp->size_in, txt, bytes_copied);
+    comp->size_in += bytes_copied;
+
+    /* set up stream input */
+    comp->stream->avail_in = comp->size_in;
+    comp->stream->next_in = comp->buff_in;
+    
+    /* lets do it */
+    /* deflate all the input - this means flushing our output buffer when it fills */
+    do {
+      /* set up stream output - the size_out bit is somewhat unnecessary, but makes things safer */
+      comp->stream->avail_out = comp->total_out - comp->size_out;
+      comp->stream->next_out = comp->buff_out + comp->size_out;
+      
+      compr_result = deflate(comp->stream, comp->state == 3 ? Z_FINISH : Z_SYNC_FLUSH);
+      
+      if (compr_result == Z_STREAM_END)
+        compr_result = 0;
+      else if (compr_result == Z_OK && !(comp->stream->avail_out))
+        compr_result = 1;
+      else if (compr_result < 0) {  /* uh oh, fatal zlib error */
+	result = 0;
+	break;
+      } else
+	compr_result = 0;
+    
+      /* adjust output state value */
+      comp->size_out = comp->total_out - comp->stream->avail_out;
+
+      /* write out compressed data - flush buff_out */
+      /* if problems encountered, resort to resending all data by breaking and returning < 1.. */
+      tmp = 0;
+      while (comp->size_out > 0) {
+	result = write(desc, comp->buff_out + tmp, comp->size_out);
+	if (result < 1) /* unsuccessful write or socket error */
+	  goto exitzlibdo; /* yummy, goto. faster than two breaks ! */ 
+	comp->size_out -= result;
+	tmp += result;
+      }
+    } while (compr_result);
+exitzlibdo:
+    
+    /* adjust buffers - is this necessary? not with Z_SYNC_FLUSH I think - but just to be safe */
+    /* input loses size_in - avail_in bytes */
+    tmp = comp->size_in - comp->stream->avail_in;
+    for (cnt = tmp; cnt < comp->size_in; cnt++)
+	*(comp->buff_in + (cnt - tmp)) = *(comp->buff_in + cnt);
+
+    /* adjust input state value - it is important that this is done after the previous step */
+    comp->size_in = comp->stream->avail_in;
+    /* the above as taken out because I don't think its necessary.. this is faster too */
+    /*comp->size_in = 0;*/
 
+    if (result > 0)
+	result = bytes_copied;
+  } else 
+#endif /* HAVE_ZLIB_H */
   result = write(desc, txt, length);
 
   if (result > 0) {
@@ -1884,13 +2016,13 @@ ssize_t perform_socket_write(socket_t de
  * >=0  If all is well and good.
  *  -1  If an error was encountered, so that the player should be cut off.
  */
-int write_to_descriptor(socket_t desc, const char *txt)
+int write_to_descriptor(socket_t desc, const char *txt, struct compr *comp)
 {
   ssize_t bytes_written;
   size_t total = strlen(txt), write_total = 0;
 
   while (total > 0) {
-    bytes_written = perform_socket_write(desc, txt, total);
+    bytes_written = perform_socket_write(desc, txt, total, comp);
 
     if (bytes_written < 0) {
       /* Fatal error.  Disconnect the player. */
@@ -2001,6 +2133,18 @@ int process_input(struct descriptor_data
   char *ptr, *read_point, *write_point, *nl_pos = NULL;
   char tmp[MAX_INPUT_LENGTH];
 
+#ifdef HAVE_ZLIB_H
+  const char compress_start[] =
+  {
+    (char) IAC,
+    (char) SB,
+    (char) COMPRESS2,
+    (char) IAC,
+    (char) SE,
+    (char) 0
+  };
+#endif /* HAVE_ZLIB_H */
+
   /* first, find the point where we left off reading data */
   buf_length = strlen(t->inbuf);
   read_point = t->inbuf + buf_length;
@@ -2019,6 +2163,47 @@ int process_input(struct descriptor_data
     else if (bytes_read == 0)	/* Just blocking, no problems. */
       return (0);
 
+    /* check for compression response, if still expecting something */
+    /* note: this will bork if the user is giving lots of input when he first connects */
+    /* he shouldn't be doing this, and for the sake of efficiency, the read buffer isn't searched */
+    /* (ie. it assumes that read_point[0] will be IAC, etc.) */
+    if (t->comp->state == 1) {
+#ifdef HAVE_ZLIB_H
+      if (*read_point == (char)IAC && *(read_point + 1) == (char)DO && *(read_point + 2) == (char)COMPRESS2) {
+	/* compression just turned on */
+	/* first send plaintext start of the compression stream */
+	write_to_descriptor(t->descriptor, compress_start, NULL);
+	
+	/* init the compression stream */	
+	CREATE(t->comp->stream, z_stream, 1);
+	t->comp->stream->zalloc = z_alloc;
+	t->comp->stream->zfree = z_free;
+	t->comp->stream->opaque = Z_NULL;
+	deflateInit(t->comp->stream, Z_DEFAULT_COMPRESSION);
+        
+	/* init the state structure */
+	/* first the output component */
+	CREATE(t->comp->buff_out, Bytef, SMALL_BUFSIZE);
+	t->comp->total_out = SMALL_BUFSIZE;
+	t->comp->size_out = 0;
+	/* now the input component */
+	CREATE(t->comp->buff_in, Bytef, SMALL_BUFSIZE);
+	t->comp->total_in = SMALL_BUFSIZE;
+	t->comp->size_in = 0;
+
+	/* finally, turn compression on */
+	t->comp->state = 2;
+	
+	bytes_read = 0; /* ignore the compression string - don't process it further */
+      } else if (*read_point == (char)IAC && *(read_point + 1) == (char)DONT && *(read_point + 2) == (char)COMPRESS2) {
+	t->comp->state = 0;
+	
+	bytes_read = 0; /* ignore the compression string - don't process it further */
+      }
+#else /* HAVE_ZLIB_H */
+      t->comp->state = 0; /* We can't compress without zlib...turn it off */
+#endif /* HAVE_ZLIB_H */
+    }
     /* at this point, we know we got some data from the read */
 
     *(read_point + bytes_read) = '\0';	/* terminate the string */
@@ -2086,7 +2271,7 @@ int process_input(struct descriptor_data
       char buffer[MAX_INPUT_LENGTH + 64];
 
       snprintf(buffer, sizeof(buffer), "Line too long.  Truncated to:\r\n%s\r\n", tmp);
-      if (write_to_descriptor(t->descriptor, buffer) < 0)
+      if (write_to_descriptor(t->descriptor, buffer, t->comp) < 0)
 	return (-1);
     }
     if (t->snoop_by)
@@ -2267,6 +2452,7 @@ void close_socket(struct descriptor_data
   /*. Kill any OLC stuff .*/
   switch (d->connected) {
     case CON_OEDIT:
+    case CON_IEDIT:
     case CON_REDIT:
     case CON_ZEDIT:
     case CON_MEDIT:
@@ -2280,6 +2466,19 @@ void close_socket(struct descriptor_data
       break;
   }
 
+  /* free compression structures */
+#ifdef HAVE_ZLIB_H
+  if (d->comp->stream) {
+    deflateEnd(d->comp->stream);
+    free(d->comp->stream);
+    free(d->comp->buff_out);
+    free(d->comp->buff_in);
+  }
+#endif /* HAVE_ZLIB_H */
+  /* d->comp was still created even if there is no zlib, for comp->state) */
+  if (d->comp)
+    free(d->comp);  
+      
   free(d);
 }
 
diff -BbuprN -x '*.o' suntzu/src/comm.h yoda/src/comm.h
--- suntzu/src/comm.h	2004-05-27 20:36:14.000000000 -0500
+++ yoda/src/comm.h	2004-09-06 16:18:41.000000000 -0500
@@ -34,7 +34,7 @@ void	act(const char *str, int hide_invis
 
 /* I/O functions */
 void	write_to_q(const char *txt, struct txt_q *queue, int aliased);
-int	write_to_descriptor(socket_t desc, const char *txt);
+int	write_to_descriptor(socket_t desc, const char *txt, struct compr *comp);
 size_t	write_to_output(struct descriptor_data *d, const char *txt, ...) __attribute__ ((format (printf, 2, 3)));
 size_t	vwrite_to_output(struct descriptor_data *d, const char *format, va_list args);
 void	string_add(struct descriptor_data *d, char *str);
diff -BbuprN -x '*.o' suntzu/src/conf.h yoda/src/conf.h
--- suntzu/src/conf.h	2004-01-18 18:20:47.000000000 -0600
+++ yoda/src/conf.h	2004-09-06 16:18:41.000000000 -0500
@@ -160,6 +160,9 @@
 /* Define if you have the <unistd.h> header file.  */
 #define HAVE_UNISTD_H 1
 
+/* Define if you have the <zlib.h> header file.  */
+#define HAVE_ZLIB_H 1
+
 /* Define if you have the malloc library (-lmalloc).  */
 /* #undef HAVE_LIBMALLOC */
 
diff -BbuprN -x '*.o' suntzu/src/conf.h.in yoda/src/conf.h.in
--- suntzu/src/conf.h.in	2004-01-18 18:20:47.000000000 -0600
+++ yoda/src/conf.h.in	2004-09-06 16:18:41.000000000 -0500
@@ -159,6 +159,9 @@
 /* Define if you have the <unistd.h> header file.  */
 #undef HAVE_UNISTD_H
 
+/* Define if you have the <zlib.h> header file.  */
+#undef HAVE_ZLIB_H
+
 /* Define if you have the malloc library (-lmalloc).  */
 #undef HAVE_LIBMALLOC
 
diff -BbuprN -x '*.o' suntzu/src/config.c yoda/src/config.c
--- suntzu/src/config.c	2004-06-22 22:33:31.000000000 -0500
+++ yoda/src/config.c	2004-09-18 12:14:03.000000000 -0500
@@ -434,7 +434,7 @@ obj_vnum portal_object = 2;
  * Set to NO to mimic historic behaviour - a player has to explicitly
  * look in a certain direction to see a door there.
  */
-int display_closed_doors = YES;
+int disp_closed_doors = YES;
 
 /*
  * Do you want players to be able to reroll their status at creation?
@@ -443,3 +443,26 @@ int display_closed_doors = YES;
  */
 int reroll_status = NO;
 
+/*
+ * Do you want to enable MCCP2 stream compression? It is safe to enable
+ * this option even on systems without zlib, but compression will not
+ * happen without zlib.
+ *
+ * Enabling compression will save a great deal of bandwidth for data
+ * being transmitted to users with MCCP2-compliant MUD clients.
+ */
+int enable_compression = YES;
+
+/*
+ * Do you want to enable different spoken languages? Set to YES and
+ * you will have different races speaking in different languages.
+ */
+int enable_languages = YES;
+
+/*
+ * Do you want to treat all objects as unique? Set to YES and
+ * every object created in the game will be flagged as UNIQUE. This
+ * will help prevent object duping.
+ */
+int all_items_unique = YES;
+
diff -BbuprN -x '*.o' suntzu/src/constants.c yoda/src/constants.c
--- suntzu/src/constants.c	2004-08-03 18:59:27.000000000 -0500
+++ yoda/src/constants.c	2004-09-27 22:09:28.000000000 -0500
@@ -54,6 +54,12 @@ const char *patch_list[] = 
   "Command Disable 			version 1.1 	(2003/12/09)",
   "Reroll Player Stats w/ cedit 	version 1.1 	(2004/05/23)",
   "Dynamic Boards 			version 2.4 (2004/04/23)",
+  "MCCP2				version cwg1.0	(2004/09/05)",
+  "Dupecheck				version 1.0	(2003/12/07)",
+  "Auto-Assist				version 1.0	(2004/9/06)",
+  "Remove color question		version 1.0	(2004/9/27)",
+  "Room currents 			version 1.0	(2004/9/27)",
+  "Timed Deathtraps 			version 1.0	(2004/9/27)",
   "\n"
 };
 
@@ -117,6 +123,8 @@ const char *room_bits[] = {
   "*",				/* BFS MARK */
   "VEHICLE",
   "UNDERGROUND",
+  "CURRENT",
+  "TIMED_DT",
   "\n"
 };
 
@@ -280,6 +288,8 @@ const char *preference_bits[] = {
   "FULL_AUTOEX",
   "AUTOSAC",
   "VIEWORDER",
+  "NO_COMPRESS",
+  "AUTOASSIST",
   "\n"
 };
 
@@ -355,6 +365,7 @@ const char *connected_types[] = {
   "Query ANSI",
   "Guild edit",
   "Reroll stats",
+  "iObject Edit",
   "\n"
 };
 
diff -BbuprN -x '*.o' suntzu/src/db.c yoda/src/db.c
--- suntzu/src/db.c	2004-08-14 10:51:05.000000000 -0500
+++ yoda/src/db.c	2004-09-29 20:55:59.000000000 -0500
@@ -187,7 +187,6 @@ extern int no_specials;
 extern int scheck;
 extern int bitwarning;
 extern int bitsavetodisk;
-extern int display_closed_doors;
 
 /*************************************************************************
 *  routines for booting the system                                       *
@@ -1150,6 +1149,7 @@ void parse_room(FILE *fl, int virtual_nr
   world[room_nr].contents = NULL;
   world[room_nr].people = NULL;
   world[room_nr].light = 0;	/* Zero light sources */
+  world[room_nr].timed = -1;
 
   for (i = 0; i < NUM_OF_DIRS; i++)
     world[room_nr].dir_option[i] = NULL;
@@ -2273,6 +2273,163 @@ struct char_data *read_mobile(mob_vnum n
 }
 
 
+struct obj_unique_hash_elem {
+  long generation;
+  long long unique_id;
+  struct obj_data *obj;
+  struct obj_unique_hash_elem *next_e;
+};
+
+/* You can define this to anything you want; 1 would work but it would
+   be very inefficient. I would recommend that it actually be close to
+   your total number of in-game objects if not double or triple it just
+   to minimize collisions. The only O(n) [n=NUM_OBJ_UNIQUE_POOLS]
+   operation is initialization of the hash table, all other operations
+   that have to traverse are O(n) [n=num elements in pool], so more
+   pools are better.
+     - Elie Rosenblum Dec. 12 2003 */
+#define NUM_OBJ_UNIQUE_POOLS 5000
+
+struct obj_unique_hash_elem **obj_unique_hash_pools = NULL;
+
+void init_obj_unique_hash()
+{
+  int i;
+  CREATE(obj_unique_hash_pools, struct obj_unique_hash_elem *, NUM_OBJ_UNIQUE_POOLS);
+  for (i = 0; i < NUM_OBJ_UNIQUE_POOLS; i++) {
+    obj_unique_hash_pools[i] = NULL;
+  }
+}
+
+void add_unique_id(struct obj_data *obj)
+{
+  struct obj_unique_hash_elem *elem;
+  int i;
+  if (!obj_unique_hash_pools)
+    init_obj_unique_hash();
+  if (obj->unique_id == -1) {
+    if (sizeof(long long) > sizeof(long))
+      obj->unique_id = (((long long)circle_random()) << (sizeof(long long) * 4)) +
+                       circle_random();
+    else
+      obj->unique_id = circle_random();
+  }
+  if (CONFIG_ALL_ITEMS_UNIQUE) {
+    if (!IS_SET_AR(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE))
+      SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE);
+  }
+  CREATE(elem, struct obj_unique_hash_elem, 1);
+  elem->generation = obj->generation;
+  elem->unique_id = obj->unique_id;
+  elem->obj = obj;
+  i = obj->unique_id % NUM_OBJ_UNIQUE_POOLS;
+  elem->next_e = obj_unique_hash_pools[i];
+  obj_unique_hash_pools[i] = elem;
+}
+
+void remove_unique_id(struct obj_data *obj)
+{
+  struct obj_unique_hash_elem *elem, **ptr, *tmp;
+  ptr = obj_unique_hash_pools + (obj->unique_id % NUM_OBJ_UNIQUE_POOLS);
+  if (!(ptr && *ptr))
+    return;
+  elem = *ptr;
+  while (elem) {
+    if (elem->obj == obj) {
+      tmp = elem->next_e;
+      free(elem);
+      *ptr = tmp;
+    }
+    ptr = &(elem->next_e);
+    elem = *ptr;
+  }
+}
+
+void log_dupe_objects(struct obj_data *obj1, struct obj_data *obj2)
+{
+  mudlog(BRF, LVL_GOD, TRUE, "DUPE: Dupe object found: %s [%d] [%ld:%lld]", 
+        obj1->short_description ? obj1->short_description : "<No name>",
+        GET_OBJ_VNUM(obj1), obj1->generation, obj1->unique_id);
+  mudlog(BRF, LVL_GOD, TRUE, "DUPE: First: In room: %d (%s), "
+                             "In object: %s, Carried by: %s, Worn by: %s",
+        GET_ROOM_VNUM(IN_ROOM(obj1)),
+        IN_ROOM(obj1) == NOWHERE ? "Nowhere" : world[IN_ROOM(obj1)].name,
+        obj1->in_obj ? obj1->in_obj->short_description : "None",
+        obj1->carried_by ? GET_NAME(obj1->carried_by) : "Nobody",
+        obj1->worn_by ? GET_NAME(obj1->worn_by) : "Nobody");
+  mudlog(BRF, LVL_GOD, TRUE, "DUPE: Newer: In room: %d (%s), "
+                             "In object: %s, Carried by: %s, Worn by: %s",
+        GET_ROOM_VNUM(IN_ROOM(obj2)),
+        IN_ROOM(obj2) == NOWHERE ? "Nowhere" : world[IN_ROOM(obj2)].name,
+        obj2->in_obj ? obj2->in_obj->short_description : "None",
+        obj2->carried_by ? GET_NAME(obj2->carried_by) : "Nobody",
+        obj2->worn_by ? GET_NAME(obj2->worn_by) : "Nobody");
+}
+
+void check_unique_id(struct obj_data *obj)
+{
+  struct obj_unique_hash_elem *elem;
+  if (obj->unique_id == -1)
+    return;
+  elem = obj_unique_hash_pools[obj->unique_id % NUM_OBJ_UNIQUE_POOLS];
+  while (elem) {
+    if (elem->obj == obj) {
+      log("SYSERR: check_unique_id checking for existing object?!");
+    }
+    if (elem->generation == obj->generation && elem->unique_id == obj->unique_id)
+      log_dupe_objects(elem->obj, obj);
+    elem = elem->next_e;
+  }
+}
+
+char *sprintuniques(int low, int high)
+{
+  int i, count = 0, remain, header;
+  struct obj_unique_hash_elem *q;
+  char *str, *ptr;
+  remain = 40;
+  for (i = 0; i < NUM_OBJ_UNIQUE_POOLS; i++) {
+    q = obj_unique_hash_pools[i];
+    remain += 40;
+    while (q) {
+      count++;
+      remain += 80 + (q->obj->short_description ? strlen(q->obj->short_description) : 20);
+      q = q->next_e;
+    }
+  }
+  if (count < 1) {
+    return strdup("No objects in unique hash.\r\n");
+  }
+  CREATE(str, char, remain + 1);
+  ptr = str;
+  count = snprintf(ptr, remain, "Unique object hashes (vnums %d - %d)\r\n",
+                low, high);
+  ptr += count;
+  remain -= count;
+  for (i = 0; i < NUM_OBJ_UNIQUE_POOLS; i++) {
+    header = 0;
+    q = obj_unique_hash_pools[i];
+    while (q) {
+      if (GET_OBJ_VNUM(q->obj) >= low && GET_OBJ_VNUM(q->obj) <= high) {
+        if (!header) {
+          header = 1;
+          count = snprintf(ptr, remain, "|-Hash %d\r\n", i);
+          ptr += count;
+          remain -= count;
+        }
+        count = snprintf(ptr, remain, "| |- [@g%6d@n] - [@y%10ld:%-19lld@n] - %s\r\n",
+                GET_OBJ_VNUM(q->obj), q->generation, q->unique_id,
+                q->obj->short_description ? q->obj->short_description : "<Unknown>");
+        ptr += count;
+        remain -= count;
+      }
+      q = q->next_e;
+    }
+  }
+  return str;
+}
+
+
 /* create an object, and add it to the object list */
 struct obj_data *create_obj(void)
 {
@@ -2284,6 +2441,10 @@ struct obj_data *create_obj(void)
   object_list = obj;
 
   GET_ID(obj) = max_obj_id++;
+
+  obj->generation = time(0);
+  obj->unique_id = -1;
+
   assign_triggers(obj, OBJ_TRIGGER);
   /* find_obj helper */
   add_to_lookup_table(GET_ID(obj), (void *)obj);
@@ -2315,6 +2476,9 @@ struct obj_data *read_object(obj_vnum nr
   /* find_obj helper */
   add_to_lookup_table(GET_ID(obj), (void *)obj);
 
+  obj->generation = time(0);
+  obj->unique_id = -1;
+
   copy_proto_script(&obj_proto[i], obj, OBJ_TRIGGER);
   assign_triggers(obj, OBJ_TRIGGER);
   return (obj);
@@ -2458,6 +2622,7 @@ void reset_zone(zone_rnum zone)
            (rand_number(1, 100) >= ZCMD.arg4)) {
 	if (ZCMD.arg3 != NOWHERE) {
 	  obj = read_object(ZCMD.arg1, REAL);
+          add_unique_id(obj);
 	  obj_to_room(obj, ZCMD.arg3);
 	  last_cmd = 1;
           load_otrigger(obj);
@@ -2465,6 +2630,7 @@ void reset_zone(zone_rnum zone)
 	  obj_load = TRUE;
 	} else {
 	  obj = read_object(ZCMD.arg1, REAL);
+          add_unique_id(obj);
 	  IN_ROOM(obj) = NOWHERE;
 	  last_cmd = 1;
           tobj = obj;
@@ -2484,6 +2650,7 @@ void reset_zone(zone_rnum zone)
 	  ZCMD.command = '*';
 	  break;
 	}
+        add_unique_id(obj);
 	obj_to_obj(obj, obj_to);
 	last_cmd = 1;
         load_otrigger(obj);
@@ -2502,6 +2669,7 @@ void reset_zone(zone_rnum zone)
       if ((obj_index[ZCMD.arg1].number < ZCMD.arg2) &&
           mob_load && (rand_number(1, 100) >= ZCMD.arg4)) {
 	obj = read_object(ZCMD.arg1, REAL);
+        add_unique_id(obj);
 	obj_to_char(obj, mob);
 	last_cmd = 1;
         load_otrigger(obj);
@@ -2523,6 +2691,7 @@ void reset_zone(zone_rnum zone)
 	  ZONE_ERROR("invalid equipment pos number");
 	} else {
 	  obj = read_object(ZCMD.arg1, REAL);
+          add_unique_id(obj);
           IN_ROOM(obj) = IN_ROOM(mob);
           load_otrigger(obj);
           if (wear_otrigger(obj, mob, ZCMD.arg3)) {
@@ -2820,6 +2989,7 @@ void free_char(struct char_data *ch)
 /* release memory allocated for an obj struct */
 void free_obj(struct obj_data *obj)
 {
+  remove_unique_id(obj);
   if (GET_OBJ_RNUM(obj) == NOWHERE) {
     free_object_strings(obj);
     /* free script proto list */
@@ -3359,6 +3529,9 @@ int my_obj_save_to_disk(FILE *fp, struct
     GET_OBJ_WEAR(obj)[1], GET_OBJ_WEAR(obj)[2], GET_OBJ_WEAR(obj)[3], 
     GET_OBJ_WEIGHT(obj), GET_OBJ_COST(obj), GET_OBJ_RENT(obj));
 
+  fprintf(fp, "G\n%ld\n", obj->generation);
+  fprintf(fp, "U\n%lld\n", obj->unique_id);
+
   /* Do we have affects? */
   for (counter2 = 0; counter2 < MAX_OBJ_AFFECT; counter2++)
     if (obj->affected[counter2].modifier)
@@ -3517,6 +3690,16 @@ int my_obj_save_to_disk(FILE *fp, struct
                j++;
                get_line(fl,line);
                break;
+             case 'G':
+               get_line(fl, line);
+               sscanf(line, "%ld", &temp->generation);
+               get_line(fl, line);
+               break;
+             case 'U':
+               get_line(fl, line);
+               sscanf(line, "%lld", &temp->unique_id);
+               get_line(fl, line);
+               break;
              case '$':
              case '#':
                zwei=1;
@@ -3531,6 +3714,8 @@ int my_obj_save_to_disk(FILE *fp, struct
        IN_ROOM(ch)=1;
        if(temp != NULL) {
          obj_to_char(temp,ch);
+         check_unique_id(temp);
+         add_unique_id(temp);
        }
      }
    }  /* exit our while loop */
@@ -3556,8 +3741,11 @@ extern int track_through_doors;
 extern int immort_level_ok;
 extern int show_mob_stacking;
 extern int show_obj_stacking;
-extern int display_closed_doors;
+extern int disp_closed_doors;
 extern int reroll_status;
+extern int enable_compression;
+extern int enable_languages;
+extern int all_items_unique;
 extern int mob_fighting;
 extern int free_rent;
 extern int max_obj_save;
@@ -3623,8 +3811,11 @@ void load_default_config( void )
   CONFIG_STACK_MOBS		= show_mob_stacking;
   CONFIG_STACK_OBJS		= show_obj_stacking;
   CONFIG_MOB_FIGHTING           = mob_fighting;  
-  CONFIG_DISP_CLOSED_DOORS      = display_closed_doors;
+  CONFIG_DISP_CLOSED_DOORS      = disp_closed_doors;
   CONFIG_REROLL_PLAYER_CREATION       = reroll_status;
+  CONFIG_ENABLE_COMPRESSION	= enable_compression;
+  CONFIG_ENABLE_LANGUAGES	= enable_languages;
+  CONFIG_ALL_ITEMS_UNIQUE	= all_items_unique;
   /****************************************************************************/
   /** Rent / crashsave options.                                              **/
   /****************************************************************************/
@@ -3713,15 +3904,26 @@ void load_config( void )
           CONFIG_AUTOSAVE_TIME = num;
         else if (!str_cmp(tag, "auto_save_olc"))
           CONFIG_OLC_SAVE = num;
+        else if (!str_cmp(tag, "all_items_unique"))
+          CONFIG_ALL_ITEMS_UNIQUE = num;
         break;
         
       case 'c':
         if (!str_cmp(tag, "crash_file_timeout"))
           CONFIG_CRASH_TIMEOUT = num;
+	else if (!str_cmp(tag, "compression")) {
+	  CONFIG_ENABLE_COMPRESSION = num;
+#ifndef HAVE_ZLIB_H
+	  if (CONFIG_ENABLE_COMPRESSION) {
+            CONFIG_ENABLE_COMPRESSION = 0;
+            log("config tried to enable compression but it is not supported on this system");
+          }
+#endif /* !HAVE_ZLIB_H */
+        }
         break;
         
       case 'd':
-        if (!str_cmp(tag, "display_closed_doors"))
+        if (!str_cmp(tag, "disp_closed_doors"))
           CONFIG_DISP_CLOSED_DOORS = num;
         else if (!str_cmp(tag, "dts_are_dumps"))
           CONFIG_DTS_ARE_DUMPS = num;
@@ -3758,6 +3960,11 @@ void load_config( void )
           CONFIG_DFLT_PORT = num;
         break;
         
+      case 'e':
+        if (!str_cmp(tag, "enable_languages"))
+          CONFIG_ENABLE_LANGUAGES = num;
+        break;
+
       case 'f':
         if (!str_cmp(tag, "free_rent"))
           CONFIG_FREE_RENT = num;
diff -BbuprN -x '*.o' suntzu/src/db.h yoda/src/db.h
--- suntzu/src/db.h	2004-06-22 22:33:31.000000000 -0500
+++ yoda/src/db.h	2004-09-27 20:51:13.000000000 -0500
@@ -151,6 +151,7 @@ void	reset_char(struct char_data *ch);
 void	free_char(struct char_data *ch);
 void	save_player_index(void);
 long  get_ptable_by_name(const char *name);
+void    current_update(void);
 
 struct obj_data *create_obj(void);
 void	clear_object(struct obj_data *obj);
@@ -158,6 +159,9 @@ void	free_obj(struct obj_data *obj);
 struct obj_data *read_object(obj_vnum nr, int type);
 int	vnum_object(char *searchname, struct char_data *ch);
 int my_obj_save_to_disk(FILE *fp, struct obj_data *obj, int locate);
+void add_unique_id(struct obj_data *obj);
+void check_unique_id(struct obj_data *obj);
+char *sprintuniques(int low, int high);
 
 #define REAL 0
 #define VIRTUAL 1
diff -BbuprN -x '*.o' suntzu/src/dg_mobcmd.c yoda/src/dg_mobcmd.c
--- suntzu/src/dg_mobcmd.c	2004-02-24 19:02:11.000000000 -0600
+++ yoda/src/dg_mobcmd.c	2004-09-06 19:24:12.000000000 -0500
@@ -394,6 +394,7 @@ ACMD(do_mload)
         }
       /* special handling to make objects able to load on a person/in a container/worn etc. */
       if (!target || !*target) {
+        add_unique_id(object);
         if (CAN_WEAR(object, ITEM_WEAR_TAKE)) {
             obj_to_char(object, ch);
         } else {
@@ -424,6 +425,7 @@ ACMD(do_mload)
       	return;
       }
       /* neither char nor container found - just dump it in room */
+      add_unique_id(object);
       obj_to_room(object, IN_ROOM(ch)); 
       load_otrigger(object);
       return;
diff -BbuprN -x '*.o' suntzu/src/dg_objcmd.c yoda/src/dg_objcmd.c
--- suntzu/src/dg_objcmd.c	2004-02-24 19:02:11.000000000 -0600
+++ yoda/src/dg_objcmd.c	2004-09-06 19:23:00.000000000 -0500
@@ -319,6 +319,8 @@ OCMD(do_otransform)
       obj_log(obj, "otransform: bad object vnum");
       return;
     }
+    /* We don't add a unique ID here because we want to keep the old one */
+    /* add_unique_id(o); */
 
     if (obj->worn_by) {
       pos = obj->worn_on;
@@ -497,6 +499,7 @@ OCMD(do_dgoload)
 
       /* special handling to make objects able to load on a person/in a container/worn etc. */
       if (!target || !*target) {
+        add_unique_id(object);
         obj_to_room(object, room);
         load_otrigger(object);
         return;
@@ -523,6 +526,7 @@ OCMD(do_dgoload)
       	return;
       }
       /* neither char nor container found - just dump it in room */
+        add_unique_id(object);
         obj_to_room(object, room);
         load_otrigger(object);
       return;
@@ -698,6 +702,7 @@ OCMD(do_oat) 
   if (!object)
     return;
   
+  add_unique_id(object);
   obj_to_room(object, rnum);
   obj_command_interpreter(object, arg2);
   
diff -BbuprN -x '*.o' suntzu/src/dg_wldcmd.c yoda/src/dg_wldcmd.c
--- suntzu/src/dg_wldcmd.c	2004-02-24 19:02:11.000000000 -0600
+++ yoda/src/dg_wldcmd.c	2004-09-06 19:23:38.000000000 -0500
@@ -478,6 +478,7 @@ WCMD(do_wload)
         }
       /* special handling to make objects able to load on a person/in a container/worn etc. */
       if (!target || !*target) {
+        add_unique_id(object);
         obj_to_room(object, real_room(room->number)); 
         load_otrigger(object);
         return;
@@ -505,6 +506,7 @@ WCMD(do_wload)
       	return;
       }
       /* neither char nor container found - just dump it in room */
+        add_unique_id(object);
         obj_to_room(object, real_room(room->number)); 
         load_otrigger(object);
       return;
diff -BbuprN -x '*.o' suntzu/src/fight.c yoda/src/fight.c
--- suntzu/src/fight.c	2004-05-27 20:43:37.000000000 -0500
+++ yoda/src/fight.c	2004-09-11 15:07:08.000000000 -0500
@@ -1140,6 +1140,8 @@ void hit(struct char_data *ch, struct ch
 void perform_violence(void)
 {
   struct char_data *ch;
+  struct follow_type *k;
+  ACMD(do_assist);
 
   for (ch = combat_list; ch; ch = next_combat_list) {
     next_combat_list = ch->next_fighting;
@@ -1171,6 +1173,19 @@ void perform_violence(void)
       continue;
     }
 
+    for (k = ch->followers; k; k=k->next) {
+      /* should followers auto-assist master? */
+      if (!FIGHTING(k->follower) && PRF_FLAGGED(k->follower, PRF_AUTOASSIST) &&
+        (k->follower->in_room == ch->in_room))
+        do_assist(k->follower, GET_NAME(ch), 0, 0);
+    }
+
+    /* should master auto-assist followers?  */
+    if (ch->master && PRF_FLAGGED(ch->master, PRF_AUTOASSIST) && 
+      FIGHTING(ch) && !FIGHTING(ch->master) && 
+      (ch->master->in_room == ch->in_room)) 
+      do_assist(ch->master, GET_NAME(ch), 0, 0); 
+
     hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
     if (MOB_FLAGGED(ch, MOB_SPEC) && GET_MOB_SPEC(ch) && !MOB_FLAGGED(ch, MOB_NOTDEADYET)) {
       char actbuf[MAX_INPUT_LENGTH] = "";
diff -BbuprN -x '*.o' suntzu/src/guild.c yoda/src/guild.c
--- suntzu/src/guild.c	2004-03-30 19:50:24.000000000 -0600
+++ yoda/src/guild.c	2004-09-11 17:53:30.000000000 -0500
@@ -142,6 +142,7 @@ void list_skills_perct(struct char_data 
 	}
 
 
+        if (CONFIG_ENABLE_LANGUAGES) {
   	len += snprintf(buf2 + len, sizeof(buf2) - len,
 						 "\r\nand the following languages:\r\n");
 	for (sortpos = MIN_LANGUAGES ; sortpos <= MAX_LANGUAGES ; sortpos++) {
@@ -155,6 +156,7 @@ void list_skills_perct(struct char_data 
 			len += nlen;
 		}
 	}
+        }
 
   if (len >= sizeof(buf2))
     strcpy(buf2 + sizeof(buf2) - strlen(overflow) - 1, overflow); /* strcpy: OK */
@@ -220,6 +222,7 @@ void list_skills(struct char_data *ch)
 		}
 	}
 
+        if (CONFIG_ENABLE_LANGUAGES) {
   	len += snprintf(buf2 + len, sizeof(buf2) - len,
 						 "\r\nand the following languages:\r\n");
 	for (sortpos = MIN_LANGUAGES ; sortpos <= MAX_LANGUAGES ; sortpos++) {
@@ -233,6 +236,7 @@ void list_skills(struct char_data *ch)
 			len += nlen;
 		}
 	}
+        }
 
   if (len >= sizeof(buf2))
     strcpy(buf2 + sizeof(buf2) - strlen(overflow) - 1, overflow); /* strcpy: OK */
@@ -430,6 +434,7 @@ void what_does_guild_know(int guild_nr, 
     }
   }
 
+  if (CONFIG_ENABLE_LANGUAGES) {
   len += snprintf(buf2 + len, sizeof(buf2) - len, "\r\nand the following languages:\r\n");
 
   for (sortpos = MIN_LANGUAGES ; sortpos <= MAX_LANGUAGES ; sortpos++) {
@@ -445,6 +450,7 @@ void what_does_guild_know(int guild_nr, 
       }
     }
   }
+  }
   if (len >= sizeof(buf2))
     strcpy(buf2 + sizeof(buf2) - strlen(overflow) - 1, overflow); /* strcpy: OK */
 
diff -BbuprN -x '*.o' suntzu/src/interpreter.c yoda/src/interpreter.c
--- suntzu/src/interpreter.c	2004-08-21 20:30:19.000000000 -0500
+++ yoda/src/interpreter.c	2004-09-28 20:30:39.000000000 -0500
@@ -50,6 +50,7 @@ extern int xap_objs;
 extern char *GREETANSI;
 extern char *GREETINGS;
 extern char *ANSIQUESTION;
+extern const char compress_offer[];
 
 /* external functions */
 void echo_on(struct descriptor_data *d);
@@ -147,6 +148,7 @@ ACMD(do_help);
 ACMD(do_hide);
 ACMD(do_hit);
 ACMD(do_house);
+ACMD(do_iedit);
 ACMD(do_insult);
 ACMD(do_inventory);
 ACMD(do_invis);
@@ -230,6 +232,7 @@ ACMD(do_wield);
 ACMD(do_wimpy);
 ACMD(do_wizlock);
 ACMD(do_wiznet);
+ACMD(do_wizupdate);
 ACMD(do_wizutil);
 ACMD(do_write);
 ACMD(do_zreset);
@@ -308,6 +311,7 @@ cpp_extern const struct command_info cmd
   { "astat"    , "ast"	, POS_DEAD    , do_astat    , LVL_GOD, 0 },
   { "ask"      , "ask"	, POS_RESTING , do_spec_comm, 0, SCMD_ASK },
   { "auction"  , "auc"	, POS_SLEEPING, do_gen_comm , 0, SCMD_AUCTION },
+  { "autoassist", "autoass"     , POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOASSIST },
   { "autoexit" , "autoex"	, POS_DEAD    , do_autoexit , 0, 0 },
   { "autogold" , "autogo"	, POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOGOLD },
   { "autoloot" , "autolo"	, POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOLOOT },
@@ -407,6 +411,7 @@ cpp_extern const struct command_info cmd
   { "info"     , "info"	, POS_SLEEPING, do_gen_ps   , 0, SCMD_INFO },
   { "insult"   , "insult"	, POS_RESTING , do_insult   , 0, 0 },
   { "inventory", "inv"	, POS_DEAD    , do_inventory, 0, 0 },
+  { "iedit"    , "ie"   , POS_DEAD    , do_iedit    , LVL_GRGOD, 0 },
   { "invis"    , "invi"	, POS_DEAD    , do_invis    , LVL_IMMORT, 0 },
 
   { "junk"     , "junk"	, POS_RESTING , do_drop     , 0, SCMD_JUNK },
@@ -436,6 +441,7 @@ cpp_extern const struct command_info cmd
 
   { "news"     , "news"	, POS_SLEEPING, do_gen_ps   , 0, SCMD_NEWS },
   { "noauction", "noauction"	, POS_DEAD    , do_gen_tog  , 0, SCMD_NOAUCTION },
+  { "nocompress","nocompress"	, POS_DEAD    , do_gen_tog  , 0, SCMD_NOCOMPRESS },
   { "nogossip" , "nogossip"	, POS_DEAD    , do_gen_tog  , 0, SCMD_NOGOSSIP },
   { "nograts"  , "nograts"	, POS_DEAD    , do_gen_tog  , 0, SCMD_NOGRATZ },
   { "nohassle" , "nohassle"	, POS_DEAD    , do_gen_tog  , LVL_IMMORT, SCMD_NOHASSLE },
@@ -576,6 +582,7 @@ cpp_extern const struct command_info cmd
   { "wizhelp"  , "wizhelp"	, POS_SLEEPING, do_commands , LVL_IMMORT, SCMD_WIZHELP },
   { "wizlist"  , "wizlist"	, POS_DEAD    , do_gen_ps   , 0, SCMD_WIZLIST },
   { "wizlock"  , "wizlock"	, POS_DEAD    , do_wizlock  , LVL_IMPL, 0 },
+  { "wizupdate", "wizupdate"    , POS_DEAD    , do_wizupdate, LVL_GRGOD, 0 },
   { "write"    , "write"	, POS_STANDING, do_write    , 1, 0 },
 
 
@@ -1191,6 +1198,7 @@ void half_chop(char *string, char *arg1,
 
   temp = any_one_arg(string, arg1);
   skip_spaces(&temp);
+  if (arg2 != temp)
   strcpy(arg2, temp);	/* strcpy: OK (documentation) */
 }
 
@@ -1409,7 +1417,7 @@ int perform_dupe_check(struct descriptor
 int enter_player_game (struct descriptor_data *d)
 {
     int load_result;
-    sh_int load_room;
+    IDXTYPE load_room;
     long max_id=1;
     
       reset_char(d->character);
@@ -1470,6 +1478,7 @@ void nanny(struct descriptor_data *d, ch
     void (*func)(struct descriptor_data *, char*);
   } olc_functions[] = {
     { CON_OEDIT, oedit_parse },
+    { CON_IEDIT, oedit_parse },
     { CON_ZEDIT, zedit_parse },
     { CON_SEDIT, sedit_parse },
     { CON_MEDIT, medit_parse },
@@ -1504,25 +1513,6 @@ void nanny(struct descriptor_data *d, ch
 
   /* Not in OLC. */
   switch (STATE(d)) {
-      case CON_QANSI:
-     if (!*arg || LOWER(*arg) == 'y') {
-       SET_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_1);
-       SET_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_2);
-       write_to_output(d, "@cC@bo@yl@mo@rr@n is on.\r\n");
-      write_to_output(d, GREETANSI);
-     } else if (LOWER(*arg) == 'n') {
-       REMOVE_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_1);
-       REMOVE_BIT_AR(PRF_FLAGS(d->character), PRF_COLOR_2);
-       write_to_output(d, "Color is off.\r\n");
-       write_to_output(d, GREETINGS);
-     } else {
-       write_to_output(d, "That is not a proper response.\r\n");
-       write_to_output(d, ANSIQUESTION);
-       return;
-     }
-      write_to_output(d, "\r\n\r\n@CBy what name do you wish to be known? @n");
-      STATE(d) = CON_GET_NAME;
-     break;
   case CON_GET_NAME:		/* wait for input of name */
     if (d->character == NULL) {
       CREATE(d->character, struct char_data, 1);
@@ -1928,6 +1918,12 @@ void nanny(struct descriptor_data *d, ch
     break;
 
   case CON_RMOTD:		/* read CR after printing motd   */
+#ifdef HAVE_ZLIB_H
+    if (CONFIG_ENABLE_COMPRESSION && !PRF_FLAGGED(d->character, PRF_NOCOMPRESS)) {
+      d->comp->state = 1;	/* waiting for response to offer */
+      write_to_output(d, "%s", compress_offer);
+    }
+#endif /* HAVE_ZLIB_H */
     write_to_output(d, "%s", CONFIG_MENU);
     STATE(d) = CON_MENU;
     break;
diff -BbuprN -x '*.o' suntzu/src/interpreter.h yoda/src/interpreter.h
--- suntzu/src/interpreter.h	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/interpreter.h	2004-09-10 19:21:27.000000000 -0500
@@ -141,6 +141,8 @@ struct alias_data {
 #define SCMD_AUTOSPLIT  23
 #define SCMD_AUTOSAC    24
 #define SCMD_VIEWORDER  25
+#define SCMD_NOCOMPRESS 26
+#define SCMD_AUTOASSIST 27
 
 /* do_wizutil */
 #define SCMD_REROLL	0
diff -BbuprN -x '*.o' suntzu/src/limits.c yoda/src/limits.c
--- suntzu/src/limits.c	2004-07-10 16:49:57.000000000 -0500
+++ yoda/src/limits.c	2004-09-27 22:08:44.000000000 -0500
@@ -536,3 +536,67 @@ void point_update(void)
     }
   }
 }
+
+void timed_dt(struct char_data *ch)
+{ 
+  struct char_data *vict;
+  room_rnum rrnum;
+  
+  if (ch == NULL) {
+  /* BY -WELCOR
+    first make sure all rooms in the world have thier 'timed'
+    value decreased if its not -1.
+    */
+  
+  for (rrnum = 0; rrnum < top_of_world; rrnum++)
+    world[rrnum].timed -= (world[rrnum].timed != -1);
+  
+  for (vict = character_list; vict ;vict = vict->next){
+    if (IS_NPC(vict))
+      continue;   
+
+    if (IN_ROOM(vict) == NOWHERE)
+      continue;
+    
+    if(!ROOM_FLAGGED(IN_ROOM(vict), ROOM_TIMED_DT))
+      continue;
+    
+    timed_dt(vict);
+   }
+  return;
+  }
+  
+  /*Called with a non-null ch. let's check the room. */
+  
+  /*if the room wasn't triggered (i.e timed wasn't set), just set it
+    and return again.
+  */
+  
+  if (world[IN_ROOM(ch)].timed < 0) {
+    world[IN_ROOM(ch)].timed = rand_number(2, 5);
+    return;
+  }
+  
+  /* We know ch is in a dt room with timed >= 0 - see if its the end.
+  *
+  */
+  if (world[IN_ROOM(ch)].timed == 0) {
+    for (vict = world[IN_ROOM(ch)].people; vict; vict = vict->next_in_room)
+     {
+       if (IS_NPC(vict))
+         continue;
+       if (GET_LEVEL(vict) >= LVL_IMMORT)
+         continue;
+
+    /* Skip those alread dead people */
+    /* extract char() jest sets the bit*/
+    if (PLR_FLAGGED(vict, PLR_NOTDEADYET))
+      continue;
+             
+       log_death_trap(vict);
+       death_cry(vict);
+       extract_char(vict);
+    }
+  }
+}
+
diff -BbuprN -x '*.o' suntzu/src/magic.c yoda/src/magic.c
--- suntzu/src/magic.c	2004-02-01 12:49:23.000000000 -0600
+++ yoda/src/magic.c	2004-09-06 19:17:12.000000000 -0500
@@ -981,6 +981,7 @@ void mag_creations(int level, struct cha
 	    spellnum, z);
     return;
   }
+  add_unique_id(tobj);
   obj_to_char(tobj, ch);
   act("$n creates $p.", FALSE, ch, tobj, 0, TO_ROOM);
   act("You create $p.", FALSE, ch, tobj, 0, TO_CHAR);
diff -BbuprN -x '*.o' suntzu/src/Makefile yoda/src/Makefile
--- suntzu/src/Makefile	2004-07-18 12:42:55.000000000 -0500
+++ yoda/src/Makefile	2004-09-06 16:20:30.000000000 -0500
@@ -22,7 +22,7 @@ BINDIR = ../bin
 
 CFLAGS = -g -O2 $(MYFLAGS) $(PROFILE)
 
-LIBS =  -lcrypt 
+LIBS =  -lcrypt  -lz 
 
 OBJFILES = act.comm.o act.informative.o act.item.o act.movement.o \
 	act.offensive.o act.other.o act.social.o act.wizard.o alias.o ban.o \
diff -BbuprN -x '*.o' suntzu/src/Makefile.in yoda/src/Makefile.in
--- suntzu/src/Makefile.in	2004-06-22 22:33:32.000000000 -0500
+++ yoda/src/Makefile.in	2004-09-06 16:18:41.000000000 -0500
@@ -21,7 +21,7 @@ BINDIR = ../bin
 
 CFLAGS = @CFLAGS@ $(MYFLAGS) $(PROFILE)
 
-LIBS = @LIBS@ @CRYPTLIB@ @NETLIB@
+LIBS = @LIBS@ @CRYPTLIB@ @NETLIB@ @ZLIB@
 
 OBJFILES = act.comm.o act.informative.o act.item.o act.movement.o \
 	act.offensive.o act.other.o act.social.o act.wizard.o alias.o ban.o \
diff -BbuprN -x '*.o' suntzu/src/modify.c yoda/src/modify.c
--- suntzu/src/modify.c	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/modify.c	2004-09-07 18:30:01.000000000 -0500
@@ -180,6 +180,7 @@ void string_add(struct descriptor_data *
         case CON_REDIT:
         case CON_MEDIT:
         case CON_OEDIT:
+        case CON_IEDIT:
         case CON_EXDESC:
         case CON_TRIGEDIT:
           free(*d->str);
diff -BbuprN -x '*.o' suntzu/src/oasis.h yoda/src/oasis.h
--- suntzu/src/oasis.h	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/oasis.h	2004-09-27 22:08:44.000000000 -0500
@@ -31,7 +31,7 @@
  * Macros, defines, structs and globals for the OLC suite.  You will need
  * to adjust these numbers if you ever add more.
  */
-#define NUM_ROOM_FLAGS 		18
+#define NUM_ROOM_FLAGS 		20
 #define NUM_ROOM_SECTORS	10
 
 #define NUM_MOB_FLAGS		19
@@ -133,6 +133,7 @@ struct oasis_olc_data {
   struct char_data *mob;         /* used for 'medit'         */
   struct room_data *room;        /* used for 'redit'         */
   struct obj_data *obj;          /* used for 'oedit'         */
+  struct obj_data *iobj;         /* used for 'iedit'         */
   struct zone_data *zone;        /* used for 'zedit'         */
   struct shop_data *shop;        /* used for 'sedit'         */
   struct config_data *config;    /* used for 'cedit'         */
@@ -169,6 +170,7 @@ extern const char *nrm, *grn, *cyn, *yel
 #define OLC_STORAGE(d)  (OLC(d)->storage)	/* char pointer.	*/
 #define OLC_ROOM(d) 	(OLC(d)->room)		/* Room structure.	*/
 #define OLC_OBJ(d) 	(OLC(d)->obj)		/* Object structure.	*/
+#define OLC_IOBJ(d) 	(OLC(d)->iobj)		/* Individual object structure.	*/
 #define OLC_ZONE(d)     (OLC(d)->zone)          /* Zone structure.	*/
 #define OLC_MOB(d)	(OLC(d)->mob)		/* Mob structure.	*/
 #define OLC_SHOP(d) 	(OLC(d)->shop)		/* Shop structure.	*/
@@ -511,6 +513,9 @@ void oedit_disp_perm_menu(struct descrip
 void oedit_string_cleanup(struct descriptor_data *d, int terminator);
 ACMD(do_oasis_oedit);
 
+void iedit_setup_existing(struct descriptor_data *d, struct obj_data *obj);
+void iedit_parse(struct descriptor_data *d, char *arg);
+
 void redit_string_cleanup(struct descriptor_data *d, int terminator);
 void redit_setup_new(struct descriptor_data *d);
 void redit_setup_existing(struct descriptor_data *d, int real_num);
diff -BbuprN -x '*.o' suntzu/src/objsave.c yoda/src/objsave.c
--- suntzu/src/objsave.c	2004-08-22 10:42:30.000000000 -0500
+++ yoda/src/objsave.c	2004-09-29 21:12:18.000000000 -0500
@@ -257,13 +257,13 @@ int Crash_delete_file(char *name)
   char filename[50];
   FILE *fl;
 
-   if(!xap_objs) {
-     if (!get_filename(filename, sizeof(filename), CRASH_FILE, name))
-       return (0);
-   } else {
-     if(!get_filename(filename, sizeof(filename), NEW_OBJ_FILES, name))
+   //if (!xap_objs) {
+     //if (!get_filename(filename, sizeof(filename), CRASH_FILE, name))
+       //return (0);
+   //} else {
+     if (!get_filename(filename, sizeof(filename), NEW_OBJ_FILES, name))
        return (0);
-   }
+   //}
 
   if (!(fl = fopen(filename, "rb"))) {
     if (errno != ENOENT)	/* if it fails but NOT because of no file */
@@ -283,42 +283,43 @@ int Crash_delete_file(char *name)
 int Crash_delete_crashfile(struct char_data *ch)
 {
   char filename[MAX_INPUT_LENGTH];
-  struct rent_info rent;
+  //struct rent_info rent;
   FILE *fl;
   int rentcode, timed, netcost, gold, account, nitems;
   char line[MAX_INPUT_LENGTH];
 
-   if(!xap_objs) {
-     if (!get_filename(filename, sizeof(filename), CRASH_FILE, GET_NAME(ch)))
-       return (0);
-   } else {
-     if(!get_filename(filename, sizeof(filename), NEW_OBJ_FILES, GET_NAME(ch)))
+   //if (!xap_objs) {
+     //if (!get_filename(filename, sizeof(filename), CRASH_FILE, GET_NAME(ch)))
+       //return (0);
+   //} else {
+     if (!get_filename(filename, sizeof(filename), NEW_OBJ_FILES, GET_NAME(ch)))
        return (0);
-   }
+   //}
+
   if (!(fl = fopen(filename, "rb"))) {
     if (errno != ENOENT)	/* if it fails, NOT because of no file */
       log("SYSERR: checking for crash file %s (3): %s", filename, strerror(errno));
     return (0);
   }
-   if(!xap_objs) {
-     if (!feof(fl))
-       fread(&rent, sizeof(struct rent_info), 1, fl);
-     fclose(fl);
-   } else {
+  //if (!xap_objs) {
+    //if (!feof(fl))
+      //fread(&rent, sizeof(struct rent_info), 1, fl);
+    //fclose(fl);
+  //} else {
      if (!feof(fl))
        get_line(fl,line);
-     sscanf(line,"%d %d %d %d %d %d",&rentcode,&timed,&netcost,&gold,
-         &account,&nitems);
+    sscanf(line,"%d %d %d %d %d %d", &rentcode, &timed, &netcost, &gold,
+      &account, &nitems);
      fclose(fl);
-   }
+  //}
 
-   if(!xap_objs) {
-     if (rent.rentcode == RENT_CRASH) 
-       Crash_delete_file(GET_NAME(ch));
-   } else {
+   //if (!xap_objs) {
+     //if (rent.rentcode == RENT_CRASH) 
+       //Crash_delete_file(GET_NAME(ch));
+   //} else {
      if (rentcode == RENT_CRASH)
        Crash_delete_file(GET_NAME(ch));
-   }
+   //}
 
   return (1);
 }
@@ -480,7 +481,7 @@ void Crash_listrent(struct char_data *ch
          return;
        }
        if (!feof(fl))
-         if (real_object(object.item_number) > -1) {
+         if (real_object(object.item_number) != NOTHING) {
            obj = read_object(object.item_number, VIRTUAL);
 
 #if USE_AUTOEQ
@@ -505,7 +506,7 @@ void Crash_listrent(struct char_data *ch
        if(*line == '#') { /* swell - its an item */
          sscanf(line,"#%d",&nr);
          if(nr != NOTHING) {  /* then we can dispense with it easily */
-           if (real_object(nr) > -1) {
+           if (real_object(nr) != NOTHING) {
              obj=read_object(nr,VIRTUAL);
              if (len + 255 < sizeof(buf)) {
                len += snprintf(buf + len, sizeof(buf) - len, "[%5d] (%5dau) %-20s\r\n",
@@ -590,7 +591,7 @@ int Crash_load(struct char_data *ch)
   struct obj_data *obj, *obj2, *cont_row[MAX_BAG_ROWS];
   int location;
 
-  if(xap_objs) {
+  if (xap_objs) {
     return (Crash_load_xapobjs(ch));
   }
 
@@ -796,7 +797,7 @@ int Crash_save(struct obj_data *obj, FIL
       GET_OBJ_WEIGHT(tmp) -= GET_OBJ_WEIGHT(obj);
 
     if (!result)
-      return (0);
+      return (FALSE);
   }
   return (TRUE);
 }
@@ -845,15 +846,20 @@ int Crash_is_unrentable(struct obj_data 
 {
   if (!obj)
     return (0);
-
+#if CIRCLE_UNSIGNED_INDEX
+  if (OBJ_FLAGGED(obj, ITEM_NORENT) || GET_OBJ_RENT(obj) < 0 ||
+       GET_OBJ_RNUM(obj) == NOTHING || 
+          (GET_OBJ_RNUM(obj) == NOTHING &&
+          !IS_SET_AR(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE))) {
+    return (1);
+#else
   if (OBJ_FLAGGED(obj, ITEM_NORENT) || GET_OBJ_RENT(obj) < 0 ||
        GET_OBJ_RNUM(obj) <= NOTHING || 
           (GET_OBJ_RNUM(obj) <= NOTHING &&
           !IS_SET_AR(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE))) {
     return (1);
+#endif
    }
-
-
   return (0);
 }
 
@@ -904,28 +910,31 @@ void Crash_crashsave(struct char_data *c
   if (IS_NPC(ch))
     return;
 
-  if(!xap_objs) {
-    if (!get_filename(buf, sizeof(buf), CRASH_FILE, GET_NAME(ch)))
-      return;
-    } else {
+  //if(!xap_objs) {
+    //if (!get_filename(buf, sizeof(buf), CRASH_FILE, GET_NAME(ch)))
+      //return;
+    //} else {
       if (!get_filename(buf, sizeof(buf), NEW_OBJ_FILES, GET_NAME(ch)))
         return;
-   }
+   //}
 
   if (!(fp = fopen(buf, "wb")))
     return;
 
   rent.rentcode = RENT_CRASH;
   rent.time = time(0);
-   if(!xap_objs) {
-     if (!Crash_write_rentcode(ch, fp, &rent)) {
-       fclose(fp);
-       return;
-     }
-   } else {
-     fprintf(fp,"%d %d %d %d %d %d\r\n",rent.rentcode,rent.time,
-     rent.net_cost_per_diem,rent.gold,rent.account,rent.nitems);
-  }
+  rent.gold = GET_GOLD(ch);
+  rent.account = GET_BANK_GOLD(ch);
+
+  //if (!xap_objs) {
+    //if (!Crash_write_rentcode(ch, fp, &rent)) {
+      //fclose(fp);
+      //return;
+    //}
+  //} else {
+    fprintf(fp,"%d %d %d %d %d %d\r\n", rent.rentcode, rent.time,
+    rent.net_cost_per_diem, rent.gold, rent.account, rent.nitems);
+  //}
 
   for (j = 0; j < NUM_WEARS; j++)
     if (GET_EQ(ch, j)) {
@@ -1068,8 +1077,8 @@ void Crash_rentsave(struct char_data *ch
   rent.gold = GET_GOLD(ch);
   rent.account = GET_BANK_GOLD(ch);
 
-  fprintf(fp,"%d %d %d %d %d %d\r\n",rent.rentcode,rent.time,
-    rent.net_cost_per_diem,rent.gold,rent.account,rent.nitems);
+  fprintf(fp,"%d %d %d %d %d %d\r\n",rent.rentcode, rent.time,
+    rent.net_cost_per_diem, rent.gold, rent.account, rent.nitems);
 
   for (j = 0; j < NUM_WEARS; j++)
     if (GET_EQ(ch, j)) {
@@ -1380,7 +1389,7 @@ int Crash_load_xapobjs(struct char_data 
   struct obj_data *obj1;
   struct obj_data *cont_row[MAX_BAG_ROWS];
   struct extra_descr_data *new_descr;
-  int rentcode,timed,netcost,gold,account,nitems;
+  int rentcode, timed, netcost, gold, account, nitems;
 
   if (!get_filename(fname, sizeof(fname), NEW_OBJ_FILES, GET_NAME(ch)))
     return 1;
@@ -1551,7 +1560,16 @@ int Crash_load_xapobjs(struct char_data 
               j++;
               get_line(fl,line);
               break;
-
+            case 'G':
+              get_line(fl, line);
+              sscanf(line, "%ld", &temp->generation);
+              get_line(fl, line);
+              break;
+            case 'U':
+              get_line(fl, line);
+              sscanf(line, "%lld", &temp->unique_id);
+              get_line(fl, line);
+              break;
             case '$':
             case '#':
               zwei=1;
@@ -1564,6 +1582,8 @@ int Crash_load_xapobjs(struct char_data 
       }   /* exit our xap loop */
       if(temp != NULL) {
         num_objs++;
+        check_unique_id(temp);
+        add_unique_id(temp);
         if (GET_OBJ_TYPE(temp) == ITEM_DRINKCON) {
           name_from_drinkcon(temp);
           if (GET_OBJ_VAL(temp, 1) != 0 )
diff -BbuprN -x '*.o' suntzu/src/oedit.c yoda/src/oedit.c
--- suntzu/src/oedit.c	2004-07-25 14:51:04.000000000 -0500
+++ yoda/src/oedit.c	2004-09-20 19:33:19.000000000 -0500
@@ -13,6 +13,7 @@
 #include "spells.h"
 #include "utils.h"
 #include "db.h"
+#include "handler.h"
 #include "boards.h"
 #include "constants.h"
 #include "shop.h"
@@ -41,6 +42,7 @@ extern struct spell_info_type spell_info
 extern struct board_info *bboards;
 extern struct descriptor_data *descriptor_list;
 extern const char *material_names[];
+extern long max_obj_id;
 
 /*------------------------------------------------------------------------*/
 extern zone_rnum real_zone_by_thing(room_vnum vznum);
@@ -889,6 +891,8 @@ void oedit_parse(struct descriptor_data 
   int number, max_val, min_val;
   char *oldtext = NULL;
   struct board_info *tmp;
+  struct obj_data *obj;
+  obj_rnum robj;
 
   switch (OLC_MODE(d)) {
 
@@ -935,11 +939,43 @@ void oedit_parse(struct descriptor_data 
     switch (*arg) {
     case 'q':
     case 'Q':
+      if (STATE(d) != CON_IEDIT) {
       if (OLC_VAL(d)) {	/* Something has been modified. */
 	write_to_output(d, "Do you wish to save this object? : ");
 	OLC_MODE(d) = OEDIT_CONFIRM_SAVESTRING;
       } else
 	cleanup_olc(d, CLEANUP_ALL);
+      } else {
+        send_to_char(d->character, "\r\nCommitting iedit changes.\r\n");
+        obj = OLC_IOBJ(d);
+        *obj = *(OLC_OBJ(d));
+        GET_ID(obj) = max_obj_id++;
+        /* find_obj helper */
+        add_to_lookup_table(GET_ID(obj), (void *)obj);
+        if (GET_OBJ_VNUM(obj) != NOTHING) {
+          /* remove any old scripts */
+          if (SCRIPT(obj)) {
+            extract_script(obj, OBJ_TRIGGER);
+            SCRIPT(obj) = NULL;
+          }
+
+          free_proto_script(obj, OBJ_TRIGGER);
+          robj = real_object(GET_OBJ_VNUM(obj));
+          copy_proto_script(&obj_proto[robj], obj, OBJ_TRIGGER);
+          assign_triggers(obj, OBJ_TRIGGER);
+        }
+        SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE);
+  /* Xap - ought to save the old pointer, free after assignment I suppose */
+        mudlog(CMP, MAX(LVL_BUILDER, GET_INVIS_LEV(d->character)), TRUE,
+               "OLC: %s iedit a unique #%d", GET_NAME(d->character), GET_OBJ_VNUM(obj));
+        if (d->character) {
+          REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
+          STATE(d) = CON_PLAYING;
+          act("$n stops using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
+        }
+        free(d->olc);
+        d->olc = NULL;
+      }
       return;
     case '1':
       write_to_output(d, "Enter namelist : ");
@@ -1042,8 +1078,12 @@ void oedit_parse(struct descriptor_data 
       break;
     case 's':
     case 'S':
+      if (STATE(d) != CON_IEDIT) {
       OLC_SCRIPT_EDIT_MODE(d) = SCRIPT_MAIN_MENU;
       dg_script_menu(d);
+      } else {
+        write_to_output(d, "\r\nScripts cannot be modified on individual objects.\r\nEnter choice : ");
+      }
       return;
     default:
       oedit_disp_menu(d);
@@ -1439,3 +1479,70 @@ void oedit_string_cleanup(struct descrip
     break;
   }
 }
+
+/* this is all iedit stuff */
+void iedit_setup_existing(struct descriptor_data *d, struct obj_data *real_num)
+{
+  struct obj_data *obj;
+
+  OLC_IOBJ(d) = real_num;
+
+  obj = create_obj();
+  copy_object(obj,real_num);
+
+  /* free any assigned scripts */
+  if (SCRIPT(obj))
+    extract_script(obj, OBJ_TRIGGER);
+  SCRIPT(obj) = NULL;
+  /* find_obj helper */
+  remove_from_lookup_table(GET_ID(obj));
+
+  OLC_OBJ(d) = obj;
+  OLC_IOBJ(d) = real_num;
+  OLC_VAL(d) = 0;
+  oedit_disp_menu(d);
+}
+
+ACMD(do_iedit) {
+  struct obj_data *k;
+  int found=0;
+  extern struct room_data *world;
+  char arg[MAX_INPUT_LENGTH];
+
+  one_argument(argument, arg);
+
+  if(!*arg || !*argument) {
+    send_to_char(ch, "You must supply an object name.\r\n");
+  }
+
+  if ((k = get_obj_in_equip_vis(ch, arg, NULL, ch->equipment))) {
+    found=1;
+  } else if ((k = get_obj_in_list_vis(ch, arg, NULL, ch->carrying))) {
+    found=1;
+  } else if ((k = get_obj_in_list_vis(ch, arg, NULL, world[ch->in_room].contents))) {
+    found =1;
+  } else if ((k = get_obj_vis(ch, arg, NULL))) {
+    found=1;
+  }
+
+  if (!found) {
+    send_to_char(ch, "Couldn't find that object. Sorry.\r\n");
+    return;
+  }
+
+                /* set up here */
+  CREATE(OLC(ch->desc), struct oasis_olc_data, 1);
+  SET_BIT_AR(GET_OBJ_EXTRA(k), ITEM_UNIQUE_SAVE);
+
+  SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
+  iedit_setup_existing(ch->desc,k);
+  OLC_VAL(ch->desc) = 0;
+
+  act("$n starts using OLC.", TRUE, ch, 0, 0, TO_ROOM);
+
+  STATE(ch->desc) = CON_IEDIT;
+
+  return;
+}
+
+
diff -BbuprN -x '*.o' suntzu/src/players.c yoda/src/players.c
--- suntzu/src/players.c	2004-08-29 09:39:31.000000000 -0500
+++ yoda/src/players.c	2004-09-06 19:41:45.000000000 -0500
@@ -294,6 +294,7 @@ int load_char(const char *name, struct c
     GET_MAX_MOVE(ch) = PFDEF_MAXMOVE;
     SPEAKING(ch) = PFDEF_SPEAKING;
     GET_OLC_ZONE(ch) = PFDEF_OLC;
+    GET_HOST(ch) = NULL;
 
     while (get_line(fl, line)) {
       tag_argument(line, tag);
@@ -352,7 +353,11 @@ int load_char(const char *name, struct c
              if (!strcmp(tag, "Hit "))  load_HMVS(ch, line, LOAD_HIT);
         else if (!strcmp(tag, "Hite"))  GET_HEIGHT(ch)          = atoi(line);
         else if (!strcmp(tag, "Home"))  GET_HOME(ch)            = atoi(line);
-        else if (!strcmp(tag, "Host"))  GET_HOST(ch)            = strdup(line);
+        else if (!strcmp(tag, "Host")) {
+          if (GET_HOST(ch))
+            free(GET_HOST(ch));
+          GET_HOST(ch) = strdup(line);
+        }
         else if (!strcmp(tag, "Hrol"))  GET_HITROLL(ch)         = atoi(line);
         else if (!strcmp(tag, "Hung"))  GET_COND(ch, FULL)      = atoi(line);
       break;
@@ -494,8 +499,14 @@ void save_char(struct char_data * ch)
    * before saving.
    */
   if (ch->desc) {
-    if (ch->desc->host && *ch->desc->host)
+    if (ch->desc->host && *ch->desc->host) {
+      if (!GET_HOST(ch))
+        GET_HOST(ch) = strdup(ch->desc->host);
+      else if (GET_HOST(ch) && !strcmp(GET_HOST(ch), ch->desc->host)) {
+        free(GET_HOST(ch));
       GET_HOST(ch) = strdup(ch->desc->host);
+      }
+    }
 
     /*
      * We only update the time.played and time.logon if the character
diff -BbuprN -x '*.o' suntzu/src/shop.c yoda/src/shop.c
--- suntzu/src/shop.c	2004-03-30 19:50:25.000000000 -0600
+++ yoda/src/shop.c	2004-09-06 19:17:12.000000000 -0500
@@ -608,9 +608,10 @@ void shopping_buy(char *arg, struct char
 
     bought++;
     /* Test if producing shop ! */
-    if (shop_producing(obj, shop_nr))
+    if (shop_producing(obj, shop_nr)) {
       obj = read_object(GET_OBJ_RNUM(obj), REAL);
-    else {
+      add_unique_id(obj);
+    } else {
       obj_from_char(obj);
       SHOP_SORT(shop_nr)--;
     }
diff -BbuprN -x '*.o' suntzu/src/spells.c yoda/src/spells.c
--- suntzu/src/spells.c	2004-03-30 19:44:22.000000000 -0600
+++ yoda/src/spells.c	2004-09-06 19:17:12.000000000 -0500
@@ -446,6 +446,7 @@ ASPELL(spell_portal)
   GET_OBJ_VAL(portal, 4) = 50;
   GET_OBJ_VAL(portal, 5) = 50;
   GET_OBJ_TIMER(portal) = (int) (GET_LEVEL(ch) / 10);
+  add_unique_id(portal);
   obj_to_room(portal, IN_ROOM(ch));
   act("$n opens a portal in thin air.",
        TRUE, ch, 0, 0, TO_ROOM);
@@ -457,6 +458,7 @@ ASPELL(spell_portal)
   GET_OBJ_VAL(tportal, 4) = 50;
   GET_OBJ_VAL(tportal, 5) = 50;
   GET_OBJ_TIMER(tportal) = (int) (GET_LEVEL(ch) / 10);
+  add_unique_id(tportal);
   obj_to_room(tportal, IN_ROOM(victim));
   act("A shimmering portal appears out of thin air.",
        TRUE, victim, 0, 0, TO_ROOM);
diff -BbuprN -x '*.o' suntzu/src/structs.h yoda/src/structs.h
--- suntzu/src/structs.h	2004-08-31 20:57:22.000000000 -0500
+++ yoda/src/structs.h	2004-09-29 21:05:26.000000000 -0500
@@ -30,7 +30,7 @@
 #define USE_AUTOEQ	1	/* TRUE/FALSE aren't defined yet. */
 
 /* CWG Version String */
-#define CWG_VERSION "CWG SunTzu - 1.08.31"
+#define CWG_VERSION "CWG SunTzu - 1.09.30"
 
 /* preamble *************************************************************/
 
@@ -42,7 +42,7 @@
  *
  * NOTE: This will likely be unconditionally unsigned later.
  */
-#define CIRCLE_UNSIGNED_INDEX	0	/* 0 = signed, 1 = unsigned */
+#define CIRCLE_UNSIGNED_INDEX	1	/* 0 = signed, 1 = unsigned */
 
 #if CIRCLE_UNSIGNED_INDEX
 # define IDXTYPE	ush_int
@@ -101,6 +101,8 @@
 #define ROOM_BFS_MARK	15  /* (R) breath-first srch mrk	*/
 #define ROOM_VEHICLE    16  /* Requires a vehicle to pass       */
 #define ROOM_UNDERGROUND        17  /* Room is below ground      */
+#define ROOM_CURRENT     	18  /* Room move with random currents	*/
+#define ROOM_TIMED_DT     	19  /* Room has a timed death trap  	*/
 
 
 /* Exit info: used in room_data.dir_option.exit_info */
@@ -275,7 +277,9 @@
 #define PRF_AUTOSPLIT   28 /* Split gold with group			*/
 #define PRF_FULL_EXIT   29 /* Shows full autoexit details		*/
 #define PRF_AUTOSAC     30 /* Sacrifice a corpse 			*/
-#define PRF_VIEWORDER   31 /* if you want to see the newest first */
+#define PRF_VIEWORDER   31 /* If you want to see the newest first	*/
+#define PRF_NOCOMPRESS  32 /* If you want to force MCCP2 off		*/
+#define PRF_AUTOASSIST  33 /* Auto-assist toggle			*/
 
 /* Player autoexit levels: used as an index to exitlevels           */
 #define EXIT_OFF        0       /* Autoexit off                     */
@@ -353,6 +357,7 @@
 #define CON_QANSI		 31	/* Ask for ANSI support     */
 #define CON_GEDIT	 32	/* OLC mode - guild editor 		*/
 #define CON_QROLLSTATS	 33	/* OLC mode - guild editor 		*/
+#define CON_IEDIT        34	/*  OLC mode - individual edit		*/
 
 /* Character equipment positions: used as index for char_data.equipment[] */
 /* NOTE: Don't confuse these constants with the ITEM_ bitvectors
@@ -661,6 +666,7 @@
 #define PULSE_SANITY	(30 RL_SEC)
 #define PULSE_USAGE	(5 * 60 RL_SEC)	/* 5 mins */
 #define PULSE_TIMESAVE	(30 * 60 RL_SEC) /* should be >= SECS_PER_MUD_HOUR */
+#define PULSE_CURRENT   (10 RL_SEC)
 
 /* Variables for the output buffering system */
 #define MAX_SOCK_BUF            (12 * 1024) /* Size of kernel's sock buf   */
@@ -805,6 +811,9 @@ struct obj_data {
    struct obj_data *contains;     /* Contains objects                 */
 
    long id;                       /* used by DG triggers              */
+   time_t generation;             /* creation time for dupe check     */
+   unsigned long long unique_id;  /* random bits for dupe check       */
+
    struct trig_proto_list *proto_script; /* list of default triggers  */
    struct script_data *script;    /* script info for the object       */
 
@@ -884,6 +893,8 @@ struct room_data {
 
    struct obj_data *contents;   /* List of items in room              */
    struct char_data *people;    /* List of NPC / PC in room           */
+
+   int timed;                   /* For timed Dt's                     */
 };
 /* ====================================================================== */
 
@@ -1201,6 +1212,21 @@ struct txt_q {
    struct txt_block *tail;
 };
 
+struct compr {
+    int state; /* 0 - off. 1 - waiting for response. 2 - compress2 on */
+
+#ifdef HAVE_ZLIB_H
+    Bytef *buff_out;
+    int total_out; /* size of input buffer */
+    int size_out; /* size of data in output buffer */
+
+    Bytef *buff_in;
+    int total_in; /* size of input buffer */
+    int size_in; /* size of data in input buffer */
+
+    z_streamp stream;
+#endif /* HAVE_ZLIB_H */
+};
 
 struct descriptor_data {
    socket_t	descriptor;	/* file descriptor for socket		*/
@@ -1235,6 +1261,7 @@ struct descriptor_data {
    struct descriptor_data *snoop_by; /* And who is snooping this char	*/
    struct descriptor_data *next; /* link to next descriptor		*/
    struct oasis_olc_data *olc;   /* OLC info                            */
+   struct compr *comp;                /* compression info */
 };
 
 
@@ -1408,6 +1435,9 @@ struct game_data {
   char *NOEFFECT;         /* 'Nothing seems to happen.'	          */
   int disp_closed_doors;  /* Display closed doors in autoexit?	  */
   int reroll_player;      /* Players can reroll stats on creation */
+  int enable_compression; /* Enable MCCP2 stream compression      */
+  int enable_languages;   /* Enable spoken languages              */
+  int all_items_unique;   /* Treat all items as unique 		  */
 };
 
 
diff -BbuprN -x '*.o' suntzu/src/sysdep.h yoda/src/sysdep.h
--- suntzu/src/sysdep.h	2004-01-18 18:20:47.000000000 -0600
+++ yoda/src/sysdep.h	2004-09-06 16:18:41.000000000 -0500
@@ -241,6 +241,9 @@ extern void abort (), exit ();
 #define assert(arg)
 #endif
 
+#ifdef HAVE_ZLIB_H
+# include <zlib.h>
+#endif
 
 /* Header files only used in comm.c and some of the utils */
 
diff -BbuprN -x '*.o' suntzu/src/utils.c yoda/src/utils.c
--- suntzu/src/utils.c	2004-08-14 10:48:22.000000000 -0500
+++ yoda/src/utils.c	2004-09-01 18:15:09.000000000 -0500
@@ -754,14 +754,13 @@ int room_is_dark(room_rnum room)
 /* I shouldn't need to include the following line, right? */
 #include <windows.h>
 
-int xdir_scan(const char *dir_name, struct xap_dir *xapdirp2) {
+int xdir_scan(char *dir_name, struct xap_dir *xapdirptest) {
   HANDLE dirhandle;
-  int i;
   WIN32_FIND_DATA wtfd;
   int i, total = 0;
   struct xap_dir *xapdirp;
 
-  xapdirp = xapdirp2;
+  xapdirp = xapdirptest;
 
   xapdirp->current = -1;
   xapdirp->total = -1;
@@ -787,8 +786,10 @@ int xdir_scan(const char *dir_name, stru
   
   xapdirp->namelist = (char **) malloc(sizeof(char *) * total);
 	      
-  for(i =0; i < total && FindNextFile(dirhandle, &wtfd);i++) {
+  i = 0;
+  while(FindNextFile(dirhandle, &wtfd) != 0) {
     xapdirp->namelist[i] = strdup(wtfd.cFileName);
+	i++;
   }
   FindClose(dirhandle);
   
@@ -811,7 +812,7 @@ char *xdir_get_next(struct xap_dir *xd) 
 #include <dirent.h>
 #include <unistd.h>
 
-int xdir_scan(const char *dir_name, struct xap_dir *xapdirp) {
+int xdir_scan(char *dir_name, struct xap_dir *xapdirp) {
   xapdirp->total = scandir(dir_name,&(xapdirp->namelist),0,alphasort);
   xapdirp->current = 0;
   
@@ -877,7 +877,6 @@ int insure_directory(char *path, int isf
   #ifndef S_ISDIR
   #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
   #endif
-  
   //#ifdef CIRCLE_WINDOWS
   // if(!_stat(chopsuey,&st) && S_ISDIR(st.st_mode)) {
   //#else
diff -BbuprN -x '*.o' suntzu/src/utils.h yoda/src/utils.h
--- suntzu/src/utils.h	2004-07-25 14:52:09.000000000 -0500
+++ yoda/src/utils.h	2004-09-18 11:56:35.000000000 -0500
@@ -631,6 +631,9 @@ void	update_pos(struct char_data *victim
 #define CONFIG_NOEFFECT         config_info.play.NOEFFECT
 #define CONFIG_DISP_CLOSED_DOORS config_info.play.disp_closed_doors
 #define CONFIG_REROLL_PLAYER_CREATION	config_info.play.reroll_player
+#define CONFIG_ENABLE_COMPRESSION	config_info.play.enable_compression
+#define CONFIG_ENABLE_LANGUAGES	config_info.play.enable_languages
+#define CONFIG_ALL_ITEMS_UNIQUE	config_info.play.all_items_unique
 
   /** Crash Saves **/
 #define CONFIG_FREE_RENT        config_info.csd.free_rent
@@ -691,7 +694,7 @@ struct xap_dir {
 
 #endif
 
-int xdir_scan(const char *dir_name, struct xap_dir *xapdirp);
+int xdir_scan(char *dir_name, struct xap_dir *xapdirp);
 int xdir_get_total(struct xap_dir *xd);
 char *xdir_get_name(struct xap_dir *xd, int num);
 char *xdir_next(struct xap_dir *xd);