diff --git a/config.h.in b/config.h.in
index 83f0c65..d2edf62 100644
--- a/config.h.in
+++ b/config.h.in
@@ -8,7 +8,9 @@
 #endif
 
 /* Define if type char is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
 #undef __CHAR_UNSIGNED__
+#endif
 
 /* Define to empty if the keyword does not work.  */
 #undef const
@@ -278,6 +280,9 @@
 /* Define if you have the <sys/utsname.h> header file.  */
 #undef HAVE_SYS_UTSNAME_H
 
+/* Define if you have the <sys/wait.h> header file.  */
+#undef HAVE_SYS_WAIT_H
+
 /* Define if you have the <thread.h> header file.  */
 #undef HAVE_THREAD_H
 
diff --git a/configure b/configure
index 1d2de0c..8a23f08 100755
--- a/configure
+++ b/configure
@@ -1,9 +1,9 @@
-#!/bin/sh
+#! /bin/sh
 
-# From configure.in Revision: 1.19 
+# From configure.in Revision: 1.21 
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.0 
+# Generated automatically using autoconf version 2.3 
 # Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -28,37 +28,6 @@
 ac_help="$ac_help
 --with-libc=STRING        C library"
 
-# Omit some internal or obsolete options to make the list less imposing.
-ac_usage="Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
-                          [same as prefix]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
---enable and --with options recognized:$ac_help"
-
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
 # dashes changed to underlines.
@@ -152,8 +121,38 @@
     with_gas=yes ;;
 
   -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
     cat << EOF
-$ac_usage
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
+                          [same as prefix]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+--enable and --with options recognized:$ac_help
 EOF
     exit 0 ;;
 
@@ -233,7 +232,7 @@
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.0"
+    echo "configure generated by autoconf version 2.3"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -296,19 +295,20 @@
   { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
 fi
 
-trap 'rm -fr conftest* confdefs* core $ac_clean_files; exit 1' 1 2 15
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
 # File descriptor usage:
-# 0 unused; standard input
+# 0 standard input
 # 1 file creation
 # 2 errors and warnings
-# 3 unused; some systems may open it to /dev/tty
-# 4 checking for... messages and results
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
 # 5 compiler messages saved in config.log
 if test "$silent" = yes; then
-  exec 4>/dev/null
+  exec 6>/dev/null
 else
-  exec 4>&1
+  exec 6>&1
 fi
 exec 5>./config.log
 
@@ -398,8 +398,8 @@
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} $CFLAGS $CPPFLAGS conftest.$ac_ext -c 1>&5 2>&5'
-ac_link='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext -o conftest $LIBS 1>&5 2>&5'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
 
 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
@@ -417,7 +417,7 @@
 
 
 # checks for alternative programs
-echo $ac_n "checking for --without-gcc""... $ac_c" 1>&4
+echo $ac_n "checking for --without-gcc""... $ac_c" 1>&6
 # Check whether --with-gcc or --without-gcc was given.
 withval="$with_gcc"
 if test -n "$withval"; then
@@ -434,7 +434,7 @@
   without_gcc=no
 fi
 
-echo "$ac_t""$without_gcc" 1>&4
+echo "$ac_t""$without_gcc" 1>&6
 
 # If the user switches compilers, we can't believe the cache
 if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
@@ -445,9 +445,9 @@
 
 # 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>&4
-if eval "test \"`echo '${'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -466,15 +466,15 @@
 fi
 CC="$ac_cv_prog_CC"
 if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&4
+  echo "$ac_t""$CC" 1>&6
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
 #ifdef __GNUC__
@@ -487,13 +487,13 @@
   ac_cv_prog_gcc=no
 fi
 fi
-echo "$ac_t""$ac_cv_prog_gcc" 1>&4
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
 if test $ac_cv_prog_gcc = yes; then
   GCC=yes
   if test "${CFLAGS+set}" != set; then
-    echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_prog_gcc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+    echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -504,7 +504,7 @@
 rm -f conftest*
 
 fi
-    echo "$ac_t""$ac_cv_prog_gcc_g" 1>&4
+    echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
     if test $ac_cv_prog_gcc_g = yes; then
       CFLAGS="-g -O"
     else
@@ -518,9 +518,9 @@
 
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -539,9 +539,9 @@
 fi
 RANLIB="$ac_cv_prog_RANLIB"
 if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&4
+  echo "$ac_t""$RANLIB" 1>&6
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
@@ -549,9 +549,9 @@
 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>&4
-if eval "test \"`echo '${'ac_cv_prog_AR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
@@ -569,9 +569,9 @@
 fi
 AR="$ac_cv_prog_AR"
 if test -n "$AR"; then
-  echo "$ac_t""$AR" 1>&4
+  echo "$ac_t""$AR" 1>&6
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 test -n "$AR" && break
@@ -598,14 +598,14 @@
 fi
 
 # checks for UNIX variants that set C preprocessor variables
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&4
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-if eval "test \"`echo '${'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
     # This must be in double quotes, not single quotes, because CPP may get
   # substituted into the Makefile and "${CC-cc}" will confuse make.
@@ -648,9 +648,9 @@
 fi
 fi
 CPP="$ac_cv_prog_CPP"
-echo "$ac_t""$CPP" 1>&4
+echo "$ac_t""$CPP" 1>&6
 
-echo $ac_n "checking for AIX""... $ac_c" 1>&4
+echo $ac_n "checking for AIX""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
 #line 656 "configure"
 #include "confdefs.h"
@@ -662,44 +662,24 @@
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "yes" >/dev/null 2>&1; then
   rm -rf conftest*
-  echo "$ac_t""yes" 1>&4; cat >> confdefs.h <<\EOF
+  echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define _ALL_SOURCE 1
 EOF
 
 else
   rm -rf conftest*
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 rm -f conftest*
 
 
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&4
-if test -d /etc/conf/kconfig.d &&
-  grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
-  echo "$ac_t""yes" 1>&4
-  ISC=yes # If later tests want to check for ISC.
-  cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
-  if test "$GCC" = yes; then
-    CC="$CC -posix"
-  else
-    CC="$CC -Xp"
-  fi
-else
-  echo "$ac_t""no" 1>&4
-  ISC=
-fi
-
 ac_safe=`echo "minix/config.h" | tr './\055' '___'`
-echo $ac_n "checking for minix/config.h""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
+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 703 "configure"
+#line 683 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
@@ -716,10 +696,10 @@
 rm -f conftest*
 fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   MINIX=yes
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 MINIX=
 fi
 
@@ -739,17 +719,17 @@
 fi
 
 
-was_it_defined=no
+# checks for header files
 # If we cannot run a trivial program, we must be cross compiling.
-echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_c_cross'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-  ac_cv_cross=yes
+  ac_cv_c_cross=yes
 else
 cat > conftest.$ac_ext <<EOF
-#line 753 "configure"
+#line 733 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
@@ -763,40 +743,14 @@
 rm -fr conftest*
 fi
 cross_compiling=$ac_cv_c_cross
-echo "$ac_t""$ac_cv_c_cross" 1>&4
+echo "$ac_t""$ac_cv_c_cross" 1>&6
 
-if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
-cat > conftest.$ac_ext <<EOF
-#line 773 "configure"
-#include "confdefs.h"
-
-#ifdef _NEXT_SOURCE
-main() { exit(0); }
-#endif
-
-EOF
-eval $ac_link
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
-CC="$CC -posix"; was_it_defined=yes
-fi
-fi
-rm -fr conftest*
-echo $ac_n "checking for NeXT""... $ac_c" 1>&4
-echo "$ac_t""$was_it_defined" 1>&4
-
-# checks for header files
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+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 800 "configure"
+#line 754 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -818,7 +772,7 @@
 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 822 "configure"
+#line 776 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -836,7 +790,7 @@
 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 840 "configure"
+#line 794 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -857,7 +811,7 @@
   ac_cv_header_stdc=no
 else
 cat > conftest.$ac_ext <<EOF
-#line 861 "configure"
+#line 815 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -878,7 +832,7 @@
 rm -fr conftest*
 fi
 fi
-echo "$ac_t""$ac_cv_header_stdc" 1>&4
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
 if test $ac_cv_header_stdc = yes; then
   cat >> confdefs.h <<\EOF
 #define STDC_HEADERS 1
@@ -886,15 +840,15 @@
 
 fi
 
-for ac_hdr in dlfcn.h fcntl.h limits.h signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h sys/audioio.h sys/param.h sys/select.h sys/time.h sys/times.h sys/un.h sys/utsname.h
+for ac_hdr in dlfcn.h fcntl.h limits.h signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h sys/audioio.h sys/param.h sys/select.h sys/time.h sys/times.h sys/un.h sys/utsname.h sys/wait.h
 do
 ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+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 898 "configure"
+#line 852 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
@@ -911,14 +865,14 @@
 rm -f conftest*
 fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_hdr 1
 EOF
  
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 done
 
@@ -926,12 +880,12 @@
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 935 "configure"
+#line 889 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -951,26 +905,26 @@
 
 fi
 if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_hdr 1
 EOF
  ac_header_dirent=$ac_hdr; break
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-echo $ac_n "checking for -ldir""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_dir'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -ldir""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_dir'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -ldir "
+LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 974 "configure"
+#line 928 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -990,21 +944,21 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'dir`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -ldir"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 else
-echo $ac_n "checking for -lx""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_x'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lx""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_x'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lx "
+LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1008 "configure"
+#line 962 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1024,10 +978,10 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'x`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -lx"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 fi
@@ -1035,9 +989,9 @@
 
 # checks for typedefs
 was_it_defined=no
-echo $ac_n "checking for clock_t in time.h""... $ac_c" 1>&4
+echo $ac_n "checking for clock_t in time.h""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 1041 "configure"
+#line 995 "configure"
 #include "confdefs.h"
 #include <time.h>
 EOF
@@ -1054,14 +1008,14 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$was_it_defined" 1>&4
+echo "$ac_t""$was_it_defined" 1>&6
 
-echo $ac_n "checking for mode_t""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_mode_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for mode_t""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1065 "configure"
+#line 1019 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1079,7 +1033,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_mode_t" 1>&4
+echo "$ac_t""$ac_cv_type_mode_t" 1>&6
 if test $ac_cv_type_mode_t = no; then
   cat >> confdefs.h <<\EOF
 #define mode_t int
@@ -1087,12 +1041,12 @@
 
 fi
 
-echo $ac_n "checking for off_t""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_off_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for off_t""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1096 "configure"
+#line 1050 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1110,7 +1064,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_off_t" 1>&4
+echo "$ac_t""$ac_cv_type_off_t" 1>&6
 if test $ac_cv_type_off_t = no; then
   cat >> confdefs.h <<\EOF
 #define off_t long
@@ -1118,12 +1072,12 @@
 
 fi
 
-echo $ac_n "checking for pid_t""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_pid_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for pid_t""... $ac_c" 1>&6
+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 1127 "configure"
+#line 1081 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1141,7 +1095,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_pid_t" 1>&4
+echo "$ac_t""$ac_cv_type_pid_t" 1>&6
 if test $ac_cv_type_pid_t = no; then
   cat >> confdefs.h <<\EOF
 #define pid_t int
@@ -1149,19 +1103,22 @@
 
 fi
 
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_signal'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+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 1158 "configure"
+#line 1112 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
 #ifdef signal
 #undef signal
 #endif
-extern void (*signal ()) ();
+#ifdef __cplusplus
+extern "C"
+#endif
+void (*signal ()) ();
 int main() { return 0; }
 int t() {
 int i;
@@ -1177,18 +1134,18 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_signal" 1>&4
+echo "$ac_t""$ac_cv_type_signal" 1>&6
 cat >> confdefs.h <<EOF
 #define RETSIGTYPE $ac_cv_type_signal
 EOF
 
 
-echo $ac_n "checking for size_t""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_size_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for size_t""... $ac_c" 1>&6
+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 1192 "configure"
+#line 1149 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1206,7 +1163,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_size_t" 1>&4
+echo "$ac_t""$ac_cv_type_size_t" 1>&6
 if test $ac_cv_type_size_t = no; then
   cat >> confdefs.h <<\EOF
 #define size_t unsigned
@@ -1214,12 +1171,12 @@
 
 fi
 
-echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_type_uid_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1223 "configure"
+#line 1180 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -1234,7 +1191,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_type_uid_t" 1>&4
+echo "$ac_t""$ac_cv_type_uid_t" 1>&6
 if test $ac_cv_type_uid_t = no; then
   cat >> confdefs.h <<\EOF
 #define uid_t int
@@ -1249,7 +1206,7 @@
 
 # Set name for machine-dependent library files
 
-echo $ac_n "checking MACHDEP""... $ac_c" 1>&4
+echo $ac_n "checking MACHDEP""... $ac_c" 1>&6
 if test -z "$MACHDEP"
 then
 	ac_sys_system=`uname -s | tr -d ' ' | tr '[A-Z]' '[a-z]'`
@@ -1259,7 +1216,7 @@
 	'')	MACHDEP=unknown;;
 	esac
 fi
-echo "$ac_t""$MACHDEP" 1>&4
+echo "$ac_t""$MACHDEP" 1>&6
 
 # Set info about shared libraries.
 # XXX This should try things out instead of testing uname!
@@ -1271,7 +1228,7 @@
 ac_sys_release=`uname -r`
 # SO is the extension of shared libraries `(including the dot!)
 # -- usually .so, .sl on HP-UX
-echo $ac_n "checking SO""... $ac_c" 1>&4
+echo $ac_n "checking SO""... $ac_c" 1>&6
 if test -z "$SO"
 then
 	case $ac_sys_system in
@@ -1279,10 +1236,10 @@
 	*)	SO=.so;;
 	esac
 fi
-echo "$ac_t""$SO" 1>&4
+echo "$ac_t""$SO" 1>&6
 # LDSHARED is the ld *command* used to create shared library
 # -- "ld" on SunOS 4.x.x, "ld -G" on SunOS 5.x, "ld -shared" on IRIX 5
-echo $ac_n "checking LDSHARED""... $ac_c" 1>&4
+echo $ac_n "checking LDSHARED""... $ac_c" 1>&6
 if test -z "$LDSHARED"
 then
 	case $ac_sys_system/$ac_sys_release in
@@ -1292,13 +1249,14 @@
 	hp*|HP*) LDSHARED="ld -b";;
 	OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
 	DYNIX/ptx*) LDSHARED="ld -G";;
+	Linux*) LDSHARED="gcc-elf -shared";;
 	*)	LDSHARED="ld";;
 	esac
 fi
-echo "$ac_t""$LDSHARED" 1>&4
+echo "$ac_t""$LDSHARED" 1>&6
 # CCSHARED are the C *flags* used to create objects to go into a shared
-# library -- this is only needed for HP-UX
-echo $ac_n "checking CCSHARED""... $ac_c" 1>&4
+# library -- this is only needed for a few systems
+echo $ac_n "checking CCSHARED""... $ac_c" 1>&6
 if test -z "$CCSHARED"
 then
 	case $ac_sys_system in
@@ -1306,29 +1264,31 @@
 		 then CCSHARED="-fpic";
 		 else CCSHARED="+z";
 		 fi;;
+	Linux*) CCSHARED="-fpic";;
 	esac
 fi
-echo "$ac_t""$CCSHARED" 1>&4
+echo "$ac_t""$CCSHARED" 1>&6
 # LINKFORSHARED are the flags passed to the $(CC) command that links
-# the python executable -- this is only needed for HP-UX
-echo $ac_n "checking LINKFORSHARED""... $ac_c" 1>&4
+# the python executable -- this is only needed for a few systems
+echo $ac_n "checking LINKFORSHARED""... $ac_c" 1>&6
 if test -z "$LINKFORSHARED"
 then
 	case $ac_sys_system in
 	hp*|HP*) LINKFORSHARED="-Wl,-E";;
+	Linux*) LINKFORSHARED="-rdynamic";;
 	esac
 fi
-echo "$ac_t""$LINKFORSHARED" 1>&4
+echo "$ac_t""$LINKFORSHARED" 1>&6
 
 # checks for libraries
-echo $ac_n "checking for -ldl""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_dl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -ldl""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_dl'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -ldl "
+LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1332 "configure"
+#line 1292 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1348,26 +1308,26 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'dl`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_lib=HAVE_LIB`echo dl | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="$LIBS -ldl"
+  LIBS="-ldl $LIBS"
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 	# Dynamic linking for SunOS/Solaris and SYSV
-echo $ac_n "checking for -ldld""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_dld'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -ldld""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_dld'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -ldld "
+LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1371 "configure"
+#line 1331 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1387,26 +1347,26 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'dld`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_lib=HAVE_LIB`echo dld | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="$LIBS -ldld"
+  LIBS="-ldld $LIBS"
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 	# Dynamic linking for HP-UX
-echo $ac_n "checking for -lsun""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_sun'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lsun""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_sun'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lsun "
+LIBS="-lsun  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1410 "configure"
+#line 1370 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1426,16 +1386,16 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'sun`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_lib=HAVE_LIB`echo sun | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="$LIBS -lsun"
+  LIBS="-lsun $LIBS"
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 	# NIS (== YP) interface for IRIX 4
 # The following three (nsl,inet,socket) are needed on Sequent;
@@ -1446,14 +1406,14 @@
 # satisfied without it).
 if test "`uname -s`" != IRIX
 then
-echo $ac_n "checking for -lnsl""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_nsl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lnsl""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_nsl'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lnsl "
+LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1457 "configure"
+#line 1417 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1473,20 +1433,20 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'nsl`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   LIBS="-lnsl $LIBS"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
  # SVR4
-echo $ac_n "checking for -linet""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_inet'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -linet""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_inet'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -linet -lnsl"
+LIBS="-linet -lnsl $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1490 "configure"
+#line 1450 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1506,20 +1466,20 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'inet`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   LIBS="-linet $LIBS"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
  # Sequent
-echo $ac_n "checking for -lsocket""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_socket'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lsocket""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_socket'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lsocket $LIBS"
+LIBS="-lsocket $LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1523 "configure"
+#line 1483 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1539,20 +1499,20 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'socket`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   LIBS="-lsocket $LIBS"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
  # SVR4 sockets
 fi
 
-echo $ac_n "checking for --with-readline""... $ac_c" 1>&4
+echo $ac_n "checking for --with-readline""... $ac_c" 1>&6
 # Check whether --with-readline or --without-readline was given.
 withval="$with_readline"
 if test -n "$withval"; then
   
-echo "$ac_t""$withval" 1>&4
+echo "$ac_t""$withval" 1>&6
 cat >> confdefs.h <<\EOF
 #define WITH_READLINE 1
 EOF
@@ -1561,14 +1521,14 @@
 then { echo "configure: error: proper usage is --with-readline=DIRECTORY" 1>&2; exit 1; }
 fi
 termcap=
-echo $ac_n "checking for -ltermcap""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_termcap'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -ltermcap""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_termcap'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -ltermcap "
+LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1572 "configure"
+#line 1532 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1588,19 +1548,19 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'termcap`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   termcap=termcap
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 
-echo $ac_n "checking for -ltermlib""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_termlib'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -ltermlib""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_termlib'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -ltermlib "
+LIBS="-ltermlib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1604 "configure"
+#line 1564 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1620,10 +1580,10 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'termlib`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   termcap=termlib
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 fi
@@ -1639,27 +1599,27 @@
 else { echo "configure: error: no working termcap/termlib" 1>&2; exit 1; }
 fi
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
-echo $ac_n "checking for --with-thread""... $ac_c" 1>&4
+echo $ac_n "checking for --with-thread""... $ac_c" 1>&6
 # Check whether --with-thread or --without-thread was given.
 withval="$with_thread"
 if test -n "$withval"; then
   
-echo "$ac_t""$withval" 1>&4
+echo "$ac_t""$withval" 1>&6
 if test -d "$withval"
 then LIBS="$LIBS -L$withval"
 fi
-echo $ac_n "checking for -lpthreads""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_pthreads'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lpthreads""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_pthreads'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lpthreads "
+LIBS="-lpthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1663 "configure"
+#line 1623 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1679,7 +1639,7 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'pthreads`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
 #define WITH_THREAD 1
 EOF
@@ -1691,17 +1651,17 @@
 LIBS="$LIBS -lpthreads"
 LIBOBJS="$LIBOBJS thread.o"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for -lmpc""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_mpc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lmpc""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_mpc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lmpc "
+LIBS="-lmpc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1705 "configure"
+#line 1665 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1721,7 +1681,7 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'mpc`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
 #define WITH_THREAD 1
 EOF
@@ -1729,17 +1689,17 @@
 LIBS="$LIBS -lmpc"
 LIBOBJS="$LIBOBJS thread.o"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for -lthread""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_thread'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lthread""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_thread'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lthread "
+LIBS="-lthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1743 "configure"
+#line 1703 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1759,7 +1719,7 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'thread`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
 #define WITH_THREAD 1
 EOF
@@ -1767,12 +1727,12 @@
 LIBS="$LIBS -lthread"
 LIBOBJS="$LIBOBJS thread.o"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
@@ -1780,12 +1740,12 @@
 
 DLINCLDIR=/
 
-echo $ac_n "checking for --with-sgi-dl""... $ac_c" 1>&4
+echo $ac_n "checking for --with-sgi-dl""... $ac_c" 1>&6
 # Check whether --with-sgi-dl or --without-sgi-dl was given.
 withval="$with_sgi_dl"
 if test -n "$withval"; then
   
-echo "$ac_t""$withval" 1>&4
+echo "$ac_t""$withval" 1>&6
 cat >> confdefs.h <<\EOF
 #define WITH_SGI_DL 1
 EOF
@@ -1798,16 +1758,16 @@
 DLINCLDIR=${dldir}
 LIBS="$LIBS -ldl -lmld"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
-echo $ac_n "checking for --with-dl-dld""... $ac_c" 1>&4
+echo $ac_n "checking for --with-dl-dld""... $ac_c" 1>&6
 # Check whether --with-dl-dld or --without-dl-dld was given.
 withval="$with_dl_dld"
 if test -n "$withval"; then
   
-echo "$ac_t""$withval" 1>&4
+echo "$ac_t""$withval" 1>&6
 cat >> confdefs.h <<\EOF
 #define WITH_DL_DLD 1
 EOF
@@ -1821,21 +1781,26 @@
 DLINCLDIR=${dldir}
 LIBS="$LIBS -ldl -ldld"
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
 # checks for library functions
 for ac_func in chown clock dlopen ftime ftruncate gethostname_r gettimeofday getpeername getpgrp getpid getwd link lstat nice readlink select setgid setuid setsid setpgid setpgrp setvbuf siginterrupt symlink tcgetpgrp tcsetpgrp times truncate uname waitpid
 do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+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 1837 "configure"
+#line 1797 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
 int main() { return 0; }
 int t() {
 
@@ -1845,8 +1810,7 @@
 #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char $ac_func(); $ac_func();
+$ac_func();
 #endif
 
 ; return 0; }
@@ -1862,27 +1826,32 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_func 1
 EOF
  
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 done
 
 for ac_func in dup2 getcwd strerror memmove
 do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+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 1884 "configure"
+#line 1848 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
 int main() { return 0; }
 int t() {
 
@@ -1892,8 +1861,7 @@
 #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char $ac_func(); $ac_func();
+$ac_func();
 #endif
 
 ; return 0; }
@@ -1909,23 +1877,28 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   :
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 LIBOBJS="$LIBOBJS ${ac_func}.o"
 fi
 
 done
 
-echo $ac_n "checking for getpgrp""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_getpgrp'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for getpgrp""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_getpgrp'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1927 "configure"
+#line 1895 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char getpgrp(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char getpgrp(); 
+
 int main() { return 0; }
 int t() {
 
@@ -1935,8 +1908,7 @@
 #if defined (__stub_getpgrp) || defined (__stub___getpgrp)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char getpgrp(); getpgrp();
+getpgrp();
 #endif
 
 ; return 0; }
@@ -1952,9 +1924,9 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'getpgrp`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat > conftest.$ac_ext <<EOF
-#line 1958 "configure"
+#line 1930 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -1972,17 +1944,22 @@
 rm -f conftest*
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for setpgrp""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_setpgrp'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for setpgrp""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_setpgrp'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1984 "configure"
+#line 1956 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char setpgrp(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char setpgrp(); 
+
 int main() { return 0; }
 int t() {
 
@@ -1992,8 +1969,7 @@
 #if defined (__stub_setpgrp) || defined (__stub___setpgrp)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char setpgrp(); setpgrp();
+setpgrp();
 #endif
 
 ; return 0; }
@@ -2009,9 +1985,9 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'setpgrp`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat > conftest.$ac_ext <<EOF
-#line 2015 "configure"
+#line 1991 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -2029,17 +2005,22 @@
 rm -f conftest*
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for gettimeofday""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_gettimeofday'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2041 "configure"
+#line 2017 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gettimeofday(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char gettimeofday(); 
+
 int main() { return 0; }
 int t() {
 
@@ -2049,8 +2030,7 @@
 #if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char gettimeofday(); gettimeofday();
+gettimeofday();
 #endif
 
 ; return 0; }
@@ -2066,9 +2046,9 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
   cat > conftest.$ac_ext <<EOF
-#line 2072 "configure"
+#line 2052 "configure"
 #include "confdefs.h"
 #include <sys/time.h>
 int main() { return 0; }
@@ -2088,17 +2068,17 @@
 rm -f conftest*
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
 # checks for structures
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_time'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+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 2102 "configure"
+#line 2082 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2118,7 +2098,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_header_time" 1>&4
+echo "$ac_t""$ac_cv_header_time" 1>&6
 if test $ac_cv_header_time = yes; then
   cat >> confdefs.h <<\EOF
 #define TIME_WITH_SYS_TIME 1
@@ -2126,12 +2106,12 @@
 
 fi
 
-echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_struct_tm'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2135 "configure"
+#line 2115 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -2150,7 +2130,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_struct_tm" 1>&4
+echo "$ac_t""$ac_cv_struct_tm" 1>&6
 if test $ac_cv_struct_tm = sys/time.h; then
   cat >> confdefs.h <<\EOF
 #define TM_IN_SYS_TIME 1
@@ -2158,12 +2138,12 @@
 
 fi
 
-echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_struct_tm_zone'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2167 "configure"
+#line 2147 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -2182,19 +2162,19 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_struct_tm_zone" 1>&4
+echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6
 if test "$ac_cv_struct_tm_zone" = yes; then
   cat >> confdefs.h <<\EOF
 #define HAVE_TM_ZONE 1
 EOF
 
 else
-  echo $ac_n "checking for tzname""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_var_tzname'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+  echo $ac_n "checking for tzname""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2198 "configure"
+#line 2178 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -2215,7 +2195,7 @@
 rm -f conftest*
 
 fi
-  echo "$ac_t""$ac_cv_var_tzname" 1>&4
+  echo "$ac_t""$ac_cv_var_tzname" 1>&6
   if test $ac_cv_var_tzname = yes; then
     cat >> confdefs.h <<\EOF
 #define HAVE_TZNAME 1
@@ -2225,12 +2205,12 @@
 fi
 
 
-echo $ac_n "checking for time.h that defines altzone""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_header_time_altzone'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for time.h that defines altzone""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_time_altzone'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2234 "configure"
+#line 2214 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() { return 0; }
@@ -2249,7 +2229,7 @@
 
 fi
 
-echo "$ac_t""$ac_cv_header_time_altzone" 1>&4
+echo "$ac_t""$ac_cv_header_time_altzone" 1>&6
 if test $ac_cv_header_time_altzone = yes; then
   cat >> confdefs.h <<\EOF
 #define HAVE_ALTZONE 1
@@ -2258,9 +2238,9 @@
 fi
 
 was_it_defined=no
-echo $ac_n "checking whether sys/select.h and sys/time.h may both be included""... $ac_c" 1>&4
+echo $ac_n "checking whether sys/select.h and sys/time.h may both be included""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2264 "configure"
+#line 2244 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2281,18 +2261,18 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$was_it_defined" 1>&4
+echo "$ac_t""$was_it_defined" 1>&6
 
 # checks for compiler characteristics
 
-echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_c_char_unsigned'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$GCC" = yes; then
   # GCC predefines this symbol on systems where it applies.
 cat > conftest.$ac_ext <<EOF
-#line 2296 "configure"
+#line 2276 "configure"
 #include "confdefs.h"
 #ifdef __CHAR_UNSIGNED__
   yes
@@ -2314,7 +2294,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 2318 "configure"
+#line 2298 "configure"
 #include "confdefs.h"
 /* volatile prevents gcc2 from optimizing the test away on sparcs.  */
 #if !defined(__STDC__) || __STDC__ != 1
@@ -2334,7 +2314,7 @@
 rm -fr conftest*
 fi
 fi
-echo "$ac_t""$ac_cv_c_char_unsigned" 1>&4
+echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6
 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
   cat >> confdefs.h <<\EOF
 #define __CHAR_UNSIGNED__ 1
@@ -2343,12 +2323,12 @@
 fi
 
 
-echo $ac_n "checking for working const""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_c_const'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+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 2352 "configure"
+#line 2332 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2408,7 +2388,7 @@
 rm -f conftest*
 
 fi
-echo "$ac_t""$ac_cv_c_const" 1>&4
+echo "$ac_t""$ac_cv_c_const" 1>&6
 if test $ac_cv_c_const = no; then
   cat >> confdefs.h <<\EOF
 #define const 
@@ -2418,9 +2398,9 @@
 
 
 works=no
-echo $ac_n "checking for working volatile""... $ac_c" 1>&4
+echo $ac_n "checking for working volatile""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2424 "configure"
+#line 2404 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2440,12 +2420,12 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$works" 1>&4
+echo "$ac_t""$works" 1>&6
 
 works=no
-echo $ac_n "checking for working signed char""... $ac_c" 1>&4
+echo $ac_n "checking for working signed char""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2449 "configure"
+#line 2429 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2465,12 +2445,12 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$works" 1>&4
+echo "$ac_t""$works" 1>&6
 
 have_prototypes=no
-echo $ac_n "checking for prototypes""... $ac_c" 1>&4
+echo $ac_n "checking for prototypes""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2474 "configure"
+#line 2454 "configure"
 #include "confdefs.h"
 int foo(int x) { return 0; }
 int main() { return 0; }
@@ -2487,12 +2467,12 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$have_prototypes" 1>&4
+echo "$ac_t""$have_prototypes" 1>&6
 
 works=no
-echo $ac_n "checking for variable length prototypes and stdarg.h""... $ac_c" 1>&4
+echo $ac_n "checking for variable length prototypes and stdarg.h""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2496 "configure"
+#line 2476 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -2512,13 +2492,13 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$works" 1>&4
+echo "$ac_t""$works" 1>&6
 
 if test "$have_prototypes" = yes; then
 bad_prototypes=no
-echo $ac_n "checking for bad exec* prototypes""... $ac_c" 1>&4
+echo $ac_n "checking for bad exec* prototypes""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2522 "configure"
+#line 2502 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -2537,16 +2517,16 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$bad_prototypes" 1>&4
+echo "$ac_t""$bad_prototypes" 1>&6
 fi
 
 bad_forward=no
-echo $ac_n "checking for bad static forward""... $ac_c" 1>&4
+echo $ac_n "checking for bad static forward""... $ac_c" 1>&6
 if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 2550 "configure"
+#line 2530 "configure"
 #include "confdefs.h"
 
 struct s { int a; int b; };
@@ -2573,12 +2553,12 @@
 fi
 fi
 rm -fr conftest*
-echo "$ac_t""$bad_forward" 1>&4
+echo "$ac_t""$bad_forward" 1>&6
 
 va_list_is_array=no
-echo $ac_n "checking whether va_list is an array""... $ac_c" 1>&4
+echo $ac_n "checking whether va_list is an array""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 2582 "configure"
+#line 2562 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_STDARG_PROTOTYPES
@@ -2603,20 +2583,20 @@
 fi
 rm -f conftest*
 
-echo "$ac_t""$va_list_is_array" 1>&4
+echo "$ac_t""$va_list_is_array" 1>&6
 
 # checks for system services
 # (none yet)
 
 # Linux requires this for correct f.p. operations
-echo $ac_n "checking for -lieee""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_lib_ieee'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for -lieee""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_ieee'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lieee "
+LIBS="-lieee  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2620 "configure"
+#line 2600 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2636,16 +2616,16 @@
 
 fi
 if eval "test \"`echo '$ac_cv_lib_'ieee`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_lib=HAVE_LIB`echo ieee | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="$LIBS -lieee"
+  LIBS="-lieee $LIBS"
 
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 
 
@@ -2681,14 +2661,19 @@
 LIBS="$LIBS $LIBM"
 for ac_func in hypot
 do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+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 2690 "configure"
+#line 2670 "configure"
 #include "confdefs.h"
-#include <ctype.h> /* Arbitrary system header to define __stub macros. */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
 int main() { return 0; }
 int t() {
 
@@ -2698,8 +2683,7 @@
 #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-/* Override any gcc2 internal prototype to avoid an error.  */
-char $ac_func(); $ac_func();
+$ac_func();
 #endif
 
 ; return 0; }
@@ -2715,29 +2699,29 @@
 
 fi
 if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&4
+  echo "$ac_t""yes" 1>&6
     ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_func 1
 EOF
  
 else
-  echo "$ac_t""no" 1>&4
+  echo "$ac_t""no" 1>&6
 fi
 done
 
 LIBS=$LIBS_SAVE
 
 # check for getopt
-echo $ac_n "checking for genuine getopt""... $ac_c" 1>&4
-if eval "test \"`echo '${'ac_cv_func_getopt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&4
+echo $ac_n "checking for genuine getopt""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_getopt'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
   ac_cv_func_getopt=no
 else
 cat > conftest.$ac_ext <<EOF
-#line 2741 "configure"
+#line 2725 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 extern int optind, opterr, getopt();
@@ -2758,14 +2742,12 @@
 fi
 rm -fr conftest*
 fi
-echo "$ac_t""$ac_cv_func_getopt" 1>&4
+echo "$ac_t""$ac_cv_func_getopt" 1>&6
 test $ac_cv_func_getopt = no && LIBOBJS="$LIBOBJS getopt.o"
 
 # generate output files
 trap '' 1 2 15
-if test -w $cache_file; then
-echo "updating cache $cache_file"
-cat > $cache_file <<\EOF
+cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
 # scripts and configure runs.  It is not useful on other systems.
@@ -2781,15 +2763,24 @@
 # --recheck option to rerun configure.
 #
 EOF
-# Ultrix sh set writes to stderr and can't be redirected directly.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
 (set) 2>&1 |
-  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/: \${\1='\2'}/p" \
-  >> $cache_file
+  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
+  >> confcache
+if cmp -s $cache_file confcache; then
+  :
 else
-echo "not updating unwritable cache $cache_file"
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
 fi
+rm -f confcache
 
-trap 'rm -fr conftest* confdefs* core $ac_clean_files; exit 1' 1 2 15
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
 test "x$prefix" = xNONE && prefix=$ac_default_prefix
 # Let make expand exec_prefix.
@@ -2812,7 +2803,7 @@
 echo creating $CONFIG_STATUS
 rm -f $CONFIG_STATUS
 cat > $CONFIG_STATUS <<EOF
-#!/bin/sh
+#! /bin/sh
 # Generated automatically by configure.
 # Run this file to recreate the current configuration.
 # This directory was configured as follows,
@@ -2831,7 +2822,7 @@
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.0"
+    echo "$CONFIG_STATUS generated by autoconf version 2.3"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -2841,7 +2832,7 @@
 
 ac_given_srcdir=$srcdir
 
-trap 'rm -fr Makefile Objects/Makefile Parser/Makefile Python/Makefile Modules/Makefile.pre config.h conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile Objects/Makefile Parser/Makefile Python/Makefile Modules/Makefile.pre config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 
 # Protect against being on the right side of a sed subst in config.status. 
 sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
@@ -2897,7 +2888,7 @@
   if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
     # The file is in a subdirectory.
     test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
     # A "../" for each directory in $ac_dir_suffix.
     ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
   else
@@ -3032,5 +3023,5 @@
 EOF
 chmod +x $CONFIG_STATUS
 rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
