diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/changes ./changes
--- /src/FreeBSD/work/ctk/work/ctk4.0/changes	Wed Sep 13 15:12:00 1995
+++ ./changes	Wed Oct  2 08:36:29 1996
@@ -304,3 +304,7 @@
 insert mark wraps across lines (put back InsertUndisplayProc() - why
 I removed it in the first place I have no idea).
 
+9/20/96 (port) Port ctk to tcl7.6: event handling (remove from ctk, call
+tcl's), channel handling. Should be better to reorganize code and 
+merge in tk4.2 as another platform (Curses)--Juanjo <jjciarla@raiz.uncu.edu.ar>
+
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/configure ./configure
--- /src/FreeBSD/work/ctk/work/ctk4.0/configure	Wed Nov  6 17:48:03 1996
+++ ./configure	Wed Oct  2 21:11:49 1996
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.7 
+# Generated automatically using autoconf version 2.4 
 # Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -17,6 +17,10 @@
   --with-libdirs   directories to add to library search path"
 ac_help="$ac_help
   --with-incdirs   directories to add to include search path"
+ac_help="$ac_help
+  --with-tcl=DIR          use Tcl 7.5 binaries from DIR"
+ac_help="$ac_help
+  --enable-shared         build libctk as a shared library"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -39,22 +43,9 @@
 verbose=
 x_includes=NONE
 x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
 
 # Initialize some other variables.
 subdirs=
-MFLAGS= MAKEFLAGS=
 
 ac_prev=
 for ac_option
@@ -76,14 +67,9 @@
 
   case "$ac_option" in
 
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
+  -build | --build | --buil | --bui | --bu | --b)
     ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+  -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
     build="$ac_optarg" ;;
 
   -cache-file | --cache-file | --cache-fil | --cache-fi \
@@ -93,12 +79,6 @@
   | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
     cache_file="$ac_optarg" ;;
 
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
   -disable-* | --disable-*)
     ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
     # Reject names that are not valid shell variable names.
@@ -149,29 +129,12 @@
 Directory and file names:
   --prefix=PREFIX         install architecture-independent files in PREFIX
                           [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
                           [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
   --srcdir=DIR            find the sources in DIR [configure dir or ..]
   --program-prefix=PREFIX prepend PREFIX to installed program names
   --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
+  --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]
@@ -183,10 +146,8 @@
   --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
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
     exit 0 ;;
 
   -host | --host | --hos | --ho)
@@ -194,44 +155,6 @@
   -host=* | --host=* | --hos=* | --ho=*)
     host="$ac_optarg" ;;
 
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
   -nfp | --nfp | --nf)
     # Obsolete; use --without-fp.
     with_fp=no ;;
@@ -244,15 +167,6 @@
   | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
     no_recursion=yes ;;
 
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
     ac_prev=prefix ;;
   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
@@ -293,23 +207,6 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
   -site | --site | --sit)
     ac_prev=site ;;
   -site=* | --site=* | --sit=*)
@@ -320,13 +217,6 @@
   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
     srcdir="$ac_optarg" ;;
 
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
   -target | --target | --targe | --targ | --tar | --ta | --t)
     ac_prev=target ;;
   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
@@ -336,7 +226,7 @@
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.7"
+    echo "configure generated by autoconf version 2.4"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -382,7 +272,7 @@
   -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
     ;;
 
-  *)
+  *) 
     if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
       echo "configure: warning: $ac_option: invalid host type" 1>&2
     fi
@@ -501,12 +391,9 @@
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='echo $CPP $CPPFLAGS 1>&5;
-$CPP $CPPFLAGS'
-ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5;
-${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5;
-${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
+ac_cpp='$CPP $CPPFLAGS'
+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.
@@ -526,21 +413,34 @@
+
+
+CTK_VERSION=4.1
+CTK_MAJOR_VERSION=4
+CTK_MINOR_VERSION=1
+VERSION=${CTK_VERSION}
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
 
 # Check whether --with-ncurses or --without-ncurses was given.
-if test "${with_ncurses+set}" = set; then
-  withval="$with_ncurses"
+withval="$with_ncurses"
+if test -n "$withval"; then
   :
 else
   with_ncurses=no
 fi
 
 # Check whether --with-libdirs or --without-libdirs was given.
-if test "${with_libdirs+set}" = set; then
-  withval="$with_libdirs"
+withval="$with_libdirs"
+if test -n "$withval"; then
   :
 fi
 
 # Check whether --with-incdirs or --without-incdirs was given.
-if test "${with_incdirs+set}" = set; then
-  withval="$with_incdirs"
+withval="$with_incdirs"
+if test -n "$withval"; then
   :
 fi
 
@@ -610,17 +510,10 @@
     esac
   done
   IFS="$ac_save_ifs"
-
+  # As a last resort, use the slow shell script.
+  test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"
 fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
+  INSTALL="$ac_cv_path_install"
 fi
 echo "$ac_t""$INSTALL" 1>&6
 
@@ -712,7 +605,7 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 716 "configure"
+#line 609 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -726,7 +619,7 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 730 "configure"
+#line 623 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -759,7 +652,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 763 "configure"
+#line 656 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
@@ -777,7 +670,7 @@
 fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
+    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_hdr 1
 EOF
@@ -800,7 +693,7 @@
 
 echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 804 "configure"
+#line 697 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() { return 0; }
@@ -819,7 +712,7 @@
 
 if test $tk_ok = no; then
     cat > conftest.$ac_ext <<EOF
-#line 823 "configure"
+#line 716 "configure"
 #include "confdefs.h"
 #include <sys/select.h>
 EOF
@@ -852,7 +745,7 @@
 
 echo $ac_n "checking stdlib.h""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 856 "configure"
+#line 749 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -867,7 +760,7 @@
 rm -f conftest*
 
 cat > conftest.$ac_ext <<EOF
-#line 871 "configure"
+#line 764 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -881,7 +774,7 @@
 rm -f conftest*
 
 cat > conftest.$ac_ext <<EOF
-#line 885 "configure"
+#line 778 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -916,7 +809,7 @@
   ac_cv_c_cross=yes
 else
 cat > conftest.$ac_ext <<EOF
-#line 920 "configure"
+#line 813 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
@@ -929,16 +822,15 @@
 fi
 rm -fr conftest*
 fi
-
-echo "$ac_t""$ac_cv_c_cross" 1>&6
 cross_compiling=$ac_cv_c_cross
+echo "$ac_t""$ac_cv_c_cross" 1>&6
 
 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 942 "configure"
+#line 834 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -960,7 +852,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 964 "configure"
+#line 856 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -978,7 +870,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 982 "configure"
+#line 874 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -996,10 +888,10 @@
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
 if test "$cross_compiling" = yes; then
-  :
+  ac_cv_header_stdc=no
 else
 cat > conftest.$ac_ext <<EOF
-#line 1003 "configure"
+#line 895 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1020,7 +912,6 @@
 rm -fr conftest*
 fi
 fi
-
 echo "$ac_t""$ac_cv_header_stdc" 1>&6
 if test $ac_cv_header_stdc = yes; then
   cat >> confdefs.h <<\EOF
@@ -1034,7 +925,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1038 "configure"
+#line 929 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1065,7 +956,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1069 "configure"
+#line 960 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1096,7 +987,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1100 "configure"
+#line 991 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1127,7 +1018,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1131 "configure"
+#line 1022 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -1142,7 +1033,6 @@
 rm -f conftest*
 
 fi
-
 echo "$ac_t""$ac_cv_type_uid_t" 1>&6
 if test $ac_cv_type_uid_t = no; then
   cat >> confdefs.h <<\EOF
@@ -1164,14 +1054,13 @@
 got_it=no
 if test $with_ncurses = yes; then
     echo $ac_n "checking for -lncurses""... $ac_c" 1>&6
-ac_lib_var=`echo ncurses | tr '.-/+' '___p'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+if eval "test \"`echo '$''{'ac_cv_lib_ncurses'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1175 "configure"
+#line 1064 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1181,16 +1070,16 @@
 EOF
 if eval $ac_link; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_lib_ncurses=yes"
 else
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_lib_ncurses=no"
 fi
 rm -f conftest*
 LIBS="$ac_save_LIBS"
 
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if eval "test \"`echo '$ac_cv_lib_'ncurses`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -lncurses"; got_it=yes
 else
@@ -1199,14 +1088,13 @@
 
 else
     echo $ac_n "checking for -lcurses""... $ac_c" 1>&6
-ac_lib_var=`echo curses | tr '.-/+' '___p'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+if eval "test \"`echo '$''{'ac_cv_lib_curses'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1210 "configure"
+#line 1098 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1216,30 +1104,29 @@
 EOF
 if eval $ac_link; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_lib_curses=yes"
 else
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_lib_curses=no"
 fi
 rm -f conftest*
 LIBS="$ac_save_LIBS"
 
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if eval "test \"`echo '$ac_cv_lib_'curses`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -lcurses"; got_it=yes
 else
   echo "$ac_t""no" 1>&6
 unset ac_cv_lib_curses
 	    echo $ac_n "checking for -lcurses""... $ac_c" 1>&6
-ac_lib_var=`echo curses | tr '.-/+' '___p'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+if eval "test \"`echo '$''{'ac_cv_lib_curses'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses -ltermcap $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1243 "configure"
+#line 1130 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1249,16 +1136,16 @@
 EOF
 if eval $ac_link; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_lib_curses=yes"
 else
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_lib_curses=no"
 fi
 rm -f conftest*
 LIBS="$ac_save_LIBS"
 
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if eval "test \"`echo '$ac_cv_lib_'curses`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -lcurses -ltermcap"; got_it=yes
 else
@@ -1277,7 +1164,7 @@
 got_it=no
 if test $with_ncurses = yes; then
     cat > conftest.$ac_ext <<EOF
-#line 1281 "configure"
+#line 1168 "configure"
 #include "confdefs.h"
 #include <ncurses.h>
 EOF
@@ -1296,7 +1183,7 @@
 fi
 if test $got_it = no; then
     cat > conftest.$ac_ext <<EOF
-#line 1300 "configure"
+#line 1187 "configure"
 #include "confdefs.h"
 #include <curses.h>
 EOF
@@ -1326,13 +1213,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1330 "configure"
+#line 1217 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
-char $ac_func();
+char $ac_func(); 
 
 int main() { return 0; }
 int t() {
@@ -1360,7 +1247,7 @@
 fi
 if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+    ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_func 1
 EOF
@@ -1378,7 +1265,7 @@
 
 echo $ac_n "checking matherr support""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 1382 "configure"
+#line 1269 "configure"
 #include "confdefs.h"
 #include <math.h>
 int main() { return 0; }
@@ -1420,7 +1307,7 @@
 
 echo $ac_n "checking count field in FILE structures""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 1424 "configure"
+#line 1311 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1436,7 +1323,7 @@
 
 if test "$fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
-#line 1440 "configure"
+#line 1327 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1453,7 +1340,7 @@
 fi
 if test "$fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
-#line 1457 "configure"
+#line 1344 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1470,7 +1357,7 @@
 fi
 if test "$fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
-#line 1474 "configure"
+#line 1361 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1493,7 +1380,7 @@
 fi
 if test "$fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
-#line 1497 "configure"
+#line 1384 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1520,7 +1407,7 @@
 fi
 if test "$fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
-#line 1524 "configure"
+#line 1411 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() { return 0; }
@@ -1563,13 +1450,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1567 "configure"
+#line 1454 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
-char sin();
+char sin(); 
 
 int main() { return 0; }
 int t() {
@@ -1604,14 +1491,13 @@
 fi
 
 echo $ac_n "checking for -lieee""... $ac_c" 1>&6
-ac_lib_var=`echo ieee | tr '.-/+' '___p'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+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="-lieee  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1615 "configure"
+#line 1501 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1621,16 +1507,16 @@
 EOF
 if eval $ac_link; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_lib_ieee=yes"
 else
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_lib_ieee=no"
 fi
 rm -f conftest*
 LIBS="$ac_save_LIBS"
 
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if eval "test \"`echo '$ac_cv_lib_'ieee`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   LIBS="-lieee $LIBS"
 else
@@ -1648,13 +1534,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1652 "configure"
+#line 1538 "configure"
 #include "confdefs.h"
 /* 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();
+char gettimeofday(); 
 
 int main() { return 0; }
 int t() {
@@ -1699,13 +1585,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1703 "configure"
+#line 1589 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
-char memmove();
+char memmove(); 
 
 int main() { return 0; }
 int t() {
@@ -1753,7 +1639,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 1757 "configure"
+#line 1643 "configure"
 #include "confdefs.h"
 
 int main()
@@ -1799,13 +1685,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1803 "configure"
+#line 1689 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char BSDgettimeofday(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
-char BSDgettimeofday();
+char BSDgettimeofday(); 
 
 int main() { return 0; }
 int t() {
@@ -1843,7 +1729,7 @@
 
 echo $ac_n "checking for gettimeofday declaration""... $ac_c" 1>&6
 cat > conftest.$ac_ext <<EOF
-#line 1847 "configure"
+#line 1733 "configure"
 #include "confdefs.h"
 #include <sys/time.h>
 EOF
@@ -1876,13 +1762,13 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1880 "configure"
+#line 1766 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char strtod(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
-char strtod();
+char strtod(); 
 
 int main() { return 0; }
 int t() {
@@ -1922,7 +1808,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 1926 "configure"
+#line 1812 "configure"
 #include "confdefs.h"
 
 	extern double strtod();
@@ -1954,60 +1840,100 @@
 fi
 
 #--------------------------------------------------------------------
-#	Locate the Tcl header files and the Tcl library
-#	archive.
+#	See if there was a command-line option for where Tcl is;  if
+#	not, assume that its top-level directory is a sibling of ours.
 #--------------------------------------------------------------------
 
-echo $ac_n "checking for -ltcl""... $ac_c" 1>&6
-ac_lib_var=`echo tcl | tr '.-/+' '___p'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+# Check whether --with-tcl or --without-tcl was given.
+withval="$with_tcl"
+if test -n "$withval"; then
+  TCL_BIN_DIR=$withval
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-ltcl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1970 "configure"
-#include "confdefs.h"
+  TCL_BIN_DIR=`cd ../../tcl7.5/unix; pwd`
+fi
 
-int main() { return 0; }
-int t() {
-Tcl_Init()
-; return 0; }
-EOF
-if eval $ac_link; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+if test ! -d $TCL_BIN_DIR; then
+    { echo "configure: error: Tcl directory $TCL_BIN_DIR doesn't exist" 1>&2; exit 1; }
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
+#TCL_SRC_DIR=`cd $TCL_BIN_DIR; make topDirName`
 
+#--------------------------------------------------------------------
+#	Read in configuration information generated by Tcl for shared
+#	libraries, and arrange for it to be substituted into our
+#	Makefile.
+#--------------------------------------------------------------------
+
+file=$TCL_BIN_DIR/tclConfig.sh
+. $file
+CC=$TCL_CC
+SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
+SHLIB_LD=$TCL_SHLIB_LD
+SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS
+SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
+SHLIB_VERSION=$TCL_SHLIB_VERSION
+DL_LIBS=$TCL_DL_LIBS
+LD_FLAGS=$TCL_LD_FLAGS
+CTK_LD_SEARCH_FLAGS=$TCL_LD_SEARCH_FLAGS
+
+#--------------------------------------------------------------------
+#	The statements below define a collection of symbols related to
+#	building libtk as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+# Check whether --enable-shared or --disable-shared was given.
+enableval="$enable_shared"
+if test -n "$enableval"; then
+  ok=$enableval
+else
+  ok=no
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="-ltcl74 $LIBS"; got_it=yes
+
+if test "$ok" = "yes" -a "${SHLIB_SUFFIX}" != ""; then
+    CTK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
+    eval "CTK_LIB_FILE=libctk${TCL_SHARED_LIB_SUFFIX}"
+    MAKE_LIB="\${SHLIB_LD} -o ${CTK_LIB_FILE} \${OBJS} ${SHLIB_LD_LIBS}"
+    RANLIB=":"
 else
-  echo "$ac_t""no" 1>&6
-echo "configure: warning: couldn't find tcl library archive" 1>&2 
+    CTK_SHLIB_CFLAGS=""
+    eval "CTK_LIB_FILE=libctk${TCL_UNSHARED_LIB_SUFFIX}"
+    MAKE_LIB="ar cr ${CTK_LIB_FILE} \${OBJS}"
 fi
 
-cat > conftest.$ac_ext <<EOF
-#line 1998 "configure"
-#include "confdefs.h"
-#include "tcl.h"
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
+# Note:  in the following variable, it's important to use the absolute
+# path name of the Tcl directory rather than "..":  this is because
+# AIX remembers this path and will attempt to use it at run-time to look
+# up the Tcl library.
+
+if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
+    CTK_BUILD_LIB_SPEC="-L`pwd` -lctk${VERSION}"
+    CTK_LIB_SPEC="-L${exec_prefix}/lib -lctk${VERSION}"
 else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  echo "configure: warning: couldn't find tcl include file" 1>&2 
+    CTK_BUILD_LIB_SPEC="-L`pwd` -lctk`echo ${VERSION} | tr -d .`"
+    CTK_LIB_SPEC="-L${exec_prefix}/lib -lctk`echo ${VERSION} | tr -d .`"
 fi
-rm -f conftest*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 trap '' 1 2 15
 cat > confcache <<\EOF
@@ -2097,7 +2023,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.7"
+    echo "$CONFIG_STATUS generated by autoconf version 2.4"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -2108,13 +2034,11 @@
 ac_given_srcdir=$srcdir
 ac_given_INSTALL="$INSTALL"
 
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
+trap 'rm -fr `echo "Makefile ctkConfig.sh" | 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;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+# Protect against being on the right side of a sed subst in config.status. 
+sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
+ s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
 $ac_vpsub
 $extrasub
 s%@CFLAGS@%$CFLAGS%g
@@ -2126,30 +2050,39 @@
 s%@exec_prefix@%$exec_prefix%g
 s%@prefix@%$prefix%g
 s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
 s%@RANLIB@%$RANLIB%g
 s%@CWISH@%$CWISH%g
 s%@CC@%$CC%g
 s%@CPP@%$CPP%g
+s%@DL_LIBS@%$DL_LIBS%g
+s%@LD_FLAGS@%$LD_FLAGS%g
+s%@MATH_LIBS@%$MATH_LIBS%g
+s%@MAKE_LIB@%$MAKE_LIB%g
+s%@SHLIB_CFLAGS@%$SHLIB_CFLAGS%g
+s%@SHLIB_LD@%$SHLIB_LD%g
+s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g
+s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g
+s%@SHLIB_VERSION@%$SHLIB_VERSION%g
+s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g
+s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g
+s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g
+s%@TCL_VERSION@%$TCL_VERSION%g
+s%@CTK_BUILD_LIB_SPEC@%$CTK_BUILD_LIB_SPEC%g
+s%@CTK_LD_SEARCH_FLAGS@%$CTK_LD_SEARCH_FLAGS%g
+s%@CTK_LIB_FILE@%$CTK_LIB_FILE%g
+s%@CTK_LIB_SPEC@%$CTK_LIB_SPEC%g
+s%@CTK_MAJOR_VERSION@%$CTK_MAJOR_VERSION%g
+s%@CTK_MINOR_VERSION@%$CTK_MINOR_VERSION%g
+s%@CTK_SHLIB_CFLAGS@%$CTK_SHLIB_CFLAGS%g
+s%@CTK_VERSION@%$CTK_VERSION%g
 
 CEOF
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile ctkConfig.sh"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/configure.in ./configure.in
--- /src/FreeBSD/work/ctk/work/ctk4.0/configure.in	Wed Dec 20 10:07:00 1995
+++ ./configure.in	Wed Oct  2 21:06:03 1996
@@ -7,4 +7,17 @@
 
+
+CTK_VERSION=4.1
+CTK_MAJOR_VERSION=4
+CTK_MINOR_VERSION=1
+VERSION=${CTK_VERSION}
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
 AC_ARG_WITH(ncurses,
 	[  --with-ncurses   use ncurses library instead of curses],
 	, [with_ncurses=no])
@@ -279,13 +292,88 @@
 fi
 
 #--------------------------------------------------------------------
-#	Locate the Tcl header files and the Tcl library
-#	archive.
+#	See if there was a command-line option for where Tcl is;  if
+#	not, assume that its top-level directory is a sibling of ours.
+#--------------------------------------------------------------------
+
+AC_ARG_WITH(tcl, [  --with-tcl=DIR          use Tcl 7.5 binaries from DIR],
+	TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd ../../tcl7.5/unix; pwd`)
+if test ! -d $TCL_BIN_DIR; then
+    AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR doesn't exist)
+fi
+#TCL_SRC_DIR=`cd $TCL_BIN_DIR; make topDirName`
+
+#--------------------------------------------------------------------
+#	Read in configuration information generated by Tcl for shared
+#	libraries, and arrange for it to be substituted into our
+#	Makefile.
 #--------------------------------------------------------------------
 
-AC_CHECK_LIB(tcl, Tcl_Init, [LIBS="-ltcl $LIBS"; got_it=yes],
-    [AC_MSG_WARN(couldn't find tcl library archive)] )
-AC_TRY_CPP([#include "tcl.h"], ,
-    [AC_MSG_WARN(couldn't find tcl include file)] )
+file=$TCL_BIN_DIR/tclConfig.sh
+. $file
+CC=$TCL_CC
+SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
+SHLIB_LD=$TCL_SHLIB_LD
+SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS
+SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
+SHLIB_VERSION=$TCL_SHLIB_VERSION
+DL_LIBS=$TCL_DL_LIBS
+LD_FLAGS=$TCL_LD_FLAGS
+CTK_LD_SEARCH_FLAGS=$TCL_LD_SEARCH_FLAGS
+
+#--------------------------------------------------------------------
+#	The statements below define a collection of symbols related to
+#	building libtk as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+AC_ARG_ENABLE(shared,
+    [  --enable-shared         build libctk as a shared library],
+    [ok=$enableval], [ok=no])
+if test "$ok" = "yes" -a "${SHLIB_SUFFIX}" != ""; then
+    CTK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
+    eval "CTK_LIB_FILE=libctk${TCL_SHARED_LIB_SUFFIX}"
+    MAKE_LIB="\${SHLIB_LD} -o ${CTK_LIB_FILE} \${OBJS} ${SHLIB_LD_LIBS}"
+    RANLIB=":"
+else
+    CTK_SHLIB_CFLAGS=""
+    eval "CTK_LIB_FILE=libctk${TCL_UNSHARED_LIB_SUFFIX}"
+    MAKE_LIB="ar cr ${CTK_LIB_FILE} \${OBJS}"
+fi
+
+# Note:  in the following variable, it's important to use the absolute
+# path name of the Tcl directory rather than "..":  this is because
+# AIX remembers this path and will attempt to use it at run-time to look
+# up the Tcl library.
+
+if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
+    CTK_BUILD_LIB_SPEC="-L`pwd` -lctk${VERSION}"
+    CTK_LIB_SPEC="-L${exec_prefix}/lib -lctk${VERSION}"
+else
+    CTK_BUILD_LIB_SPEC="-L`pwd` -lctk`echo ${VERSION} | tr -d .`"
+    CTK_LIB_SPEC="-L${exec_prefix}/lib -lctk`echo ${VERSION} | tr -d .`"
+fi
+
+AC_SUBST(CC)
+AC_SUBST(DL_LIBS)
+AC_SUBST(LD_FLAGS)
+AC_SUBST(MATH_LIBS)
+AC_SUBST(MAKE_LIB)
+AC_SUBST(SHLIB_CFLAGS)
+AC_SUBST(SHLIB_LD)
+AC_SUBST(SHLIB_LD_LIBS)
+AC_SUBST(SHLIB_SUFFIX)
+AC_SUBST(SHLIB_VERSION)
+AC_SUBST(TCL_BIN_DIR)
+AC_SUBST(TCL_BUILD_LIB_SPEC)
+AC_SUBST(TCL_SRC_DIR)
+AC_SUBST(TCL_VERSION)
+AC_SUBST(CTK_BUILD_LIB_SPEC)
+AC_SUBST(CTK_LD_SEARCH_FLAGS)
+AC_SUBST(CTK_LIB_FILE)
+AC_SUBST(CTK_LIB_SPEC)
+AC_SUBST(CTK_MAJOR_VERSION)
+AC_SUBST(CTK_MINOR_VERSION)
+AC_SUBST(CTK_SHLIB_CFLAGS)
+AC_SUBST(CTK_VERSION)
 
-AC_OUTPUT(Makefile)
+AC_OUTPUT(Makefile ctkConfig.sh)
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/ctkDisplay.c ./ctkDisplay.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/ctkDisplay.c	Thu Dec 21 13:05:00 1995
+++ ./ctkDisplay.c	Thu Oct 17 21:22:03 1996
@@ -188,6 +188,9 @@
     FILE *outPtr;
     static int initialized = 0;
 
+    int fd;
+    Tcl_File tf;
+
     if (!initialized) {
 	register KeyCodeInfo *codePtr;
 	register Tcl_HashEntry *hPtr;
@@ -217,30 +220,33 @@
     dispPtr->name = (char *) ckalloc((unsigned) (length+1));
     strncpy(dispPtr->name, termName, length);
     dispPtr->name[length] = '\0';
-
+    
     if (strcmp(dispPtr->name, "tty") == 0) {
-	dispPtr->fd = 0;
+	dispPtr->chan = Tcl_GetStdChannel(TCL_STDIN);
     } else {
-	dispPtr->fd = HAVE_SET_TERM ? open(dispPtr->name, O_RDWR, 0) : -1;
-	if (dispPtr->fd == -1) {
+	dispPtr->chan = HAVE_SET_TERM ? Tcl_OpenFileChannel(interp, dispPtr->name, "r+", 0) : NULL;
+	if (dispPtr->chan == NULL) {
 	    Tcl_AppendResult(interp, "couldn't connect to device \"",
 		    dispPtr->name, "\"", (char *) NULL);
 	    goto error;
 	}
     }
-    if (!isatty(dispPtr->fd)) {
+    tf = Tcl_GetChannelFile(dispPtr->chan, TCL_READABLE);   
+    fd = (int) Tcl_GetFileInfo(tf, NULL);		
+	
+    if (!isatty(fd)) {
 	Tcl_AppendResult(interp, "display device \"", dispPtr->name,
 		"\" is not a tty", (char *) NULL);
 	goto error;
     }
-    if (dispPtr->fd == 0) {
+
+    if (fd == 0) {
 	dispPtr->inPtr = stdin;
 	outPtr = stdout;
     } else {
-	dispPtr->inPtr = fdopen(dispPtr->fd, "r+");
+	dispPtr->inPtr = fdopen(fd, "r+");
 	outPtr = dispPtr->inPtr;
     }
-
     dispPtr->display =
 	    (ClientData) newterm(dispPtr->type, outPtr, dispPtr->inPtr);
     SetDisplay(dispPtr);
@@ -249,7 +255,7 @@
     noecho();
     keypad(stdscr, TRUE);
 
-    Tk_CreateFileHandler(dispPtr->fd, TK_READABLE,
+    Tcl_CreateChannelHandler(dispPtr->chan, TCL_READABLE,
     	    TermFileProc, (ClientData) dispPtr);
     return TCL_OK;
 
@@ -285,7 +291,8 @@
     curs_set(1);
     endwin();
 
-    Tk_DeleteFileHandler(dispPtr->fd);
+    Tcl_DeleteChannelHandler(dispPtr->chan,
+    	    TermFileProc, (ClientData) dispPtr);
     if (dispPtr->inPtr != stdin) {
     	fclose(dispPtr->inPtr);
     }
@@ -401,7 +408,7 @@
 	}
     }
     curs_set(visible);
-    refresh();
+	refresh();
 }
 
 /*
@@ -471,7 +478,7 @@
  *
  * Results:
  *	Returns TK_FILE_HANDLED if any events were processed.
- *	Otherwise returns TK_READABLE.
+ *	Otherwise returns TCL_READABLE.
  *
  * Side effects:
  *	Dispatches events (invoking event handlers).
@@ -491,7 +498,7 @@
     KeyCodeInfo *codePtr;
     int key;
 
-    if (mask & TK_READABLE) {
+    if (mask & TCL_READABLE) {
 	SetDisplay(dispPtr);
 
 	key = getch();
@@ -644,9 +651,10 @@
     int y;			/* Y coordinate to draw at. */
     ClientData data;		/* Points at TextInfo structure. */
 {
-    char *charPtr = ((TextInfo*) data)->str + left - ((TextInfo*) data)->left;
+    char *charPtr;
     int x;
 
+    charPtr = ((TextInfo*) data)->str + left - ((TextInfo*) data)->left;
     Move(left, y);
     for (x=left; x < right; x++) {
 	PutChar(UCHAR(*charPtr++));
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/library/tclIndex ./library/tclIndex
--- /src/FreeBSD/work/ctk/work/ctk4.0/library/tclIndex	Fri Aug 25 14:46:00 1995
+++ ./library/tclIndex	Wed Oct  2 08:36:31 1996
@@ -57,7 +57,8 @@
 set auto_index(tkTextNextPara) "source $dir/text.tcl"
 set auto_index(tkTextScrollPages) "source $dir/text.tcl"
 set auto_index(tkTextTranspose) "source $dir/text.tcl"
-set auto_index(tkerror) "source $dir/tkerror.tcl"
+set auto_index(tkerror) "source $dir/bgerror.tcl"
+set auto_index(bgerror) "source $dir/bgerror.tcl"
 set auto_index(wm) "source $dir/wm.tcl"
 set auto_index(ctkWmPlace) "source $dir/wm.tcl"
 set auto_index(grab) "source $dir/wm.tcl"
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tk.h ./tk.h
--- /src/FreeBSD/work/ctk/work/ctk4.0/tk.h	Thu Dec 21 13:09:00 1995
+++ ./tk.h	Wed Oct  2 08:36:31 1996
@@ -358,10 +358,6 @@
  * of events are of interest:
  */
 
-#define TK_READABLE	1
-#define TK_WRITABLE	2
-#define TK_EXCEPTION	4
-
 /*
  * Special return value from Tk_FileProc2 procedures indicating that
  * an event was successfully processed.
@@ -374,12 +370,12 @@
  * for some kinds of events:
  */
 
-#define TK_DONT_WAIT		1
-#define TK_X_EVENTS		2
-#define TK_FILE_EVENTS		4
-#define TK_TIMER_EVENTS		8
-#define TK_IDLE_EVENTS		0x10
-#define TK_ALL_EVENTS		0x1e
+#define TK_DONT_WAIT		TCL_DONT_WAIT
+#define TK_X_EVENTS			TCL_WINDOW_EVENTS
+#define TK_FILE_EVENTS		TCL_FILE_EVENTS
+#define TK_TIMER_EVENTS		TCL_TIMER_EVENTS
+#define TK_IDLE_EVENTS		TCL_IDLE_EVENTS
+#define TK_ALL_EVENTS		TCL_ALL_EVENTS
 
 /*
  * Priority levels to pass to Tk_AddOption:
@@ -635,12 +631,9 @@
 
 EXTERN void		Tk_AddOption _ANSI_ARGS_((Tk_Window tkwin, char *name,
 			    char *value, int priority));
-EXTERN void		Tk_BackgroundError _ANSI_ARGS_((Tcl_Interp *interp));
 EXTERN void		Tk_BindEvent _ANSI_ARGS_((Tk_BindingTable bindingTable,
 			    XEvent *eventPtr, Tk_Window tkwin, int numObjects,
 			    ClientData *objectPtr));
-EXTERN void		Tk_CancelIdleCall _ANSI_ARGS_((Tk_IdleProc *idleProc,
-			    ClientData clientData));
 EXTERN int		Tk_ConfigureInfo _ANSI_ARGS_((Tcl_Interp *interp,
 			    Tk_Window tkwin, Tk_ConfigSpec *specs,
 			    char *widgRec, char *argvName, int flags));
@@ -693,10 +686,11 @@
 			    Tk_TimerToken token));
 EXTERN void		Tk_DestroyWindow _ANSI_ARGS_((Tk_Window tkwin));
 EXTERN char *		Tk_DisplayName _ANSI_ARGS_((Tk_Window tkwin));
+/* 
+ * Tk_DoOneEvent is a wrapper that refresh() displays and calls
+ * Tcl_DoOneEvent()
+ */ 
 EXTERN int		Tk_DoOneEvent _ANSI_ARGS_((int flags));
-EXTERN void		Tk_DoWhenIdle _ANSI_ARGS_((Tk_IdleProc *proc,
-			    ClientData clientData));
-EXTERN int		Tk_EventInit _ANSI_ARGS_((Tcl_Interp *interp));
 EXTERN void		Tk_EventuallyFree _ANSI_ARGS_((ClientData clientData,
 			    Tk_FreeProc *freeProc));
 EXTERN void		Tk_FreeOptions _ANSI_ARGS_((Tk_ConfigSpec *specs,
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkAppInit.c ./tkAppInit.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkAppInit.c	Thu Jul 13 13:19:00 1995
+++ ./tkAppInit.c	Wed Oct  9 07:46:36 1996
@@ -103,6 +107,6 @@
      * then no user-specific startup file will be run under any conditions.
      */
 
-    tcl_RcFileName = "~/.cwishrc";
+    Tcl_SetVar(interp, "tcl_rcFileName", "~/.cwishrc", TCL_GLOBAL_ONLY);
     return TCL_OK;
 }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkBind.c ./tkBind.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkBind.c	Tue Aug 22 14:42:00 1995
+++ ./tkBind.c	Wed Oct  2 08:36:31 1996
@@ -1005,7 +1005,7 @@
 		break;
 	    } else {
 		Tcl_AddErrorInfo(interp, "\n    (command bound to event)");
-		Tk_BackgroundError(interp);
+		Tcl_BackgroundError(interp);
 		break;
 	    }
 	}
@@ -1073,7 +1073,7 @@
     if (code != TCL_OK) {
 	Tcl_AddErrorInfo(interp,
 		"\n    (changing screen in event binding)");
-	Tk_BackgroundError(interp);
+	Tcl_BackgroundError(interp);
     }
 }
 
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkButton.c ./tkButton.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkButton.c	Sun Nov 19 10:07:00 1995
+++ ./tkButton.c	Wed Oct  2 08:36:32 1996
@@ -515,9 +515,9 @@
 		 * cleared the REDRAW_PENDING flag.
 		 */
 
-		Tk_CancelIdleCall(DisplayButton, (ClientData) butPtr);
+		Tcl_CancelIdleCall(DisplayButton, (ClientData) butPtr);
 		Ctk_DisplayFlush(Tk_Display(butPtr->tkwin));
-		Tk_Sleep(50);
+		Tcl_Sleep(50);
 	    }
 	}
     } else if ((c == 'i') && (strncmp(argv[1], "invoke", length) == 0)
@@ -759,7 +759,7 @@
      */
 
     if (Tk_IsMapped(butPtr->tkwin) && !(butPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr);
+	Tcl_DoWhenIdle(DisplayButton, (ClientData) butPtr);
 	butPtr->flags |= REDRAW_PENDING;
     }
 
@@ -901,7 +901,7 @@
     Button *butPtr = (Button *) clientData;
     if (eventPtr->type == CTK_EXPOSE_EVENT) {
 	if ((butPtr->tkwin != NULL) && !(butPtr->flags & REDRAW_PENDING)) {
-	    Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr);
+	    Tcl_DoWhenIdle(DisplayButton, (ClientData) butPtr);
 	    butPtr->flags |= REDRAW_PENDING;
 	}
     } else if (eventPtr->type == CTK_DESTROY_EVENT) {
@@ -911,7 +911,7 @@
 	    	    Tcl_GetCommandName(butPtr->interp, butPtr->widgetCmd));
 	}
 	if (butPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayButton, (ClientData) butPtr);
+	    Tcl_CancelIdleCall(DisplayButton, (ClientData) butPtr);
 	}
 	Tk_EventuallyFree((ClientData) butPtr, DestroyButton);
     } else if (eventPtr->type == CTK_FOCUS_EVENT) {
@@ -1127,7 +1127,7 @@
     redisplay:
     if ((butPtr->tkwin != NULL) && Tk_IsMapped(butPtr->tkwin)
 	    && !(butPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr);
+	Tcl_DoWhenIdle(DisplayButton, (ClientData) butPtr);
 	butPtr->flags |= REDRAW_PENDING;
     }
     return (char *) NULL;
@@ -1192,7 +1192,7 @@
 
     if ((butPtr->tkwin != NULL) && Tk_IsMapped(butPtr->tkwin)
 	    && !(butPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr);
+	Tcl_DoWhenIdle(DisplayButton, (ClientData) butPtr);
 	butPtr->flags |= REDRAW_PENDING;
     }
     return (char *) NULL;
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkEntry.c ./tkEntry.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkEntry.c	Wed Dec 20 13:32:00 1995
+++ ./tkEntry.c	Wed Oct  2 08:36:32 1996
@@ -1245,7 +1245,7 @@
 		    Tcl_GetCommandName(entryPtr->interp, entryPtr->widgetCmd));
 	}
 	if (entryPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayEntry, (ClientData) entryPtr);
+	    Tcl_CancelIdleCall(DisplayEntry, (ClientData) entryPtr);
 	}
 	Tk_EventuallyFree((ClientData) entryPtr, DestroyEntry);
     } else if (eventPtr->type == CTK_MAP_EVENT) {
@@ -1510,7 +1510,7 @@
 
     if (!(entryPtr->flags & REDRAW_PENDING)) {
 	entryPtr->flags |= REDRAW_PENDING;
-	Tk_DoWhenIdle(DisplayEntry, (ClientData) entryPtr);
+	Tcl_DoWhenIdle(DisplayEntry, (ClientData) entryPtr);
     }
 }
 
@@ -1603,7 +1603,7 @@
     if (code != TCL_OK) {
 	Tcl_AddErrorInfo(entryPtr->interp,
 		"\n    (horizontal scrolling command executed by entry)");
-	Tk_BackgroundError(entryPtr->interp);
+	Tcl_BackgroundError(entryPtr->interp);
     }
     Tcl_SetResult(entryPtr->interp, (char *) NULL, TCL_STATIC);
 }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkFocus.c ./tkFocus.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkFocus.c	Tue Jul 18 15:00:00 1995
+++ ./tkFocus.c	Wed Oct  2 08:36:32 1996
@@ -213,7 +213,7 @@
 	Ctk_SetCursor(winPtr, 0, 0);
 	event.type = CTK_FOCUS_EVENT;
 	event.window = winPtr;
-	Tk_HandleEvent(&event);
+ 	Tk_HandleEvent(&event);
     }
 }
 
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkFrame.c ./tkFrame.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkFrame.c	Wed Dec 20 14:41:00 1995
+++ ./tkFrame.c	Wed Oct  2 08:36:32 1996
@@ -476,7 +476,7 @@
 
     if (Tk_IsMapped(framePtr->tkwin)) {
 	if (!(framePtr->flags & REDRAW_PENDING)) {
-	    Tk_DoWhenIdle(DisplayFrame, (ClientData) framePtr);
+	    Tcl_DoWhenIdle(DisplayFrame, (ClientData) framePtr);
 	}
 	framePtr->flags |= REDRAW_PENDING|CLEAR_NEEDED;
     }
@@ -542,7 +542,7 @@
 
     if (eventPtr->type == CTK_EXPOSE_EVENT) {
 	if ((framePtr->tkwin != NULL) && !(framePtr->flags & REDRAW_PENDING)) {
-	    Tk_DoWhenIdle(DisplayFrame, (ClientData) framePtr);
+	    Tcl_DoWhenIdle(DisplayFrame, (ClientData) framePtr);
 	    framePtr->flags |= REDRAW_PENDING;
 	}
     } else if (eventPtr->type == CTK_DESTROY_EVENT) {
@@ -552,7 +552,7 @@
 		    Tcl_GetCommandName(framePtr->interp, framePtr->widgetCmd));
 	}
 	if (framePtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayFrame, (ClientData) framePtr);
+	    Tcl_CancelIdleCall(DisplayFrame, (ClientData) framePtr);
 	}
 	Tk_EventuallyFree((ClientData) framePtr, DestroyFrame);
     }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkGeometry.c ./tkGeometry.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkGeometry.c	Thu Oct 12 08:53:00 1995
+++ ./tkGeometry.c	Wed Oct  2 08:36:33 1996
@@ -383,7 +383,7 @@
 	    }
 	}
 	if (masterPtr->checkScheduled) {
-	    Tk_CancelIdleCall(MaintainCheckProc, (ClientData) masterPtr);
+	    Tcl_CancelIdleCall(MaintainCheckProc, (ClientData) masterPtr);
 	}
 	Tcl_DeleteHashEntry(hPtr);
 	ckfree((char *) masterPtr);
@@ -425,7 +425,7 @@
 	    || (eventPtr->type == CTK_UNMAP_EVENT)) {
 	if (!masterPtr->checkScheduled) {
 	    masterPtr->checkScheduled = 1;
-	    Tk_DoWhenIdle(MaintainCheckProc, (ClientData) masterPtr);
+	    Tcl_DoWhenIdle(MaintainCheckProc, (ClientData) masterPtr);
 	}
     } else if (eventPtr->type == CTK_DESTROY_EVENT) {
 	/*
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkInt.h ./tkInt.h
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkInt.h	Thu Aug 24 11:22:00 1995
+++ ./tkInt.h	Wed Oct  2 08:36:33 1996
@@ -36,7 +36,7 @@
     char *name;			/* Name of display device. Malloc-ed. */
     char *type;			/* Device type. Malloc-ed. */
     ClientData display;		/* Curses's info about display. */
-    int fd;			/* Input file descriptor for device. */
+    Tcl_Channel chan;		/* Input channel handler for device */
     FILE *inPtr;		/* Input file pointer for device. */
     TkWindow *cursorPtr;	/* Window to display cursor in. */
     int cursorX, cursorY;	/* Position in `cursWinPtr' to display
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkListbox.c ./tkListbox.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkListbox.c	Wed Dec 20 13:34:00 1995
+++ ./tkListbox.c	Wed Oct  2 08:36:33 1996
@@ -1207,7 +1207,7 @@
 		    Tcl_GetCommandName(listPtr->interp, listPtr->widgetCmd));
 	}
 	if (listPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayListbox, (ClientData) listPtr);
+	    Tcl_CancelIdleCall(DisplayListbox, (ClientData) listPtr);
 	}
 	Tk_EventuallyFree((ClientData) listPtr, DestroyListbox);
     } else if (eventPtr->type == CTK_MAP_EVENT) {
@@ -1379,7 +1379,7 @@
     if (listPtr->topIndex != index) {
 	listPtr->topIndex = index;
 	if (!(listPtr->flags & REDRAW_PENDING)) {
-	    Tk_DoWhenIdle(DisplayListbox, (ClientData) listPtr);
+	    Tcl_DoWhenIdle(DisplayListbox, (ClientData) listPtr);
 	    listPtr->flags |= REDRAW_PENDING;
 	}
 	listPtr->flags |= UPDATE_V_SCROLLBAR;
@@ -1566,7 +1566,7 @@
 	    || (listPtr->flags & REDRAW_PENDING)) {
 	return;
     }
-    Tk_DoWhenIdle(DisplayListbox, (ClientData) listPtr);
+    Tcl_DoWhenIdle(DisplayListbox, (ClientData) listPtr);
     listPtr->flags |= REDRAW_PENDING;
 }
 
@@ -1618,7 +1618,7 @@
     if (result != TCL_OK) {
 	Tcl_AddErrorInfo(listPtr->interp,
 		"\n    (vertical scrolling command executed by listbox)");
-	Tk_BackgroundError(listPtr->interp);
+	Tcl_BackgroundError(listPtr->interp);
     }
 }
 
@@ -1671,6 +1671,6 @@
     if (result != TCL_OK) {
 	Tcl_AddErrorInfo(listPtr->interp,
 		"\n    (horizontal scrolling command executed by listbox)");
-	Tk_BackgroundError(listPtr->interp);
+	Tcl_BackgroundError(listPtr->interp);
     }
 }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkMain.c ./tkMain.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkMain.c	Wed Dec 20 10:54:00 1995
+++ ./tkMain.c	Wed Oct  2 08:36:33 1996
@@ -52,6 +52,8 @@
 static Tcl_Interp *interp;	/* Interpreter for this application. */
 static Tcl_DString command;	/* Used to assemble lines of terminal input
 				 * into Tcl commands. */
+static Tcl_DString line;	/* Used to read the next line from the
+                                 * terminal input. */
 static int tty;			/* Non-zero means standard input is a
 				 * terminal-like device.  Zero means it's
 				 * a file. */
@@ -120,6 +122,7 @@
     char buf[20];
     int code;
     size_t length;
+    Tcl_Channel inChannel, outChannel, errChannel, chan;
 
     interp = Tcl_CreateInterp();
 #ifdef TCL_MEM_DEBUG
@@ -243,8 +246,13 @@
      */
 
     if ((*appInitProc)(interp) != TCL_OK) {
-	fprintf(stderr, "application specific initialization failed: %s\n",
-		interp->result);
+	errChannel = Tcl_GetStdChannel(TCL_STDERR);
+	if (errChannel) {
+            Tcl_Write(errChannel,
+		    "application-specific initialization failed: ", -1);
+            Tcl_Write(errChannel, interp->result, -1);
+            Tcl_Write(errChannel, "\n", 1);
+        }
 	goto error;
     }
 
@@ -253,7 +261,7 @@
      */
 
     if (fileName != NULL) {
-	code = Tcl_VarEval(interp, "source ", fileName, (char *) NULL);
+	code = Tcl_EvalFile(interp, fileName);
 	if (code != TCL_OK) {
 	    goto error;
 	}
@@ -266,24 +274,37 @@
 	 * input, and print a prompt if the input device is a terminal.
 	 */
 
-	if (tcl_RcFileName != NULL) {
+	fileName = Tcl_GetVar(interp, "tcl_rcFileName", TCL_GLOBAL_ONLY);
+	if (fileName != NULL) {
 	    Tcl_DString buffer;
 	    char *fullName;
-	    FILE *f;
-    
-	    fullName = Tcl_TildeSubst(interp, tcl_RcFileName, &buffer);
+
+	    fullName = Tcl_TranslateFileName(interp, fileName, &buffer);
 	    if (fullName == NULL) {
-		fprintf(stderr, "%s\n", interp->result);
+		errChannel = Tcl_GetStdChannel(TCL_STDERR);
+		if (errChannel) {
+                    Tcl_Write(errChannel, interp->result, -1);
+                    Tcl_Write(errChannel, "\n", 1);
+                }
 	    } else {
-		f = fopen(fullName, "r");
-		if (f != NULL) {
-		    code = Tcl_EvalFile(interp, fullName);
-		    if (code != TCL_OK) {
-			fprintf(stderr, "%s\n", interp->result);
-		    }
-		    fclose(f);
-		}
+
+                /*
+                 * NOTE: The following relies on O_RDONLY==0.
+                 */
+                
+                chan = Tcl_OpenFileChannel(interp, fullName, "r", 0);
+                if (chan != (Tcl_Channel) NULL) {
+                    Tcl_Close(NULL, chan);
+                    if (Tcl_EvalFile(interp, fullName) != TCL_OK) {
+			errChannel = Tcl_GetStdChannel(TCL_STDERR);
+			if (errChannel) {
+                            Tcl_Write(errChannel, interp->result, -1);
+                            Tcl_Write(errChannel, "\n", 1);
+                        }
+                    }
+                }
 	    }
+	    
 	    Tcl_DStringFree(&buffer);
 	}
 	if (tty &&
@@ -297,14 +318,22 @@
 		goto error;
 	    }
 	} else {
-	    Tk_CreateFileHandler(0, TK_READABLE, StdinProc, (ClientData) 0);
+       	    inChannel = Tcl_GetStdChannel(TCL_STDIN);
+	    if (inChannel) {
+	      Tcl_CreateChannelHandler(inChannel, TCL_READABLE, StdinProc,
+				       (ClientData) inChannel);
+	    }
 	    if (tty) {
-		Prompt(interp, 0);
+	      Prompt(interp, 0);
 	    }
 	}
     }
-    fflush(stdout);
+    outChannel = Tcl_GetStdChannel(TCL_STDOUT);
+    if (outChannel) {
+	Tcl_Flush(outChannel);
+    }
     Tcl_DStringInit(&command);
+    Tcl_DStringInit(&line);
     Tcl_ResetResult(interp);
 
     /*
@@ -324,12 +353,20 @@
     exit(1);
 
 error:
-    msg = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
-    if (msg == NULL) {
-	msg = interp->result;
+    /*
+     * The following statement guarantees that the errorInfo
+     * variable is set properly.
+     */
+
+    Tcl_AddErrorInfo(interp, "");
+    errChannel = Tcl_GetStdChannel(TCL_STDERR);
+    if (errChannel) {
+        Tcl_Write(errChannel, Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY),
+		-1);
+        Tcl_Write(errChannel, "\n", 1);
     }
-    fprintf(stderr, "%s\n", msg);
-    Tcl_Eval(interp, errorExitCmd);
+    Tcl_DeleteInterp(interp);
+    Tcl_Exit(1);
 }
 
 /*
@@ -358,56 +395,56 @@
     ClientData clientData;		/* Not used. */
     int mask;				/* Not used. */
 {
-#define BUFFER_SIZE 4000
-    char input[BUFFER_SIZE+1];
     static int gotPartial = 0;
     char *cmd;
     int code, count;
+    Tcl_Channel chan = (Tcl_Channel) clientData;
 
-    count = read(fileno(stdin), input, BUFFER_SIZE);
-    if (count <= 0) {
+    count = Tcl_Gets(chan, &line);
+
+    if (count < 0) {
 	if (!gotPartial) {
 	    if (tty) {
-		Tcl_Eval(interp, "exit");
-		exit(1);
+		Tcl_Exit(0);
 	    } else {
-		Tk_DeleteFileHandler(0);
+		Tcl_DeleteChannelHandler(chan, StdinProc, (ClientData) chan);
 	    }
 	    return;
 	} else {
 	    count = 0;
 	}
     }
-    cmd = Tcl_DStringAppend(&command, input, count);
-    if (count != 0) {
-	if ((input[count-1] != '\n') && (input[count-1] != ';')) {
-	    gotPartial = 1;
-	    goto prompt;
-	}
-	if (!Tcl_CommandComplete(cmd)) {
-	    gotPartial = 1;
-	    goto prompt;
-	}
+
+    (void) Tcl_DStringAppend(&command, Tcl_DStringValue(&line), -1);
+    cmd = Tcl_DStringAppend(&command, "\n", -1);
+    Tcl_DStringFree(&line);
+    
+    if (!Tcl_CommandComplete(cmd)) {
+        gotPartial = 1;
+        goto prompt;
     }
     gotPartial = 0;
 
     /*
-     * Disable the stdin file handler while evaluating the command;
+     * Disable the stdin channel handler while evaluating the command;
      * otherwise if the command re-enters the event loop we might
      * process commands from stdin before the current command is
      * finished.  Among other things, this will trash the text of the
      * command being evaluated.
      */
 
-    Tk_CreateFileHandler(0, 0, StdinProc, (ClientData) 0);
+    Tcl_CreateChannelHandler(chan, 0, StdinProc, (ClientData) chan);
     code = Tcl_RecordAndEval(interp, cmd, TCL_EVAL_GLOBAL);
-    Tk_CreateFileHandler(0, TK_READABLE, StdinProc, (ClientData) 0);
+    Tcl_CreateChannelHandler(chan, TCL_READABLE, StdinProc,
+	    (ClientData) chan);
     Tcl_DStringFree(&command);
     if (*interp->result != 0) {
 	if ((code != TCL_OK) || (tty)) {
 	    /*
 	     * The statement below used to call "printf", but that resulted
 	     * in core dumps under Solaris 2.3 if the result was very long.
+             *
+             * NOTE: This probably will not work under Windows either.
 	     */
 
 	    puts(interp->result);
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkMenu.c ./tkMenu.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkMenu.c	Sun Nov 19 10:10:00 1995
+++ ./tkMenu.c	Wed Oct  2 08:36:34 1996
@@ -501,7 +501,7 @@
 	}
 	if (!(menuPtr->flags & RESIZE_PENDING)) {
 	    menuPtr->flags |= RESIZE_PENDING;
-	    Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
+	    Tcl_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
 	}
     } else if ((c == 'e') && (length >= 7)
 	    && (strncmp(argv[1], "entrycget", length) == 0)) {
@@ -662,7 +662,7 @@
 		return result;
 	    }
 	    if (menuPtr->flags & RESIZE_PENDING) {
-		Tk_CancelIdleCall(ComputeMenuGeometry, (ClientData) menuPtr);
+		Tcl_CancelIdleCall(ComputeMenuGeometry, (ClientData) menuPtr);
 		ComputeMenuGeometry((ClientData) menuPtr);
 	    }
 	}
@@ -942,7 +942,7 @@
 
     if (!(menuPtr->flags & RESIZE_PENDING)) {
 	menuPtr->flags |= RESIZE_PENDING;
-	Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
+	Tcl_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
     }
 
     Tk_SetInternalBorder(menuPtr->tkwin, menuPtr->borderWidth);
@@ -994,7 +994,7 @@
     if (menuPtr->postedCascade == mePtr) {
 	if (PostSubmenu(menuPtr->interp, menuPtr, (MenuEntry *) NULL)
 		!= TCL_OK) {
-	    Tk_BackgroundError(menuPtr->interp);
+	    Tcl_BackgroundError(menuPtr->interp);
 	}
     }
 
@@ -1089,7 +1089,7 @@
 
     if (!(menuPtr->flags & RESIZE_PENDING)) {
 	menuPtr->flags |= RESIZE_PENDING;
-	Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
+	Tcl_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr);
     }
     return TCL_OK;
 }
@@ -1465,10 +1465,10 @@
 		    Tcl_GetCommandName(menuPtr->interp, menuPtr->widgetCmd));
 	}
 	if (menuPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayMenu, (ClientData) menuPtr);
+	    Tcl_CancelIdleCall(DisplayMenu, (ClientData) menuPtr);
 	}
 	if (menuPtr->flags & RESIZE_PENDING) {
-	    Tk_CancelIdleCall(ComputeMenuGeometry, (ClientData) menuPtr);
+	    Tcl_CancelIdleCall(ComputeMenuGeometry, (ClientData) menuPtr);
 	}
 	Tk_EventuallyFree((ClientData) menuPtr, DestroyMenu);
     } else if (eventPtr->type == CTK_FOCUS_EVENT) {
@@ -1786,7 +1786,7 @@
 	    || (menuPtr->flags & REDRAW_PENDING)) {
 	return;
     }
-    Tk_DoWhenIdle(DisplayMenu, (ClientData) menuPtr);
+    Tcl_DoWhenIdle(DisplayMenu, (ClientData) menuPtr);
     menuPtr->flags |= REDRAW_PENDING;
 }
 
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkMenubutton.c ./tkMenubutton.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkMenubutton.c	Tue Aug 22 08:15:00 1995
+++ ./tkMenubutton.c	Wed Oct  2 08:36:34 1996
@@ -473,7 +473,7 @@
      */
 
     if (Tk_IsMapped(mbPtr->tkwin) && !(mbPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
+	Tcl_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
 	mbPtr->flags |= REDRAW_PENDING;
     }
 
@@ -600,7 +600,7 @@
     MenuButton *mbPtr = (MenuButton *) clientData;
     if (eventPtr->type == CTK_EXPOSE_EVENT) {
 	if ((mbPtr->tkwin != NULL) && !(mbPtr->flags & REDRAW_PENDING)) {
-	    Tk_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
+	    Tcl_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
 	    mbPtr->flags |= REDRAW_PENDING;
 	}
     } else if (eventPtr->type == CTK_DESTROY_EVENT) {
@@ -610,7 +610,7 @@
 		Tcl_GetCommandName(mbPtr->interp, mbPtr->widgetCmd));
 	}
 	if (mbPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayMenuButton, (ClientData) mbPtr);
+	    Tcl_CancelIdleCall(DisplayMenuButton, (ClientData) mbPtr);
 	}
 	Tk_EventuallyFree((ClientData) mbPtr, DestroyMenuButton);
     } else if (eventPtr->type == CTK_FOCUS_EVENT) {
@@ -763,7 +763,7 @@
 
     if ((mbPtr->tkwin != NULL) && Tk_IsMapped(mbPtr->tkwin)
 	    && !(mbPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
+	Tcl_DoWhenIdle(DisplayMenuButton, (ClientData) mbPtr);
 	mbPtr->flags |= REDRAW_PENDING;
     }
     return (char *) NULL;
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkOption.c ./tkOption.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkOption.c	Tue Jul 18 13:57:00 1995
+++ ./tkOption.c	Wed Oct  2 08:36:34 1996
@@ -1,5 +1,5 @@
 /* 
- * tkOption.c (CTk) --
+ * tkOption.c (Ctk) --
  *
  *	This module contains procedures to manage the option
  *	database, which allows various strings to be associated
@@ -538,7 +538,7 @@
 	int priority;
 
 	if ((argc != 3) && (argc != 4)) {
-	    Tcl_AppendResult(interp, "wrong # args:  should be \"",
+	    Tcl_AppendResult(interp, "wrong # args: should be \"",
 		    argv[0], " readfile fileName ?priority?\"",
 		    (char *) NULL);
 	    return TCL_ERROR;
@@ -900,36 +900,45 @@
 				 * 0 and TK_MAX_PRIO. */
 {
     char *realName, *buffer;
-    int fileId, result;
-    struct stat statBuf;
+    int result, bufferSize;
+    Tcl_Channel chan;
     Tcl_DString newName;
 
-    realName = Tcl_TildeSubst(interp, fileName, &newName);
+    realName = Tcl_TranslateFileName(interp, fileName, &newName);
     if (realName == NULL) {
 	return TCL_ERROR;
     }
-    fileId = open(realName, O_RDONLY, 0);
+    chan = Tcl_OpenFileChannel(interp, realName, "r", 0);
     Tcl_DStringFree(&newName);
-    if (fileId < 0) {
-	Tcl_AppendResult(interp, "couldn't read file \"", fileName, "\"",
-		(char *) NULL);
+    if (chan == NULL) {
 	return TCL_ERROR;
     }
-    if (fstat(fileId, &statBuf) == -1) {
-	Tcl_AppendResult(interp, "couldn't stat file \"", fileName, "\"",
-		(char *) NULL);
-	close(fileId);
+
+    /*
+     * Compute size of file by seeking to the end of the file.  This will
+     * overallocate if we are performing CRLF translation.
+     */
+    
+    bufferSize = Tcl_Seek(chan, 0L, SEEK_END);
+    (void) Tcl_Seek(chan, 0L, SEEK_SET);
+
+    if (bufferSize < 0) {
+	Tcl_AppendResult(interp, "error seeking to end of file \"",
+		fileName, "\":", Tcl_PosixError(interp), (char *) NULL);
+	Tcl_Close(NULL, chan);
 	return TCL_ERROR;
+
     }
-    buffer = (char *) ckalloc((unsigned) statBuf.st_size+1);
-    if (read(fileId, buffer, (unsigned) statBuf.st_size) != statBuf.st_size) {
-	Tcl_AppendResult(interp, "error reading file \"", fileName, "\"",
-		(char *) NULL);
-	close(fileId);
+    buffer = (char *) ckalloc((unsigned) bufferSize+1);
+    bufferSize = Tcl_Read(chan, buffer, bufferSize);
+    if (bufferSize < 0) {
+	Tcl_AppendResult(interp, "error reading file \"", fileName, "\":",
+		Tcl_PosixError(interp), (char *) NULL);
+	Tcl_Close(NULL, chan);
 	return TCL_ERROR;
     }
-    close(fileId);
-    buffer[statBuf.st_size] = 0;
+    Tcl_Close(NULL, chan);
+    buffer[bufferSize] = 0;
     result = AddFromString(interp, tkwin, buffer, priority);
     ckfree(buffer);
     return result;
@@ -1326,7 +1335,7 @@
  * Side effects:
  *	Options are added to those for winPtr's main window.  If
  *	there exists a RESOURCE_MANAGER proprety for winPtr's
- *	display, that is used.  Otherwise, the .Xdefaults file in
+ *	display, that is used.  Otherwise, the .ctkdefaults file in
  *	the user's home directory is used.
  *
  *--------------------------------------------------------------
@@ -1338,23 +1347,13 @@
     TkWindow *winPtr;		/* Fetch option defaults for main window
 				 * associated with this. */
 {
-    char *home, *fileName;
     int result;
 
     /*
      * Try a .ctkdefaults file in the user's home
      * directory.
      */
-
-    home = getenv("HOME");
-    if (home == NULL) {
-	sprintf(interp->result, "no HOME envariable");
-	return TCL_ERROR;
-    }
-    fileName = (char *) ckalloc((unsigned) (strlen(home) + 20));
-    sprintf(fileName, "%s/.ctkdefaults", home);
-    result = ReadOptionFile(interp, (Tk_Window) winPtr, fileName,
+    result = ReadOptionFile(interp, (Tk_Window) winPtr, "~/.ctkdefaults",
 	    TK_USER_DEFAULT_PRIO);
-    ckfree(fileName);
     return result;
 }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkPack.c ./tkPack.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkPack.c	Wed Dec 20 12:39:00 1995
+++ ./tkPack.c	Wed Oct  2 08:53:18 1996
@@ -68,7 +68,7 @@
 /*
  * Flag values for Packer structures:
  *
- * REQUESTED_REPACK:		1 means a Tk_DoWhenIdle request
+ * REQUESTED_REPACK:		1 means a Tcl_DoWhenIdle request
  *				has already been made to repack
  *				all the slaves of this window.
  * FILLX:			1 means if frame allocated for window
@@ -363,7 +363,7 @@
 	    }
 	    if (!(masterPtr->flags & REQUESTED_REPACK)) {
 		masterPtr->flags |= REQUESTED_REPACK;
-		Tk_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
+		Tcl_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
 	    }
 	} else {
 	    masterPtr->flags |= DONT_PROPAGATE;
@@ -451,7 +451,7 @@
     packPtr = packPtr->masterPtr;
     if (!(packPtr->flags & REQUESTED_REPACK)) {
 	packPtr->flags |= REQUESTED_REPACK;
-	Tk_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
+	Tcl_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
     }
 }
 
@@ -493,7 +493,7 @@
  *
  * ArrangePacking --
  *
- *	This procedure is invoked (using the Tk_DoWhenIdle
+ *	This procedure is invoked (using the Tcl_DoWhenIdle
  *	mechanism) to re-layout a set of windows managed by
  *	the packer.  It is invoked at idle time so that a
  *	series of packer requests can be merged into a single
@@ -618,7 +618,7 @@
 	    && !(masterPtr->flags & DONT_PROPAGATE)) {
 	Tk_GeometryRequest(masterPtr->tkwin, maxWidth, maxHeight);
 	masterPtr->flags |= REQUESTED_REPACK;
-	Tk_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
+	Tcl_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
 	goto done;
     }
 
@@ -1213,7 +1213,7 @@
     }
     if (!(masterPtr->flags & REQUESTED_REPACK)) {
 	masterPtr->flags |= REQUESTED_REPACK;
-	Tk_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
+	Tcl_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
     }
     return TCL_OK;
 
@@ -1263,7 +1263,7 @@
     }
     if (!(masterPtr->flags & REQUESTED_REPACK)) {
 	masterPtr->flags |= REQUESTED_REPACK;
-	Tk_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
+	Tcl_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
     }
     if (masterPtr->abortPtr != NULL) {
 	*masterPtr->abortPtr = 1;
@@ -1329,14 +1329,14 @@
 	if ((packPtr->slavePtr != NULL)
 		&& !(packPtr->flags & REQUESTED_REPACK)) {
 	    packPtr->flags |= REQUESTED_REPACK;
-	    Tk_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
+	    Tcl_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
 	}
 	if (packPtr->doubleBw != 2*Tk_BorderWidth(packPtr->tkwin)) {
 	    if ((packPtr->masterPtr != NULL)
 		    && !(packPtr->masterPtr->flags & REQUESTED_REPACK)) {
 		packPtr->doubleBw = 2*Tk_BorderWidth(packPtr->tkwin);
 		packPtr->masterPtr->flags |= REQUESTED_REPACK;
-		Tk_DoWhenIdle(ArrangePacking, (ClientData) packPtr->masterPtr);
+		Tcl_DoWhenIdle(ArrangePacking, (ClientData) packPtr->masterPtr);
 	    }
 	}
     } else if (eventPtr->type == DestroyNotify) {
@@ -1357,7 +1357,7 @@
 	Tcl_DeleteHashEntry(Tcl_FindHashEntry(&packerHashTable,
 		(char *) packPtr->tkwin));
 	if (packPtr->flags & REQUESTED_REPACK) {
-	    Tk_CancelIdleCall(ArrangePacking, (ClientData) packPtr);
+	    Tcl_CancelIdleCall(ArrangePacking, (ClientData) packPtr);
 	}
 	packPtr->tkwin = NULL;
 	Tk_EventuallyFree((ClientData) packPtr, DestroyPacker);
@@ -1370,7 +1370,7 @@
 	if ((packPtr->slavePtr != NULL)
 		&& !(packPtr->flags & REQUESTED_REPACK)) {
 	    packPtr->flags |= REQUESTED_REPACK;
-	    Tk_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
+	    Tcl_DoWhenIdle(ArrangePacking, (ClientData) packPtr);
 	}
     } else if (eventPtr->type == UnmapNotify) {
 	Packer *packPtr2;
@@ -1722,7 +1722,7 @@
 	}
 	if (!(masterPtr->flags & REQUESTED_REPACK)) {
 	    masterPtr->flags |= REQUESTED_REPACK;
-	    Tk_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
+	    Tcl_DoWhenIdle(ArrangePacking, (ClientData) masterPtr);
 	}
     }
     return TCL_OK;
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkPlace.c ./tkPlace.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkPlace.c	Wed Dec 20 14:45:00 1995
+++ ./tkPlace.c	Wed Oct  2 08:53:18 1996
@@ -673,7 +673,7 @@
     }
     if (!(masterPtr->flags & PARENT_RECONFIG_PENDING)) {
 	masterPtr->flags |= PARENT_RECONFIG_PENDING;
-	Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
+	Tcl_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
     }
     return result;
 }
@@ -901,7 +901,7 @@
 	if ((masterPtr->slavePtr != NULL)
 		&& !(masterPtr->flags & PARENT_RECONFIG_PENDING)) {
 	    masterPtr->flags |= PARENT_RECONFIG_PENDING;
-	    Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
+	    Tcl_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
 	}
     } else if (eventPtr->type == DestroyNotify) {
 	for (slavePtr = masterPtr->slavePtr; slavePtr != NULL;
@@ -913,7 +913,7 @@
 	Tcl_DeleteHashEntry(Tcl_FindHashEntry(&masterTable,
 		(char *) masterPtr->tkwin));
 	if (masterPtr->flags & PARENT_RECONFIG_PENDING) {
-	    Tk_CancelIdleCall(RecomputePlacement, (ClientData) masterPtr);
+	    Tcl_CancelIdleCall(RecomputePlacement, (ClientData) masterPtr);
 	}
 	masterPtr->tkwin = NULL;
 	ckfree((char *) masterPtr);
@@ -926,7 +926,7 @@
 	if ((masterPtr->slavePtr != NULL)
 		&& !(masterPtr->flags & PARENT_RECONFIG_PENDING)) {
 	    masterPtr->flags |= PARENT_RECONFIG_PENDING;
-	    Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
+	    Tcl_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
 	}
     } else if (eventPtr->type == UnmapNotify) {
 	/*
@@ -1012,7 +1012,7 @@
     }
     if (!(masterPtr->flags & PARENT_RECONFIG_PENDING)) {
 	masterPtr->flags |= PARENT_RECONFIG_PENDING;
-	Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
+	Tcl_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr);
     }
 }
 
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkPort.h ./tkPort.h
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkPort.h	Wed Dec 20 10:04:00 1995
+++ ./tkPort.h	Wed Oct  2 08:36:35 1996
@@ -148,8 +148,10 @@
  * Tcl versions retry automatically if interrupted by signals.
  */
 
+#ifdef OLDTCL
 #define open(a,b,c) TclOpen(a,b,c)
 #define read(a,b,c) TclRead(a,b,c)
+#endif
 #define waitpid(a,b,c) TclWaitpid(a,b,c)
 #define write(a,b,c) TclWrite(a,b,c)
 EXTERN int	TclOpen _ANSI_ARGS_((char *path, int oflag, mode_t mode));
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkScrollbar.c ./tkScrollbar.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkScrollbar.c	Tue Jul 18 14:48:00 1995
+++ ./tkScrollbar.c	Wed Oct  2 08:36:35 1996
@@ -695,7 +695,7 @@
 		    scrollPtr->widgetCmd));
 	}
 	if (scrollPtr->flags & REDRAW_PENDING) {
-	    Tk_CancelIdleCall(DisplayScrollbar, (ClientData) scrollPtr);
+	    Tcl_CancelIdleCall(DisplayScrollbar, (ClientData) scrollPtr);
 	}
 	Tk_EventuallyFree((ClientData) scrollPtr, DestroyScrollbar);
     } else if (eventPtr->type == CTK_FOCUS_EVENT) {
@@ -849,7 +849,7 @@
 	return;
     }
     if ((scrollPtr->flags & REDRAW_PENDING) == 0) {
-	Tk_DoWhenIdle(DisplayScrollbar, (ClientData) scrollPtr);
+	Tcl_DoWhenIdle(DisplayScrollbar, (ClientData) scrollPtr);
 	scrollPtr->flags |= REDRAW_PENDING;
     }
 }
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkTextDisp.c ./tkTextDisp.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkTextDisp.c	Wed Dec 20 15:08:00 1995
+++ ./tkTextDisp.c	Wed Oct  2 08:36:36 1996
@@ -351,7 +351,7 @@
     FreeDLines(textPtr, dInfoPtr->dLinePtr, (DLine *) NULL, 1);
     Tcl_DeleteHashTable(&dInfoPtr->styleTable);
     if (dInfoPtr->flags & REDRAW_PENDING) {
-	Tk_CancelIdleCall(DisplayText, (ClientData) textPtr);
+	Tcl_CancelIdleCall(DisplayText, (ClientData) textPtr);
     }
     ckfree((char *) dInfoPtr);
 }
@@ -1602,7 +1602,7 @@
 
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
 	dInfoPtr->flags |= REDRAW_PENDING;
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     inset = textPtr->borderWidth;
     if ((x < inset) || (y < inset)
@@ -1663,7 +1663,7 @@
      */
 
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     dInfoPtr->flags |= REDRAW_PENDING|DINFO_OUT_OF_DATE;
 
@@ -1778,7 +1778,7 @@
      */
 
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     dInfoPtr->flags |= REDRAW_PENDING|DINFO_OUT_OF_DATE;
 
@@ -1879,7 +1879,7 @@
      */
 
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     dInfoPtr->flags |= REDRAW_PENDING|REDRAW_BORDERS|DINFO_OUT_OF_DATE;
 
@@ -2059,7 +2059,7 @@
 
     scheduleUpdate:
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     dInfoPtr->flags |= REDRAW_PENDING|DINFO_OUT_OF_DATE;
 }
@@ -2280,7 +2280,7 @@
     dInfoPtr->flags |= DINFO_OUT_OF_DATE;
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
 	dInfoPtr->flags |= REDRAW_PENDING;
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     return TCL_OK;
 }
@@ -2356,7 +2356,7 @@
     dInfoPtr->flags |= DINFO_OUT_OF_DATE;
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
 	dInfoPtr->flags |= REDRAW_PENDING;
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     return TCL_OK;
 }
@@ -2466,7 +2466,7 @@
 
     scheduleUpdate:
     if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-	Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+	Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
     }
     dInfoPtr->flags |= REDRAW_PENDING|DINFO_OUT_OF_DATE;
 }
@@ -2621,7 +2621,7 @@
 		} while (pixels > 0);
 	    }
 	    if (!(dInfoPtr->flags & REDRAW_PENDING)) {
-		Tk_DoWhenIdle(DisplayText, (ClientData) textPtr);
+		Tcl_DoWhenIdle(DisplayText, (ClientData) textPtr);
 	    }
 	    dInfoPtr->flags |= REDRAW_PENDING|DINFO_OUT_OF_DATE;
 	    break;
@@ -2699,7 +2699,7 @@
     if (code != TCL_OK) {
 	Tcl_AddErrorInfo(interp,
 		"\n    (horizontal scrolling command executed by text)");
-	Tk_BackgroundError(interp);
+	Tcl_BackgroundError(interp);
     }
 }
 
@@ -2783,7 +2783,7 @@
     if (code != TCL_OK) {
 	Tcl_AddErrorInfo(interp,
 		"\n    (vertical scrolling command executed by text)");
-	Tk_BackgroundError(interp);
+	Tcl_BackgroundError(interp);
     }
 }
 
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkWindow.c ./tkWindow.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkWindow.c	Thu Dec 21 13:09:00 1995
+++ ./tkWindow.c	Wed Oct  2 08:39:49 1996
@@ -73,7 +73,6 @@
      * Commands that are part of the intrinsics:
      */
 
-    {"after",		Tk_AfterCmd},
     {"bell",		Tk_BellCmd},
     {"bind",		Tk_BindCmd},
     {"bindtags",	Tk_BindtagsCmd},
@@ -82,7 +81,6 @@
     {"ctk_event",	Ctk_CtkEventCmd},
     {"destroy",		Tk_DestroyCmd},
     {"exit",		Tk_ExitCmd},
-    {"fileevent",		Tk_FileeventCmd},
     {"focus",		Tk_FocusCmd},
     /* {"grab",		Tk_GrabCmd}, */
     /* {"image",		Tk_ImageCmd}, */
@@ -382,7 +380,6 @@
 	Tcl_CreateCommand(interp, cmdPtr->name, cmdPtr->cmdProc,
 		(ClientData) winPtr, (void (*)()) NULL);
     }
-    Tcl_CallWhenDeleted(interp, TkEventCleanupProc, (ClientData) NULL);
 
     /*
      * Set variables for the intepreter.
@@ -1742,4 +1739,3 @@
     winPtr->nextPtr->priorPtr = winPtr->priorPtr;
     winPtr->priorPtr->nextPtr = winPtr->nextPtr;
 }
-
diff -ru /src/FreeBSD/work/ctk/work/ctk4.0/tkXEvent.c ./tkXEvent.c
--- /src/FreeBSD/work/ctk/work/ctk4.0/tkXEvent.c	Mon Jul 17 16:24:00 1995
+++ ./tkXEvent.c	Wed Oct  2 08:36:36 1996
@@ -435,6 +435,28 @@
 /*
  *--------------------------------------------------------------
  *
+ * Tk_DoOneEvent --
+ *
+ *	Flushes displays and the calls Tcl_DoOneEvent.
+ *
+ * Results:
+ *	See Tcl_DoOneEvent().
+ *
+ * Side effects:
+ *	Displays get flushed.
+ *
+ *--------------------------------------------------------------
+ */
+
+int Tk_DoOneEvent(int flags)
+{
+	Ctk_DisplayFlush(NULL);
+	return Tcl_DoOneEvent(flags);
+}
+
+/*
+ *--------------------------------------------------------------
+ *
  * Tk_MainLoop --
  *
  *	Call Tk_DoOneEvent over and over again in an infinite
