changeset 267:966663fcf606 r20-5b32

Import from CVS: tag r20-5b32
author cvs
date Mon, 13 Aug 2007 10:26:29 +0200
parents 18d185df8c54
children 6ced69ccd85f
files CHANGES-beta ChangeLog Makefile.in configure configure.in etc/editclient.sh etc/sample.emacs lib-src/ChangeLog lib-src/config.values.in lib-src/gnuclient.c lisp/ChangeLog lisp/about.el lisp/auto-show.el lisp/cus-face.el lisp/dump-paths.el lisp/dumped-lisp.el lisp/files.el lisp/find-paths.el lisp/frame.el lisp/itimer.el lisp/lisp.el lisp/loadup.el lisp/make-docfile.el lisp/minibuf.el lisp/msw-glyphs.el lisp/package-get-base.el lisp/packages.el lisp/setup-paths.el lisp/simple.el lisp/site-load.el lisp/startup.el lisp/update-elc.el lisp/wid-edit.el nt/ChangeLog nt/xemacs.mak src/ChangeLog src/ExternalShell.c src/Makefile.in.in src/callproc.c src/config.h.in src/console-msw.h src/console-stream.c src/console-tty.c src/device-msw.c src/device-x.c src/dired.c src/doc.c src/emacs.c src/event-Xt.c src/event-stream.c src/event-unixoid.c src/events.c src/fileio.c src/filelock.c src/frame.c src/frame.h src/free-hook.c src/glyphs-msw.c src/glyphs-msw.h src/glyphs-x.c src/hash.c src/imgproc.c src/input-method-xlib.c src/insdel.c src/keymap.c src/lisp.h src/lread.c src/m/powerpc.h src/minibuf.c src/objects-msw.c src/opaque.c src/paths.h.in src/process.c src/redisplay-msw.c src/redisplay-output.c src/redisplay.c src/s/cygwin32.h src/sheap.c src/symbols.c src/symsinit.h src/sysdll.c src/window.c version.sh
diffstat 83 files changed, 3989 insertions(+), 2737 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 10:25:39 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 10:26:29 2007 +0200
@@ -1,4 +1,20 @@
 							-*- indented-text -*-
+to 21.0 beta32 "Nachi"
+-- NT image support from Andy Piper
+-- Various fixes from Hrvoje Niksic
+-- Canna detection now looks for includes in /usr/local/canna
+-- load-gc renamed to pureload
+-- itimer.el-1.07 courtesy of Kyle Jones
+-- package-path searching fixes courtesy of Michael Sperber
+-- buffer overrun prevention patches from Hrvoje Niksic, and Jan Vroonhof
+-- various patches from Hrvoje Niksic
+-- Miscellaneous patches from Kyle Jones, Kirill Katsnelson,
+-- decode-path-internal added as lisp level interface to decode_path
+-- parse-colon-path restored to files.el
+-- miscellaneous startup fixes
+-- DLL fixes from William Perry
+-- PNG autodetectin update
+
 to 20.5 beta31 "Myotonic"
 -- modules directory with dll examples courtesy of William Perry
 -- Upside-down TIFF fix from Jareth Hein
--- a/ChangeLog	Mon Aug 13 10:25:39 2007 +0200
+++ b/ChangeLog	Mon Aug 13 10:26:29 2007 +0200
@@ -1,3 +1,41 @@
+1998-03-24  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-beta32 is released.
+
+1998-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* configure.in: Extended package path by version-specific
+	hierarchies.  Changed allow-site-lisp to inhibit-site-lisp.
+
+1998-03-22  SL Baur  <steve@altair.xemacs.org>
+
+	* Makefile.in (distclean): Remove packages and mule-packages if they
+	have been linked into place.
+
+1998-03-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* <Today>: The Big Path Searching Overhaul.
+
+	* Makefile.in, configure.in: Now pass all configure-specified paths
+	into the binary in a uniform way.
+
+1998-03-20  SL Baur  <steve@altair.xemacs.org>
+
+	* configure.in (have_libmcheck): Add test for glibc's malloc
+	checker.
+	- Fix HP/UX dynamic linking flag.
+
+1998-03-19  SL Baur  <steve@altair.xemacs.org>
+
+	* configure.in (quoted_arguments): Fix unquoted variable in
+	error-checking test.
+	- fix bogus substitution.
+	
+1998-03-17  SL Baur  <steve@altair.xemacs.org>
+
+	* configure.in: In -lpng test, look for png_set_strip_alpha.
+	Suggested by William M. Perry <wmperry@aventail.com>
+
 1998-03-16  SL Baur  <steve@altair.xemacs.org>
 
 	* XEmacs 21.0 beta31 is released.
--- a/Makefile.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/Makefile.in	Mon Aug 13 10:26:29 2007 +0200
@@ -152,10 +152,17 @@
 ## --datadir flag at configuration time.
 lispdir_user_defined=@lispdir_user_defined@
 
-## Directories XEmacs should search for lisp files specific
+## Where packages are found.
+packagepath=@packagepath@
+
+## This is set to 'yes' if the user specified the --package_path
+## at configuration time.
+packagepath_user_defined=@packagepath_user_defined@
+
+
+## Directory XEmacs should search for lisp files specific
 ## to this site (i.e. customizations), before consulting
-## ${lispdir}.  This should be a colon-separated list of
-## directories.
+## ${lispdir}.
 sitelispdir=@sitelispdir@
 
 ## Where XEmacs will search for its lisp files while
@@ -304,6 +311,14 @@
 	   then echo    '#define PATH_LOADSEARCH "${lispdir}"'; \
 	   else echo '/* #define PATH_LOADSEARCH "${lispdir}" */'; \
 	 fi; \
+	 if test "${packagepath_user_defined}" = "yes"; \
+	   then echo    '#define PATH_PACKAGEPATH "${packagepath}"'; \
+	   else echo '/* #define PATH_PACKAGEPATH "${packagepath}" */'; \
+	 fi; \
+	 if test "${sitelispdir_user_defined}" = "yes"; \
+	   then echo    '#define PATH_SITE "${sitelispdir}"'; \
+	   else echo '/* #define PATH_SITE "${sitelispdir}" */'; \
+	 fi; \
 	 if test "${archlibdir_user_defined}" = "yes"; \
 	   then echo    '#define PATH_EXEC "${archlibdir}"'; \
 	   else echo '/* #define PATH_EXEC "${archlibdir}" */'; \
@@ -571,7 +586,8 @@
 	  $(RM) $$d/Makefile $$d/Makefile.in ; \
 	done ; \
 	$(RM) core .sbinit Makefile lock/*; \
-	$(RM) lisp/finder-inf.el* Installation.el Installation.elc
+	$(RM) lisp/finder-inf.el* Installation.el Installation.elc; \
+	$(RM) packages mule-packages
 
 distclean: FRC.distclean
 	for d in $(SUBDIR); do (cd $$d && $(RECURSIVE_MAKE) $@); done
--- a/configure	Mon Aug 13 10:25:39 2007 +0200
+++ b/configure	Mon Aug 13 10:26:29 2007 +0200
@@ -61,7 +61,6 @@
 x_includes=NONE
 x_libraries=NONE
 CDPATH=.; export CDPATH
-package_path=NONE
 
 if test -n "$ZSH_VERSION"; then
   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
@@ -225,12 +224,16 @@
 lispdir='${datadir}/xemacs-${version}/lisp'
 lispdir_user_defined='no'
 sitelispdir='${datadir}/xemacs/site-lisp'
+sitelispdir_user_defined='no'
+packagepath='~/.xemacs::${datadir}/xemacs/mule-packages:${datadir}/xemacs-${version}/mule-packages:${datadir}/xemacs/packages:${datadir}/xemacs-${version}/packages'
+packagepath_user_defined='no'
 etcdir='${datadir}/xemacs-${version}/etc'
 etcdir_user_defined='no'
 lockdir='${statedir}/xemacs/lock'
 lockdir_user_defined='no'
 archlibdir='${libdir}/xemacs-${version}/${configuration}'
 archlibdir_user_defined='no'
+with_site_lisp='yes'
 with_menubars=''
 with_scrollbars=''
 with_dialogs=''
@@ -367,7 +370,7 @@
 	puresize	| \
 	cache_file	| \
 	native_sound_lib | \
-	package_path	| \
+	site_lisp	| \
 	x_includes	| \
 	x_libraries	| \
 	site_includes	| \
@@ -484,7 +487,7 @@
 
         	"error_checking" )
 	  	  	  
-	  for x in `echo "$val" | sed -e 's/,/ /'` ; do
+	  for x in `echo "$val" | sed -e 's/,/ /g'` ; do
 	    case "$x" in
 	      	      n | no | non | none ) new_default=no ;;
 	      a | al | all )	    new_default=yes ;;
@@ -508,7 +511,7 @@
 	    esac
 	    if test "$bogus_error_check" -o \
 	         \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
-		if test $error_check_default = yes ; then
+		if test "$error_check_default" = yes ; then
 		  types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'."
 		else
 		  types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'."
@@ -532,7 +535,7 @@
 				
 		prefix | exec_prefix | bindir | datadir | statedir | libdir | \
 	mandir | infodir | infopath | lispdir | etcdir | lockdir | pkgdir | \
-	 archlibdir | sitelispdir | docdir )
+	archlibdir | sitelispdir | docdir | packagepath )	
 	   	   if test "$valomitted" = "yes"; then
 	     if test "$#" = 0; then
 		 (echo "$progname: Usage error:"
@@ -545,9 +548,11 @@
 
                                                        case "$opt" in
              lispdir ) lispdir_user_defined=yes ;;
+             sitelispdir ) sitelispdir_user_defined=yes ;;
              etcdir  )  etcdir_user_defined=yes ;;
              infodir ) infodir_user_defined=yes ;;
              infopath ) infopath_user_defined=yes ;;
+             packagepath ) packagepath_user_defined=yes ;;
              datadir ) lispdir_user_defined=yes etcdir_user_defined=yes ;;
              statedir | lockdir ) lockdir_user_defined=yes ;;
              exec_prefix | libdir | archlibdir ) archlibdir_user_defined=yes ;;
@@ -642,7 +647,7 @@
 
 if test -z "$configuration"; then
   echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:646: checking "host system type"" >&5
+echo "configure:651: checking "host system type"" >&5
     if configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess | \
     sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'` ; then
     echo "$ac_t""$configuration" 1>&6
@@ -656,7 +661,7 @@
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:660: checking whether ln -s works" >&5
+echo "configure:665: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -833,7 +838,7 @@
 
 
 echo "checking "the configuration name"" 1>&6
-echo "configure:837: checking "the configuration name"" >&5
+echo "configure:842: checking "the configuration name"" >&5
 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
 if canonical=`$srcdir/config.sub "$internal_configuration"` ; then : ; else
   exit $?
@@ -1290,7 +1295,7 @@
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1294: checking for $ac_word" >&5
+echo "configure:1299: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1316,7 +1321,7 @@
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1320: checking for $ac_word" >&5
+echo "configure:1325: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1361,7 +1366,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1365: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1370: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1373,11 +1378,11 @@
 cross_compiling=no
 
 cat > conftest.$ac_ext <<EOF
-#line 1377 "configure"
+#line 1382 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1397,19 +1402,19 @@
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1401: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1406: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1406: checking whether we are using GNU C" >&5
+echo "configure:1411: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1413: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1423,7 +1428,7 @@
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1427: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1432: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1452,7 +1457,7 @@
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1456: checking for $ac_word" >&5
+echo "configure:1461: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1478,7 +1483,7 @@
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1482: checking for $ac_word" >&5
+echo "configure:1487: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1523,7 +1528,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1527: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1532: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1535,11 +1540,11 @@
 cross_compiling=no
 
 cat > conftest.$ac_ext <<EOF
-#line 1539 "configure"
+#line 1544 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1559,19 +1564,19 @@
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1563: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1568: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1568: checking whether we are using GNU C" >&5
+echo "configure:1573: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1585,7 +1590,7 @@
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1589: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1594: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1614,7 +1619,7 @@
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1618: checking for $ac_word" >&5
+echo "configure:1623: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1640,7 +1645,7 @@
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1644: checking for $ac_word" >&5
+echo "configure:1649: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1685,7 +1690,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1689: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1694: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1697,11 +1702,11 @@
 cross_compiling=no
 
 cat > conftest.$ac_ext <<EOF
-#line 1701 "configure"
+#line 1706 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1721,19 +1726,19 @@
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1725: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1730: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1730: checking whether we are using GNU C" >&5
+echo "configure:1735: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1747,7 +1752,7 @@
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1751: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1756: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1780,7 +1785,7 @@
 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1784: checking how to run the C preprocessor" >&5
+echo "configure:1789: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1793,13 +1798,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1797 "configure"
+#line 1802 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1803: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1810,13 +1815,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1814 "configure"
+#line 1819 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1839,9 +1844,9 @@
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1843: checking for AIX" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1845 "configure"
+echo "configure:1848: checking for AIX" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1850 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1868,9 +1873,9 @@
 
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:1872: checking for GNU libc" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1874 "configure"
+echo "configure:1877: checking for GNU libc" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1879 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -1882,7 +1887,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -1895,9 +1900,9 @@
 echo "$ac_t""$have_glibc" 1>&6
 
 echo $ac_n "checking whether we are using SunPro C""... $ac_c" 1>&6
-echo "configure:1899: checking whether we are using SunPro C" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1901 "configure"
+echo "configure:1904: checking whether we are using SunPro C" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1906 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1908,7 +1913,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   __sunpro_c=yes
 else
@@ -2184,7 +2189,7 @@
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2188: checking for dynodump" >&5
+echo "configure:2193: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2282,19 +2287,19 @@
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2286: checking "for runtime libraries flag"" >&5
+echo "configure:2291: checking "for runtime libraries flag"" >&5
   dash_r=""
   for try_dash_r in "-R" "-R " "-rpath "; do
     xe_check_libs="${try_dash_r}/no/such/file-or-directory"
     cat > conftest.$ac_ext <<EOF
-#line 2291 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+#line 2296 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -2381,10 +2386,10 @@
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:2385: checking for malloc_get_state" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2388 "configure"
+echo "configure:2390: checking for malloc_get_state" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2393 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -2407,7 +2412,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_get_state=yes"
 else
@@ -2427,10 +2432,10 @@
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:2431: checking for malloc_set_state" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2434 "configure"
+echo "configure:2436: checking for malloc_set_state" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2439 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -2453,7 +2458,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_set_state=yes"
 else
@@ -2473,16 +2478,16 @@
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:2477: checking whether __after_morecore_hook exists" >&5
-cat > conftest.$ac_ext <<EOF
-#line 2479 "configure"
+echo "configure:2482: checking whether __after_morecore_hook exists" >&5
+cat > conftest.$ac_ext <<EOF
+#line 2484 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:2486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -2544,10 +2549,12 @@
 fi
 
 
+
+
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2551: checking for $ac_word" >&5
+echo "configure:2558: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -2600,7 +2607,7 @@
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2604: checking for a BSD compatible install" >&5
+echo "configure:2611: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS="${IFS}:"
@@ -2651,7 +2658,7 @@
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2655: checking for $ac_word" >&5
+echo "configure:2662: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -2682,15 +2689,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2686: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2689 "configure"
+echo "configure:2693: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2696 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2694: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2723,15 +2730,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2727: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2730 "configure"
+echo "configure:2734: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2737 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2764,15 +2771,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2768: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2771 "configure"
+echo "configure:2775: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2778 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2802,10 +2809,10 @@
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2806: checking for sys/wait.h that is POSIX.1 compatible" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+echo "configure:2813: checking for sys/wait.h that is POSIX.1 compatible" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2816 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2821,7 +2828,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2845,10 +2852,10 @@
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2849: checking for ANSI C header files" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2852 "configure"
+echo "configure:2856: checking for ANSI C header files" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2859 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -2856,7 +2863,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2873,7 +2880,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 2877 "configure"
+#line 2884 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -2891,7 +2898,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 2895 "configure"
+#line 2902 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -2909,7 +2916,7 @@
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
 cat > conftest.$ac_ext <<EOF
-#line 2913 "configure"
+#line 2920 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2920,7 +2927,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:2924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:2931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   :
 else
@@ -2945,10 +2952,10 @@
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2949: checking whether time.h and sys/time.h may both be included" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2952 "configure"
+echo "configure:2956: checking whether time.h and sys/time.h may both be included" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2959 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2957,7 +2964,7 @@
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2968: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -2981,10 +2988,10 @@
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:2985: checking for sys_siglist declaration in signal.h or unistd.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2988 "configure"
+echo "configure:2992: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2995 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2996,7 +3003,7 @@
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3021,9 +3028,9 @@
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3025: checking for struct utimbuf" >&5
-cat > conftest.$ac_ext <<EOF
-#line 3027 "configure"
+echo "configure:3032: checking for struct utimbuf" >&5
+cat > conftest.$ac_ext <<EOF
+#line 3034 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3042,7 +3049,7 @@
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -3062,10 +3069,10 @@
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3066: checking return type of signal handlers" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3069 "configure"
+echo "configure:3073: checking return type of signal handlers" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3076 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3082,7 +3089,7 @@
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3104,10 +3111,10 @@
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3108: checking for size_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3111 "configure"
+echo "configure:3115: checking for size_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3118 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3138,10 +3145,10 @@
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3142: checking for pid_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3145 "configure"
+echo "configure:3149: checking for pid_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3152 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3172,10 +3179,10 @@
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3176: checking for uid_t in sys/types.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3179 "configure"
+echo "configure:3183: checking for uid_t in sys/types.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3186 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3211,10 +3218,10 @@
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3215: checking for mode_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3218 "configure"
+echo "configure:3222: checking for mode_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3225 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3245,10 +3252,10 @@
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3249: checking for off_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3252 "configure"
+echo "configure:3256: checking for off_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3259 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3280,9 +3287,9 @@
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3284: checking for struct timeval" >&5
-cat > conftest.$ac_ext <<EOF
-#line 3286 "configure"
+echo "configure:3291: checking for struct timeval" >&5
+cat > conftest.$ac_ext <<EOF
+#line 3293 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3298,7 +3305,7 @@
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3320,10 +3327,10 @@
 rm -f conftest*
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:3324: checking whether struct tm is in sys/time.h or time.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3327 "configure"
+echo "configure:3331: checking whether struct tm is in sys/time.h or time.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3334 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3331,7 +3338,7 @@
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -3355,10 +3362,10 @@
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3359: checking for tm_zone in struct tm" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3362 "configure"
+echo "configure:3366: checking for tm_zone in struct tm" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3369 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -3366,7 +3373,7 @@
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:3370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -3389,10 +3396,10 @@
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3393: checking for tzname" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+echo "configure:3400: checking for tzname" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3403 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -3402,7 +3409,7 @@
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:3406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -3428,10 +3435,10 @@
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3432: checking for working const" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3435 "configure"
+echo "configure:3439: checking for working const" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3442 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3480,7 +3487,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -3505,7 +3512,7 @@
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:3509: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:3516: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -3530,12 +3537,12 @@
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3534: checking whether byte ordering is bigendian" >&5
+echo "configure:3541: checking whether byte ordering is bigendian" >&5
 
 ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 3539 "configure"
+#line 3546 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3546,11 +3553,11 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 3554 "configure"
+#line 3561 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3561,7 +3568,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3572: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -3578,7 +3585,7 @@
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 3582 "configure"
+#line 3589 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -3591,7 +3598,7 @@
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -3617,10 +3624,10 @@
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:3621: checking size of short" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3624 "configure"
+echo "configure:3628: checking size of short" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3631 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -3631,7 +3638,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:3635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -3658,10 +3665,10 @@
   exit 1
 fi
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:3662: checking size of int" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3665 "configure"
+echo "configure:3669: checking size of int" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3672 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -3672,7 +3679,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:3676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -3693,10 +3700,10 @@
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:3697: checking size of long" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3700 "configure"
+echo "configure:3704: checking size of long" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3707 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -3707,7 +3714,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:3711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -3728,10 +3735,10 @@
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:3732: checking size of long long" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3735 "configure"
+echo "configure:3739: checking size of long long" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3742 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -3742,7 +3749,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:3746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -3763,10 +3770,10 @@
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:3767: checking size of void *" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3770 "configure"
+echo "configure:3774: checking size of void *" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3777 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -3777,7 +3784,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:3781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:3788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_sizeof_void_p=`cat conftestval`
 else
@@ -3799,7 +3806,7 @@
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:3803: checking for long file names" >&5
+echo "configure:3810: checking for long file names" >&5
 
 ac_cv_sys_long_file_names=yes
 # Test for long file names in all the places we know might matter:
@@ -3846,12 +3853,12 @@
 
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:3850: checking for sin in -lm" >&5
+echo "configure:3857: checking for sin in -lm" >&5
 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lm "
 cat > conftest.$ac_ext <<EOF
-#line 3855 "configure"
+#line 3862 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3862,7 +3869,7 @@
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:3866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3904,14 +3911,14 @@
 
 
 cat > conftest.$ac_ext <<EOF
-#line 3908 "configure"
+#line 3915 "configure"
 #include "confdefs.h"
 #include <math.h>
 int main() {
 return atanh(1.0) + asinh(1.0) + acosh(1.0); 
 ; return 0; }
 EOF
-if { (eval echo configure:3915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_INVERSE_HYPERBOLIC
@@ -3928,7 +3935,7 @@
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:3932: checking type of mail spool file locking" >&5
+echo "configure:3939: checking type of mail spool file locking" >&5
 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
 if   test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF
@@ -3952,12 +3959,12 @@
 
 
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:3956: checking for kstat_open in -lkstat" >&5
+echo "configure:3963: checking for kstat_open in -lkstat" >&5
 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkstat "
 cat > conftest.$ac_ext <<EOF
-#line 3961 "configure"
+#line 3968 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3968,7 +3975,7 @@
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:3972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4002,12 +4009,12 @@
 
 
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:4006: checking for kvm_read in -lkvm" >&5
+echo "configure:4013: checking for kvm_read in -lkvm" >&5
 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkvm "
 cat > conftest.$ac_ext <<EOF
-#line 4011 "configure"
+#line 4018 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4018,7 +4025,7 @@
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:4022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4052,12 +4059,12 @@
 
 
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4056: checking for cma_open in -lpthreads" >&5
+echo "configure:4063: checking for cma_open in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpthreads "
 cat > conftest.$ac_ext <<EOF
-#line 4061 "configure"
+#line 4068 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4068,7 +4075,7 @@
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4104,7 +4111,7 @@
 fi
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4108: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4115: checking whether the -xildoff compiler flag is required" >&5
 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
     then echo "$ac_t""no" 1>&6;
@@ -4115,7 +4122,7 @@
 
 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
   echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4119: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4126: checking for \"-z ignore\" linker flag" >&5
   case "`ld -h 2>&1`" in
     *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6
       ld_switch_site="-z ignore $ld_switch_site" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-z ignore\" to \$ld_switch_site"; fi ;;
@@ -4125,7 +4132,7 @@
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4129: checking "for specified window system"" >&5
+echo "configure:4136: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4155,7 +4162,7 @@
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:4159: checking for X" >&5
+echo "configure:4166: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4215,12 +4222,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4219 "configure"
+#line 4226 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4289,14 +4296,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4293 "configure"
+#line 4300 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -4405,17 +4412,17 @@
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:4409: checking whether -R must be followed by a space" >&5
+echo "configure:4416: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 4412 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:4419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+#line 4419 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:4426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -4431,14 +4438,14 @@
       else
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
 	cat > conftest.$ac_ext <<EOF
-#line 4435 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:4442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+#line 4442 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:4449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -4474,12 +4481,12 @@
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:4478: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:4485: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet "
 cat > conftest.$ac_ext <<EOF
-#line 4483 "configure"
+#line 4490 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4490,7 +4497,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:4494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4514,12 +4521,12 @@
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       
 echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:4518: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:4525: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet_stub "
 cat > conftest.$ac_ext <<EOF
-#line 4523 "configure"
+#line 4530 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4530,7 +4537,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:4534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4559,10 +4566,10 @@
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:4563: checking for gethostbyname" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4566 "configure"
+echo "configure:4570: checking for gethostbyname" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4573 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -4585,7 +4592,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -4606,12 +4613,12 @@
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:4610: checking for gethostbyname in -lnsl" >&5
+echo "configure:4617: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lnsl "
 cat > conftest.$ac_ext <<EOF
-#line 4615 "configure"
+#line 4622 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4622,7 +4629,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:4626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4652,10 +4659,10 @@
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:4656: checking for connect" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4659 "configure"
+echo "configure:4663: checking for connect" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4666 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -4678,7 +4685,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -4701,12 +4708,12 @@
 xe_msg_checking="for connect in -lsocket"
 test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:4705: checking "$xe_msg_checking"" >&5
+echo "configure:4712: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocket $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4710 "configure"
+#line 4717 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4717,7 +4724,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:4721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4741,10 +4748,10 @@
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:4745: checking for remove" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4748 "configure"
+echo "configure:4752: checking for remove" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4755 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -4767,7 +4774,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -4788,12 +4795,12 @@
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:4792: checking for remove in -lposix" >&5
+echo "configure:4799: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lposix "
 cat > conftest.$ac_ext <<EOF
-#line 4797 "configure"
+#line 4804 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4804,7 +4811,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:4808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4828,10 +4835,10 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:4832: checking for shmat" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4835 "configure"
+echo "configure:4839: checking for shmat" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4842 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -4854,7 +4861,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -4875,12 +4882,12 @@
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:4879: checking for shmat in -lipc" >&5
+echo "configure:4886: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lipc "
 cat > conftest.$ac_ext <<EOF
-#line 4884 "configure"
+#line 4891 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4891,7 +4898,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:4895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4925,12 +4932,12 @@
   #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
   
 echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:4929: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:4936: checking for IceConnectionNumber in -lICE" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lICE "
 cat > conftest.$ac_ext <<EOF
-#line 4934 "configure"
+#line 4941 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4941,7 +4948,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:4945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5095,7 +5102,7 @@
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5099: checking for X defines extracted by xmkmf" >&5
+echo "configure:5106: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5127,15 +5134,15 @@
 
     ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:5131: checking for X11/Intrinsic.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5134 "configure"
+echo "configure:5138: checking for X11/Intrinsic.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5141 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5146: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5159,12 +5166,12 @@
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5163: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5170: checking for XOpenDisplay in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 5168 "configure"
+#line 5175 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5175,7 +5182,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5200,12 +5207,12 @@
 xe_msg_checking="for XGetFontProperty in -lX11"
 test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5204: checking "$xe_msg_checking"" >&5
+echo "configure:5211: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 -b i486-linuxaout"
 cat > conftest.$ac_ext <<EOF
-#line 5209 "configure"
+#line 5216 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5216,7 +5223,7 @@
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5243,12 +5250,12 @@
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5247: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5254: checking for XShapeSelectInput in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXext "
 cat > conftest.$ac_ext <<EOF
-#line 5252 "configure"
+#line 5259 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5259,7 +5266,7 @@
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5282,12 +5289,12 @@
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5286: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5293: checking for XtOpenDisplay in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXt "
 cat > conftest.$ac_ext <<EOF
-#line 5291 "configure"
+#line 5298 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5298,7 +5305,7 @@
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5321,14 +5328,14 @@
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:5325: checking the version of X11 being used" >&5
+echo "configure:5332: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 5327 "configure"
+#line 5334 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     main(int c, char* v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:5332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:5339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -5352,15 +5359,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5356: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5359 "configure"
+echo "configure:5363: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5366 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5391,7 +5398,7 @@
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:5395: checking for XFree86" >&5
+echo "configure:5402: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
 	  -f "/etc/X11/XF86Config" -o \
@@ -5411,12 +5418,12 @@
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:5415: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:5422: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXmu "
 cat > conftest.$ac_ext <<EOF
-#line 5420 "configure"
+#line 5427 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5427,7 +5434,7 @@
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:5431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5466,19 +5473,19 @@
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:5470: checking for main in -lXbsd" >&5
+echo "configure:5477: checking for main in -lXbsd" >&5
 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXbsd "
 cat > conftest.$ac_ext <<EOF
-#line 5475 "configure"
+#line 5482 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5506,22 +5513,22 @@
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:5510: checking for MS-Windows" >&5
+echo "configure:5517: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:5513: checking for main in -lgdi32" >&5
+echo "configure:5520: checking for main in -lgdi32" >&5
 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdi32 "
 cat > conftest.$ac_ext <<EOF
-#line 5518 "configure"
+#line 5525 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5573,8 +5580,8 @@
     fi
     const_is_losing=no
     with_file_coding=yes
-    extra_objs="$extra_objs console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o" &&  if test "$extra_verbose" = "yes"; then
-   echo "    xemacs will be linked with \"console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o\""
+    extra_objs="$extra_objs console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o\""
  fi
   fi
 fi
@@ -5612,7 +5619,7 @@
 esac
 
 echo "checking for session-management option" 1>&6
-echo "configure:5616: checking for session-management option" >&5;
+echo "configure:5623: checking for session-management option" >&5;
 if test "$with_session" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SESSION
@@ -5627,15 +5634,15 @@
 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
 test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6
-echo "configure:5631: checking for X11/Xauth.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5634 "configure"
+echo "configure:5638: checking for X11/Xauth.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5641 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5658,12 +5665,12 @@
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:5662: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:5669: checking for XauGetAuthByAddr in -lXau" >&5
 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXau "
 cat > conftest.$ac_ext <<EOF
-#line 5667 "configure"
+#line 5674 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5674,7 +5681,7 @@
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:5678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5738,15 +5745,15 @@
       for dir in "" "Tt/" "desktop/" ; do
     ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6
-echo "configure:5742: checking for ${dir}tt_c.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5745 "configure"
+echo "configure:5749: checking for ${dir}tt_c.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5752 "configure"
 #include "confdefs.h"
 #include <${dir}tt_c.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5775,12 +5782,12 @@
 xe_msg_checking="for tt_message_create in -ltt"
 test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5779: checking "$xe_msg_checking"" >&5
+echo "configure:5786: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltt $extra_libs"
 cat > conftest.$ac_ext <<EOF
-#line 5784 "configure"
+#line 5791 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5791,7 +5798,7 @@
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:5795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5840,15 +5847,15 @@
 
 test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6
-echo "configure:5844: checking for Dt/Dt.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5847 "configure"
+echo "configure:5851: checking for Dt/Dt.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5854 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5871,12 +5878,12 @@
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:5875: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:5882: checking for DtDndDragStart in -lDtSvc" >&5
 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lDtSvc "
 cat > conftest.$ac_ext <<EOF
-#line 5880 "configure"
+#line 5887 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5887,7 +5894,7 @@
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:5891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5924,18 +5931,18 @@
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:5928: checking for LDAP" >&5
+echo "configure:5935: checking for LDAP" >&5
 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ldap.h""... $ac_c" 1>&6
-echo "configure:5931: checking for ldap.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5934 "configure"
+echo "configure:5938: checking for ldap.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5941 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5958,15 +5965,15 @@
  }
 test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for lber.h""... $ac_c" 1>&6
-echo "configure:5962: checking for lber.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5965 "configure"
+echo "configure:5969: checking for lber.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5972 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5970: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5991,12 +5998,12 @@
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5995: checking "$xe_msg_checking"" >&5
+echo "configure:6002: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber"
 cat > conftest.$ac_ext <<EOF
-#line 6000 "configure"
+#line 6007 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6007,7 +6014,7 @@
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6030,12 +6037,12 @@
  }
 test \( -z "$with_ldap" -o "$with_ldap" = "yes" \) -a  "$with_umich_ldap" = "no" && { 
 echo $ac_n "checking for ldap_set_option in -lldap10""... $ac_c" 1>&6
-echo "configure:6034: checking for ldap_set_option in -lldap10" >&5
+echo "configure:6041: checking for ldap_set_option in -lldap10" >&5
 ac_lib_var=`echo ldap10'_'ldap_set_option | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap10 "
 cat > conftest.$ac_ext <<EOF
-#line 6039 "configure"
+#line 6046 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6046,7 +6053,7 @@
 ldap_set_option()
 ; return 0; }
 EOF
-if { (eval echo configure:6050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6130,13 +6137,13 @@
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:6134: checking for X11 graphics libraries" >&5
+echo "configure:6141: checking for X11 graphics libraries" >&5
 
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:6137: checking for Xpm - no older than 3.4f" >&5
+echo "configure:6144: checking for Xpm - no older than 3.4f" >&5
   xe_check_libs=-lXpm
   test -z "$with_xpm" && { cat > conftest.$ac_ext <<EOF
-#line 6140 "configure"
+#line 6147 "configure"
 #include "confdefs.h"
 #include <X11/xpm.h>
   int main(int c, char **v) {
@@ -6146,7 +6153,7 @@
 		  0 ;
   }
 EOF
-if { (eval echo configure:6150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:6157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ./conftest foobar; xpm_status=$?;
     if test "$xpm_status" = "0"; then with_xpm=yes; else with_xpm=no; fi;
@@ -6184,15 +6191,15 @@
 
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:6188: checking for compface.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6191 "configure"
+echo "configure:6195: checking for compface.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6198 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6215,12 +6222,12 @@
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:6219: checking for UnGenFace in -lcompface" >&5
+echo "configure:6226: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<EOF
-#line 6224 "configure"
+#line 6231 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6231,7 +6238,7 @@
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:6235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6266,18 +6273,18 @@
   fi
 
     echo $ac_n "checking for giflib - no older than 3.1""... $ac_c" 1>&6
-echo "configure:6270: checking for giflib - no older than 3.1" >&5
+echo "configure:6277: checking for giflib - no older than 3.1" >&5
   test -z "$with_gif" && { ac_safe=`echo "gif_lib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gif_lib.h""... $ac_c" 1>&6
-echo "configure:6273: checking for gif_lib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6276 "configure"
+echo "configure:6280: checking for gif_lib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6283 "configure"
 #include "confdefs.h"
 #include <gif_lib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6300,12 +6307,12 @@
  }
   test -z "$with_gif" && { 
 echo $ac_n "checking for GetGifError in -lgif""... $ac_c" 1>&6
-echo "configure:6304: checking for GetGifError in -lgif" >&5
+echo "configure:6311: checking for GetGifError in -lgif" >&5
 ac_lib_var=`echo gif'_'GetGifError | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgif "
 cat > conftest.$ac_ext <<EOF
-#line 6309 "configure"
+#line 6316 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6316,7 +6323,7 @@
 GetGifError()
 ; return 0; }
 EOF
-if { (eval echo configure:6320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6352,15 +6359,15 @@
 
     test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6
-echo "configure:6356: checking for jpeglib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6359 "configure"
+echo "configure:6363: checking for jpeglib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6366 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6383,12 +6390,12 @@
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:6387: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:6394: checking for jpeg_destroy_decompress in -ljpeg" >&5
 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ljpeg "
 cat > conftest.$ac_ext <<EOF
-#line 6392 "configure"
+#line 6399 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6399,7 +6406,7 @@
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:6403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6435,15 +6442,15 @@
 
     test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for png.h""... $ac_c" 1>&6
-echo "configure:6439: checking for png.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6442 "configure"
+echo "configure:6446: checking for png.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6449 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6465,10 +6472,10 @@
 fi
  }
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:6469: checking for pow" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6472 "configure"
+echo "configure:6476: checking for pow" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6479 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -6491,7 +6498,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:6495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_pow=yes"
 else
@@ -6513,26 +6520,26 @@
   if test "$with_png" != "no"; then
     for extra_libs in "" "-lz" "-lgz"; do
       
-xe_msg_checking="for png_read_image in -lpng"
+xe_msg_checking="for png_set_strip_alpha in -lpng"
 test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6520: checking "$xe_msg_checking"" >&5
-ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
+echo "configure:6527: checking "$xe_msg_checking"" >&5
+ac_lib_var=`echo png'_'png_set_strip_alpha | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng $extra_libs"
 cat > conftest.$ac_ext <<EOF
-#line 6525 "configure"
+#line 6532 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
-char png_read_image();
-
-int main() {
-png_read_image()
-; return 0; }
-EOF
-if { (eval echo configure:6536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+char png_set_strip_alpha();
+
+int main() {
+png_set_strip_alpha()
+; return 0; }
+EOF
+if { (eval echo configure:6543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6574,12 +6581,12 @@
 xe_msg_checking="for TIFFReadScanline in -ltiff"
 test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6578: checking "$xe_msg_checking"" >&5
+echo "configure:6585: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo tiff'_'TIFFReadScanline | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff $extra_libs"
 cat > conftest.$ac_ext <<EOF
-#line 6583 "configure"
+#line 6590 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6590,7 +6597,7 @@
 TIFFReadScanline()
 ; return 0; }
 EOF
-if { (eval echo configure:6594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6628,12 +6635,12 @@
     
     
 echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6
-echo "configure:6632: checking for XawScrollbarSetThumb in -lXaw" >&5
+echo "configure:6639: checking for XawScrollbarSetThumb in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 6637 "configure"
+#line 6644 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6644,7 +6651,7 @@
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:6648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6668,15 +6675,15 @@
                     
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:6672: checking for Xm/Xm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6675 "configure"
+echo "configure:6679: checking for Xm/Xm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6682 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6687: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6693,12 +6700,12 @@
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:6697: checking for XmStringFree in -lXm" >&5
+echo "configure:6704: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 6702 "configure"
+#line 6709 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6709,7 +6716,7 @@
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:6713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7000,7 +7007,7 @@
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:7004: checking for Mule-related features" >&5
+echo "configure:7011: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -7025,15 +7032,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7029: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7032 "configure"
+echo "configure:7036: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7039 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7064,12 +7071,12 @@
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:7068: checking for strerror in -lintl" >&5
+echo "configure:7075: checking for strerror in -lintl" >&5
 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lintl "
 cat > conftest.$ac_ext <<EOF
-#line 7073 "configure"
+#line 7080 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7080,7 +7087,7 @@
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:7084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7113,19 +7120,19 @@
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:7117: checking for Mule input methods" >&5
+echo "configure:7124: checking for Mule input methods" >&5
       test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
   case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:7121: checking for XIM" >&5
+echo "configure:7128: checking for XIM" >&5
     
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:7124: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:7131: checking for XmImMbLookupString in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 7129 "configure"
+#line 7136 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7136,7 +7143,7 @@
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:7140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7201,15 +7208,15 @@
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:7205: checking for XFontSet" >&5
+echo "configure:7212: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:7208: checking for XmbDrawString in -lX11" >&5
+echo "configure:7215: checking for XmbDrawString in -lX11" >&5
 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 7213 "configure"
+#line 7220 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7220,7 +7227,7 @@
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:7224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7260,15 +7267,15 @@
     test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
   test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6
-echo "configure:7264: checking for wnn/jllib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7267 "configure"
+echo "configure:7271: checking for wnn/jllib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7274 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7293,10 +7300,10 @@
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7297: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7300 "configure"
+echo "configure:7304: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7307 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7319,7 +7326,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7348,12 +7355,12 @@
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:7352: checking for crypt in -lcrypt" >&5
+echo "configure:7359: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcrypt "
 cat > conftest.$ac_ext <<EOF
-#line 7357 "configure"
+#line 7364 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7364,7 +7371,7 @@
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:7368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7398,12 +7405,12 @@
   fi
     test -z "$with_wnn" && { 
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:7402: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:7409: checking for jl_dic_list_e in -lwnn" >&5
 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn "
 cat > conftest.$ac_ext <<EOF
-#line 7407 "configure"
+#line 7414 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7414,7 +7421,7 @@
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:7418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7451,12 +7458,12 @@
  fi
     
 echo $ac_n "checking for jl_fi_dic_list in -lwnn""... $ac_c" 1>&6
-echo "configure:7455: checking for jl_fi_dic_list in -lwnn" >&5
+echo "configure:7462: checking for jl_fi_dic_list in -lwnn" >&5
 ac_lib_var=`echo wnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn "
 cat > conftest.$ac_ext <<EOF
-#line 7460 "configure"
+#line 7467 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7467,7 +7474,7 @@
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:7471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7497,17 +7504,90 @@
 
   fi
 
-    test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
+    canna_includes_found=no
+  if test "$with_canna" != "no"; then
+    ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
+echo "configure:7512: checking for canna/jrkanji.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7515 "configure"
+#include "confdefs.h"
+#include <canna/jrkanji.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  canna_includes_found=yes
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  fi
+  if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
+      -d "/usr/local/canna/include"; then
+    save_c_switch_site="$c_switch_site"
+    c_switch_site="$c_switch_site -I/usr/local/canna/include"
+    ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
+echo "configure:7547: checking for canna/jrkanji.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7550 "configure"
+#include "confdefs.h"
+#include <canna/jrkanji.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  canna_includes_found=yes
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+    if test "$canna_includes_found" != "yes"; then
+      c_switch_site="$save_c_switch_site"
+      with_canna="no"
+    fi
+  fi
+
+  test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:7503: checking for canna/RK.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7506 "configure"
+echo "configure:7583: checking for canna/RK.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7586 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7511: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7591: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7530,12 +7610,12 @@
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:7534: checking for RkBgnBun in -lRKC" >&5
+echo "configure:7614: checking for RkBgnBun in -lRKC" >&5
 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lRKC "
 cat > conftest.$ac_ext <<EOF
-#line 7539 "configure"
+#line 7619 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7546,7 +7626,7 @@
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:7550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7569,12 +7649,12 @@
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:7573: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:7653: checking for jrKanjiControl in -lcanna" >&5
 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcanna "
 cat > conftest.$ac_ext <<EOF
-#line 7578 "configure"
+#line 7658 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7585,7 +7665,7 @@
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:7589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7634,12 +7714,12 @@
   libs_x="-lXm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXm\" to \$libs_x"; fi
     
 echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6
-echo "configure:7638: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:7718: checking for layout_object_getvalue in -li18n" >&5
 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -li18n "
 cat > conftest.$ac_ext <<EOF
-#line 7643 "configure"
+#line 7723 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7650,7 +7730,7 @@
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:7654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7723,10 +7803,10 @@
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7727: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7730 "configure"
+echo "configure:7807: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7810 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7749,7 +7829,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7786,10 +7866,10 @@
     for ac_func in realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7790: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7793 "configure"
+echo "configure:7870: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7873 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7812,7 +7892,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7845,16 +7925,16 @@
 esac
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:7849: checking whether netdb declares h_errno" >&5
-cat > conftest.$ac_ext <<EOF
-#line 7851 "configure"
+echo "configure:7929: checking whether netdb declares h_errno" >&5
+cat > conftest.$ac_ext <<EOF
+#line 7931 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:7858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -7874,16 +7954,16 @@
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:7878: checking for sigsetjmp" >&5
-cat > conftest.$ac_ext <<EOF
-#line 7880 "configure"
+echo "configure:7958: checking for sigsetjmp" >&5
+cat > conftest.$ac_ext <<EOF
+#line 7960 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:7887: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -7903,11 +7983,11 @@
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:7907: checking whether localtime caches TZ" >&5
+echo "configure:7987: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 7911 "configure"
+#line 7991 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -7942,7 +8022,7 @@
   exit (0);
 }
 EOF
-if { (eval echo configure:7946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -7971,9 +8051,9 @@
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday cannot accept two arguments""... $ac_c" 1>&6
-echo "configure:7975: checking whether gettimeofday cannot accept two arguments" >&5
-cat > conftest.$ac_ext <<EOF
-#line 7977 "configure"
+echo "configure:8055: checking whether gettimeofday cannot accept two arguments" >&5
+cat > conftest.$ac_ext <<EOF
+#line 8057 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -7995,7 +8075,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""no" 1>&6
 else
@@ -8017,19 +8097,19 @@
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:8021: checking for inline" >&5
+echo "configure:8101: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 8026 "configure"
+#line 8106 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:8033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8113: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -8079,17 +8159,17 @@
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:8083: checking for working alloca.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8086 "configure"
+echo "configure:8163: checking for working alloca.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8166 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:8093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -8113,10 +8193,10 @@
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:8117: checking for alloca" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8120 "configure"
+echo "configure:8197: checking for alloca" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8200 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -8139,7 +8219,7 @@
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:8143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -8178,10 +8258,10 @@
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:8182: checking whether alloca needs Cray hooks" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8185 "configure"
+echo "configure:8262: checking whether alloca needs Cray hooks" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8265 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -8205,10 +8285,10 @@
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8209: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8212 "configure"
+echo "configure:8289: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8292 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8231,7 +8311,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:8235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8261,10 +8341,10 @@
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:8265: checking stack direction for C alloca" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8268 "configure"
+echo "configure:8345: checking stack direction for C alloca" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8348 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -8283,7 +8363,7 @@
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:8287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -8311,15 +8391,15 @@
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:8315: checking for vfork.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8318 "configure"
+echo "configure:8395: checking for vfork.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8398 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8347,10 +8427,10 @@
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:8351: checking for working vfork" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8354 "configure"
+echo "configure:8431: checking for working vfork" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8434 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -8445,7 +8525,7 @@
   }
 }
 EOF
-if { (eval echo configure:8449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
@@ -8470,10 +8550,10 @@
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:8474: checking for working strcoll" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8477 "configure"
+echo "configure:8554: checking for working strcoll" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8557 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -8483,7 +8563,7 @@
 	strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:8487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
@@ -8510,10 +8590,10 @@
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8514: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8517 "configure"
+echo "configure:8594: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8597 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8536,7 +8616,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:8540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8564,10 +8644,10 @@
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:8568: checking whether getpgrp takes no argument" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8571 "configure"
+echo "configure:8648: checking whether getpgrp takes no argument" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8651 "configure"
 #include "confdefs.h"
 
 /*
@@ -8622,7 +8702,7 @@
 }
 
 EOF
-if { (eval echo configure:8626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
@@ -8648,10 +8728,10 @@
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:8652: checking for working mmap" >&5
+echo "configure:8732: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 8655 "configure"
+#line 8735 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -8684,7 +8764,7 @@
   return 1;
 }
 EOF
-if { (eval echo configure:8688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
+if { (eval echo configure:8768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5
 then
   have_mmap=yes
 else
@@ -8718,15 +8798,15 @@
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:8722: checking for termios.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8725 "configure"
+echo "configure:8802: checking for termios.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8805 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8769,15 +8849,15 @@
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termio.h""... $ac_c" 1>&6
-echo "configure:8773: checking for termio.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8776 "configure"
+echo "configure:8853: checking for termio.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8856 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8809,10 +8889,10 @@
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:8813: checking for socket" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8816 "configure"
+echo "configure:8893: checking for socket" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8896 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -8835,7 +8915,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:8839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -8850,15 +8930,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6
-echo "configure:8854: checking for netinet/in.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8857 "configure"
+echo "configure:8934: checking for netinet/in.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8937 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8875,15 +8955,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6
-echo "configure:8879: checking for arpa/inet.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8882 "configure"
+echo "configure:8959: checking for arpa/inet.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8962 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8967: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8908,9 +8988,9 @@
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:8912: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:8992: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 8914 "configure"
+#line 8994 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -8921,7 +9001,7 @@
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:8925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -8939,9 +9019,9 @@
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:8943: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:9023: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 8945 "configure"
+#line 9025 "configure"
 #include "confdefs.h"
 
 #include <netinet/in.h>
@@ -8950,7 +9030,7 @@
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:8954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
@@ -8981,10 +9061,10 @@
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:8985: checking for msgget" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8988 "configure"
+echo "configure:9065: checking for msgget" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9068 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -9007,7 +9087,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_msgget=yes"
 else
@@ -9022,15 +9102,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:9026: checking for sys/ipc.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9029 "configure"
+echo "configure:9106: checking for sys/ipc.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9109 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9047,15 +9127,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6
-echo "configure:9051: checking for sys/msg.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9054 "configure"
+echo "configure:9131: checking for sys/msg.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9134 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9093,15 +9173,15 @@
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:9097: checking for dirent.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9100 "configure"
+echo "configure:9177: checking for dirent.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9180 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9105: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9128,15 +9208,15 @@
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6
-echo "configure:9132: checking for sys/dir.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9135 "configure"
+echo "configure:9212: checking for sys/dir.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9215 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9140: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9169,15 +9249,15 @@
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:9173: checking for nlist.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9176 "configure"
+echo "configure:9253: checking for nlist.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9256 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9207,7 +9287,7 @@
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:9211: checking "for sound support"" >&5
+echo "configure:9291: checking "for sound support"" >&5
 case "$with_sound" in
   native | both ) with_native_sound=yes;;
   nas    | no   ) with_native_sound=no;;
@@ -9218,15 +9298,15 @@
     if test -n "$native_sound_lib"; then
     ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6
-echo "configure:9222: checking for multimedia/audio_device.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9225 "configure"
+echo "configure:9302: checking for multimedia/audio_device.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9305 "configure"
 #include "confdefs.h"
 #include <multimedia/audio_device.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9310: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9274,12 +9354,12 @@
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:9278: checking for ALopenport in -laudio" >&5
+echo "configure:9358: checking for ALopenport in -laudio" >&5
 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 9283 "configure"
+#line 9363 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9290,7 +9370,7 @@
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:9294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9321,12 +9401,12 @@
       if test -z "$native_sound_lib"; then
 	
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:9325: checking for AOpenAudio in -lAlib" >&5
+echo "configure:9405: checking for AOpenAudio in -lAlib" >&5
 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lAlib "
 cat > conftest.$ac_ext <<EOF
-#line 9330 "configure"
+#line 9410 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9337,7 +9417,7 @@
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:9341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9375,15 +9455,15 @@
     for dir in "machine" "sys" "linux"; do
       ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6
-echo "configure:9379: checking for ${dir}/soundcard.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9382 "configure"
+echo "configure:9459: checking for ${dir}/soundcard.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9462 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9453,7 +9533,7 @@
  fi
   libs_x="-laudio $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-laudio\" to \$libs_x"; fi
       cat > conftest.$ac_ext <<EOF
-#line 9457 "configure"
+#line 9537 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -9480,7 +9560,7 @@
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:9484: checking for TTY-related features" >&5
+echo "configure:9564: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -9496,12 +9576,12 @@
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:9500: checking for tgetent in -lncurses" >&5
+echo "configure:9580: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lncurses "
 cat > conftest.$ac_ext <<EOF
-#line 9505 "configure"
+#line 9585 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9512,7 +9592,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:9516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9545,15 +9625,15 @@
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:9549: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9552 "configure"
+echo "configure:9629: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9632 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9575,15 +9655,15 @@
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:9579: checking for ncurses/term.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9582 "configure"
+echo "configure:9659: checking for ncurses/term.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9662 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9613,15 +9693,15 @@
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
       ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:9617: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9620 "configure"
+echo "configure:9697: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9700 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9705: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9656,12 +9736,12 @@
 	for lib in curses termlib termcap; do
 	  
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:9660: checking for tgetent in -l$lib" >&5
+echo "configure:9740: checking for tgetent in -l$lib" >&5
 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$lib "
 cat > conftest.$ac_ext <<EOF
-#line 9665 "configure"
+#line 9745 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9672,7 +9752,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:9676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9703,12 +9783,12 @@
       else
 	
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:9707: checking for tgetent in -lcurses" >&5
+echo "configure:9787: checking for tgetent in -lcurses" >&5
 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcurses "
 cat > conftest.$ac_ext <<EOF
-#line 9712 "configure"
+#line 9792 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9719,7 +9799,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:9723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9737,12 +9817,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:9741: checking for tgetent in -ltermcap" >&5
+echo "configure:9821: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 9746 "configure"
+#line 9826 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9753,7 +9833,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:9757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9801,15 +9881,15 @@
 
     test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:9805: checking for gpm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9808 "configure"
+echo "configure:9885: checking for gpm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9888 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9832,12 +9912,12 @@
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:9836: checking for Gpm_Open in -lgpm" >&5
+echo "configure:9916: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgpm "
 cat > conftest.$ac_ext <<EOF
-#line 9841 "configure"
+#line 9921 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9848,7 +9928,7 @@
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:9852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9897,22 +9977,22 @@
 
 
 echo "checking for database support" 1>&6
-echo "configure:9901: checking for database support" >&5
+echo "configure:9981: checking for database support" >&5
 
 if test "$with_database_gnudbm" != "no"; then
   for ac_hdr in ndbm.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9908: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9911 "configure"
+echo "configure:9988: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9991 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9944,12 +10024,12 @@
   if test "$have_ndbm_h" = "yes"; then
     
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:9948: checking for dbm_open in -lgdbm" >&5
+echo "configure:10028: checking for dbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdbm "
 cat > conftest.$ac_ext <<EOF
-#line 9953 "configure"
+#line 10033 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9960,7 +10040,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:9964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9983,10 +10063,10 @@
   fi
   if test "$with_database_gnudbm" != "yes"; then
     echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:9987: checking for dbm_open" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9990 "configure"
+echo "configure:10067: checking for dbm_open" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10070 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -10009,7 +10089,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -10045,10 +10125,10 @@
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:10049: checking for dbm_open" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10052 "configure"
+echo "configure:10129: checking for dbm_open" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10132 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -10071,7 +10151,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -10092,12 +10172,12 @@
   if test "$need_libdbm" != "no"; then
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:10096: checking for dbm_open in -ldbm" >&5
+echo "configure:10176: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldbm "
 cat > conftest.$ac_ext <<EOF
-#line 10101 "configure"
+#line 10181 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10108,7 +10188,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10145,10 +10225,10 @@
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for dbopen""... $ac_c" 1>&6
-echo "configure:10149: checking for dbopen" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10152 "configure"
+echo "configure:10229: checking for dbopen" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10232 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbopen(); below.  */
@@ -10171,7 +10251,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_dbopen=yes"
 else
@@ -10192,12 +10272,12 @@
   if test "$need_libdb" != "no"; then
     
 echo $ac_n "checking for dbopen in -ldb""... $ac_c" 1>&6
-echo "configure:10196: checking for dbopen in -ldb" >&5
+echo "configure:10276: checking for dbopen in -ldb" >&5
 ac_lib_var=`echo db'_'dbopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<EOF
-#line 10201 "configure"
+#line 10281 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10208,7 +10288,7 @@
 dbopen()
 ; return 0; }
 EOF
-if { (eval echo configure:10212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10232,7 +10312,7 @@
   if test "$with_database_berkdb" = "yes"; then
     for path in "db/db.h" "db.h"; do
 cat > conftest.$ac_ext <<EOF
-#line 10236 "configure"
+#line 10316 "configure"
 #include "confdefs.h"
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
@@ -10250,7 +10330,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -10302,12 +10382,12 @@
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:10306: checking for SOCKSinit in -lsocks" >&5
+echo "configure:10386: checking for SOCKSinit in -lsocks" >&5
 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocks "
 cat > conftest.$ac_ext <<EOF
-#line 10311 "configure"
+#line 10391 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10318,7 +10398,7 @@
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:10322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10375,15 +10455,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10379: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10382 "configure"
+echo "configure:10459: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10462 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10414,12 +10494,12 @@
 
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:10418: checking for dlopen in -ldl" >&5
+echo "configure:10498: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldl "
 cat > conftest.$ac_ext <<EOF
-#line 10423 "configure"
+#line 10503 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10430,7 +10510,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:10434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10459,12 +10539,12 @@
  }
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for _dlopen in -lc""... $ac_c" 1>&6
-echo "configure:10463: checking for _dlopen in -lc" >&5
+echo "configure:10543: checking for _dlopen in -lc" >&5
 ac_lib_var=`echo c'_'_dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 10468 "configure"
+#line 10548 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10475,7 +10555,7 @@
 _dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:10479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10504,12 +10584,12 @@
  }
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:10508: checking for dlopen in -lc" >&5
+echo "configure:10588: checking for dlopen in -lc" >&5
 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 10513 "configure"
+#line 10593 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10520,7 +10600,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:10524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10549,12 +10629,12 @@
  }
 test -z "$with_shlib" && { 
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:10553: checking for shl_load in -ldld" >&5
+echo "configure:10633: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 10558 "configure"
+#line 10638 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10565,7 +10645,7 @@
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:10569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10594,12 +10674,12 @@
  }
 test -z "$with_shlib" && { 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:10598: checking for dld_init in -ldld" >&5
+echo "configure:10678: checking for dld_init in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 10603 "configure"
+#line 10683 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10610,7 +10690,7 @@
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:10614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10660,7 +10740,7 @@
 dll_oflags="-o "
 
 echo $ac_n "checking how to build a shared library""... $ac_c" 1>&6
-echo "configure:10664: checking how to build a shared library" >&5
+echo "configure:10744: checking how to build a shared library" >&5
 case `uname -rs` in
 	UNIX_SV*|UNIX_System_V*)
 		dll_lflags="-G"
@@ -10750,7 +10830,7 @@
 
   ld_dynamic_link_flags=
     case "$opsys" in
-  hpux*)  ld_dynamic_link_flags="-E" ;;
+  hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
   linux*) ld_dynamic_link_flags="-rdynamic" ;;
   *) ;;
   esac
@@ -10926,6 +11006,9 @@
 
 
 
+
+
+
 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
 
 
@@ -10934,19 +11017,17 @@
 
 
 
-
-if test "${package_path}" = "NONE" ; then
-	package_path="~/.xemacs:${prefix}/lib/xemacs/packages"
-fi
-package_path=`echo $package_path | sed 'y/ /:/'`
-{ test "$extra_verbose" = "yes" && cat << EOF
-    Defining PACKAGE_PATH = "$package_path"
-EOF
-cat >> confdefs.h <<EOF
-#define PACKAGE_PATH "$package_path"
-EOF
-}
-
+# The default is yes
+if test "$with_site_lisp" = "no"; then
+  { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining INHIBIT_SITE_LISP
+EOF
+cat >> confdefs.h <<\EOF
+#define INHIBIT_SITE_LISP 1
+EOF
+}
+
+fi
 
 
 T=""
@@ -11181,7 +11262,6 @@
 
   Where should the build process find the source code?    $srcdir
   What installation prefix should install use?		  $prefix
-  Where should XEmacs look for packages?		  $package_path
   What operating system and machine description files should XEmacs use?
         \`$opsysfile' and \`$machfile'
   What compiler should XEmacs be built with?              $CC $CFLAGS
@@ -11286,8 +11366,6 @@
 test "$with_pop"	= yes && echo "  Using POP for mail access"
 test "$with_kerberos"	= yes && echo "  Using Kerberos for POP authentication"
 test "$with_hesiod"	= yes && echo "  Using Hesiod to get POP server host"
-echo "  The \`Info-default-directory-list' will be initialized from:"
-echo "  INFOPATH=\"$infopath\""
 test "$use_union_type"     = yes && echo "  Using the union type for Lisp_Objects."
 test "$with_minimal_tagbits" != "no" -o "$with_gung" != "no" && \
 		echo "  Using Lisp_Objects with minimal tagbits."
@@ -11444,9 +11522,12 @@
 s%@infodir_user_defined@%$infodir_user_defined%g
 s%@infopath@%$infopath%g
 s%@infopath_user_defined@%$infopath_user_defined%g
+s%@packagepath@%$packagepath%g
+s%@packagepath_user_defined@%$packagepath_user_defined%g
 s%@lispdir@%$lispdir%g
 s%@lispdir_user_defined@%$lispdir_user_defined%g
 s%@sitelispdir@%$sitelispdir%g
+s%@sitelispdir_user_defined@%$sitelispdir_user_defined%g
 s%@etcdir@%$etcdir%g
 s%@etcdir_user_defined@%$etcdir_user_defined%g
 s%@lockdir@%$lockdir%g
--- a/configure.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/configure.in	Mon Aug 13 10:26:29 2007 +0200
@@ -255,8 +255,6 @@
 x_includes=NONE
 x_libraries=NONE
 CDPATH=.; export CDPATH
-dnl this will serve for testing if a default value should be given
-package_path=NONE
 
 dnl Allow this script to work with zsh, by setting sh emulation options
 if test -n "$ZSH_VERSION"; then
@@ -335,12 +333,16 @@
 lispdir='${datadir}/xemacs-${version}/lisp'
 lispdir_user_defined='no'
 sitelispdir='${datadir}/xemacs/site-lisp'
+sitelispdir_user_defined='no'
+packagepath='~/.xemacs::${datadir}/xemacs/mule-packages:${datadir}/xemacs-${version}/mule-packages:${datadir}/xemacs/packages:${datadir}/xemacs-${version}/packages'
+packagepath_user_defined='no'
 etcdir='${datadir}/xemacs-${version}/etc'
 etcdir_user_defined='no'
 lockdir='${statedir}/xemacs/lock'
 lockdir_user_defined='no'
 archlibdir='${libdir}/xemacs-${version}/${configuration}'
 archlibdir_user_defined='no'
+with_site_lisp='yes'
 with_menubars=''
 with_scrollbars=''
 with_dialogs=''
@@ -514,7 +516,7 @@
 	puresize	| \
 	cache_file	| \
 	native_sound_lib | \
-	package_path	| \
+	site_lisp	| \
 	x_includes	| \
 	x_libraries	| \
 	site_includes	| \
@@ -629,7 +631,7 @@
 	  dnl Example: --error-checking=all,noextents,nobufpos
 	  dnl Example: --error-checking=none,malloc,gc
 
-	  for x in `echo "$val" | sed -e 's/,/ /'` ; do
+	  for x in `echo "$val" | sed -e 's/,/ /g'` ; do
 	    case "$x" in
 	      dnl all and none are only permitted as the first in the list.
 	      n | no | non | none ) new_default=no ;;
@@ -654,7 +656,7 @@
 	    esac
 	    if test "$bogus_error_check" -o \
 	         \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
-		if test $error_check_default = yes ; then
+		if test "$error_check_default" = yes ; then
 		  types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'."
 		else
 		  types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'."
@@ -681,7 +683,7 @@
 	dnl Has the user specified one of the path options?
 	prefix | exec_prefix | bindir | datadir | statedir | libdir | \
 	mandir | infodir | infopath | lispdir | etcdir | lockdir | pkgdir | \
-	 archlibdir | sitelispdir | docdir )
+	archlibdir | sitelispdir | docdir | packagepath )	
 	   dnl If the value was omitted, get it from the next argument.
 	   if test "$valomitted" = "yes"; then
 	     if test "$#" = 0; then
@@ -697,9 +699,11 @@
            dnl default value of lockdir.
            case "$opt" in
              lispdir ) lispdir_user_defined=yes ;;
+             sitelispdir ) sitelispdir_user_defined=yes ;;
              etcdir  )  etcdir_user_defined=yes ;;
              infodir ) infodir_user_defined=yes ;;
              infopath ) infopath_user_defined=yes ;;
+             packagepath ) packagepath_user_defined=yes ;;
              datadir ) lispdir_user_defined=yes etcdir_user_defined=yes ;;
              statedir | lockdir ) lockdir_user_defined=yes ;;
              exec_prefix | libdir | archlibdir ) archlibdir_user_defined=yes ;;
@@ -1962,6 +1966,23 @@
   with_minimal_tagbits=yes
 fi
 
+dnl #### mcheck is broken in all versions of Linux libc and glibc.
+dnl Try this again when 2.1 hits the streets.
+dnl Avoid using free-hook.c if support exists for malloc debugging in libc
+dnl have_libmcheck=no
+dnl if test "$error_check_malloc" = "yes" -a \
+dnl    "$have_glibc" = "yes" -a \
+dnl    "$doug_lea_malloc" = "yes"; then
+dnl   AC_CHECK_HEADERS(mcheck.h)
+dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
+dnl fi
+
+dnl if test "$have_libmcheck" = "yes"; then
+dnl   AC_DEFINE(HAVE_LIBMCHECK)
+dnl   libmcheck=-lmcheck
+dnl   AC_SUBST(libmcheck)
+dnl fi
+
 dnl Some other nice autoconf tests.  If you add a test here which
 dnl should make an entry in src/config.h, do not forget to add an
 dnl #undef clause to src/config.h.in for autoconf to modify.
@@ -2324,7 +2345,7 @@
     fi
     const_is_losing=no
     with_file_coding=yes
-    XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o)
+    XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o)
   fi
 fi
 
@@ -2525,7 +2546,7 @@
   test -z "$with_png" && { AC_CHECK_FUNC(pow,     , with_png=no) }
   if test "$with_png" != "no"; then
     for extra_libs in "" "-lz" "-lgz"; do
-      AC_CHECK_LIB(png, png_read_image,
+      AC_CHECK_LIB(png, png_set_strip_alpha,
 	png_libs="-lpng $extra_libs" with_png=yes; break,[:],$extra_libs)
     done
   fi
@@ -2733,6 +2754,21 @@
   fi
 
   dnl Autodetect canna
+  canna_includes_found=no
+  if test "$with_canna" != "no"; then
+    AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
+  fi
+  if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
+      -d "/usr/local/canna/include"; then
+    save_c_switch_site="$c_switch_site"
+    c_switch_site="$c_switch_site -I/usr/local/canna/include"
+    AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
+    if test "$canna_includes_found" != "yes"; then
+      c_switch_site="$save_c_switch_site"
+      with_canna="no"
+    fi
+  fi
+
   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
@@ -3264,7 +3300,7 @@
   ld_dynamic_link_flags=
   dnl Fill this in with other values as this gets more testing
   case "$opsys" in
-  hpux*)  ld_dynamic_link_flags="-E" ;;
+  hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
   linux*) ld_dynamic_link_flags="-rdynamic" ;;
   *) ;;
   esac
@@ -3373,9 +3409,12 @@
 AC_SUBST(infodir_user_defined)
 AC_SUBST(infopath)
 AC_SUBST(infopath_user_defined)
+AC_SUBST(packagepath)
+AC_SUBST(packagepath_user_defined)
 AC_SUBST(lispdir)
 AC_SUBST(lispdir_user_defined)
 AC_SUBST(sitelispdir)
+AC_SUBST(sitelispdir_user_defined)
 AC_SUBST(etcdir)
 AC_SUBST(etcdir_user_defined)
 AC_SUBST(lockdir)
@@ -3414,14 +3453,10 @@
 AC_SUBST(RANLIB)
 AC_SUBST(dynodump_arch)
 
-
-dnl if --package-path wasn't passed to configure, give the default value
-if test "${package_path}" = "NONE" ; then
-	package_path="~/.xemacs:${prefix}/lib/xemacs/packages"
+# The default is yes
+if test "$with_site_lisp" = "no"; then
+  AC_DEFINE(INHIBIT_SITE_LISP)
 fi
-dnl change blanks to colons in package path, and make available to config.h
-package_path=`echo $package_path | sed 'y/ /:/'`
-AC_DEFINE_UNQUOTED(PACKAGE_PATH, "$package_path")
 
 XE_SPACE(ac_configure_args, $ac_configure_args)
 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$canonical")
@@ -3489,7 +3524,6 @@
 
   Where should the build process find the source code?    $srcdir
   What installation prefix should install use?		  $prefix
-  Where should XEmacs look for packages?		  $package_path
   What operating system and machine description files should XEmacs use?
         \`$opsysfile' and \`$machfile'
   What compiler should XEmacs be built with?              $CC $CFLAGS
@@ -3594,8 +3628,6 @@
 test "$with_pop"	= yes && echo "  Using POP for mail access"
 test "$with_kerberos"	= yes && echo "  Using Kerberos for POP authentication"
 test "$with_hesiod"	= yes && echo "  Using Hesiod to get POP server host"
-echo "  The \`Info-default-directory-list' will be initialized from:"
-echo "  INFOPATH=\"$infopath\""
 test "$use_union_type"     = yes && echo "  Using the union type for Lisp_Objects."
 test "$with_minimal_tagbits" != "no" -o "$with_gung" != "no" && \
 		echo "  Using Lisp_Objects with minimal tagbits."
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/editclient.sh	Mon Aug 13 10:26:29 2007 +0200
@@ -0,0 +1,13 @@
+#!/bin/sh
+if gnuclient -batch -eval t >/dev/null 2>&1
+then
+  exec gnuclient ${1+"$@"}
+else
+  xemacs -unmapped -f gnuserv-start &
+  until gnuclient -batch -eval t >/dev/null 2>&1
+  do
+     sleep 1
+  done
+  exec gnuclient ${1+"$@"}
+fi
+
--- a/etc/sample.emacs	Mon Aug 13 10:25:39 2007 +0200
+++ b/etc/sample.emacs	Mon Aug 13 10:26:29 2007 +0200
@@ -376,7 +376,8 @@
 ;; (e.g. turner@lanl.gov), if set.
 
 (if (and running-xemacs
-	 (or (and (= emacs-major-version 20) (>= emacs-minor-version 1))
+	 (or (> emacs-major-version 20)
+	     (and (= emacs-major-version 20) (>= emacs-minor-version 1))
 	     (and (= emacs-major-version 19) (>= emacs-minor-version 15))))
     (progn
       (message "Loading and configuring bundled packages... efs")
--- a/lib-src/ChangeLog	Mon Aug 13 10:25:39 2007 +0200
+++ b/lib-src/ChangeLog	Mon Aug 13 10:26:29 2007 +0200
@@ -1,3 +1,8 @@
+1998-03-18  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* gnuclient.c (main): Do not copy string unnecessary in (too)
+	small buffers.
+
 1998-03-02  SL Baur  <steve@altair.xemacs.org>
 
 	* update-elc.sh: Change all -q -no-site-file to -vanilla
--- a/lib-src/config.values.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/lib-src/config.values.in	Mon Aug 13 10:26:29 2007 +0200
@@ -93,12 +93,15 @@
 native_sound_lib "@native_sound_lib@"
 oldincludedir "@oldincludedir@"
 opsysfile "@opsysfile@"
+packagepath "@packagepath@"
+packagepath_user_defined "@packagepath_user_defined@"
 pkgdir "@pkgdir@"
 prefix "@prefix@"
 program_transform_name "@program_transform_name@"
 sbindir "@sbindir@"
 sharedstatedir "@sharedstatedir@"
 sitelispdir "@sitelispdir@"
+sitelispdir_user_defined "@sitelispdir_user_defined@"
 sound_cflags "@sound_cflags@"
 srcdir "@srcdir@"
 start_files "@start_files@"
--- a/lib-src/gnuclient.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/lib-src/gnuclient.c	Mon Aug 13 10:26:29 2007 +0200
@@ -447,18 +447,19 @@
       send_string (s, command);
       if (load_library)
 	{
-	  sprintf (command, " (load-library %s)", clean_string (load_library));
-	  send_string (s, command);
+	  send_string (s , "(load-library ");
+	  send_string (s, clean_string(load_library));
+	  send_string (s, ") ");
 	}
       if (eval_form)
 	{
-	  sprintf (command, " %s", eval_form);
-	  send_string (s, command);
+	  send_string (s, eval_form);
 	}
       if (eval_function)
 	{
-	  sprintf (command, " (%s)", eval_function);
-	  send_string (s, command);
+	  send_string (s, "(");
+	  send_string (s, eval_function);
+	  send_string (s, ")");
 	}
       send_string (s, "))");
       send_string (s, EOT_STR);
--- a/lisp/ChangeLog	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/ChangeLog	Mon Aug 13 10:26:29 2007 +0200
@@ -1,9 +1,112 @@
+1998-03-23  SL Baur  <steve@altair.xemacs.org>
+
+	* minibuf.el (mouse-read-file-name-1): If a default directory was
+	specified, use it for generating the completions.
+
+1998-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* update-elc.el: Now respects inhibit-package-init and
+	inhibit-site-lisp.
+	Now does path construction with loadup-paths.
+
+	* startup.el (normal-top-level, startup-setup-paths): Now respects
+	inhibit-package-init and inhibit-site-lisp.
+
+	* packages.el (packages-find-package-path): Extended package path
+	by version-specific hierarchies.
+	(packages-find-packages): Now respects inhibit flag and
+	inhibit-site-lisp.
+	Moved path setup to loadup-paths.
+
+	* make-docfile.el: Now respects inhibit-package-init and
+	inhibit-site-lisp.
+	Now does path construction with loadup-paths.
+
+	* loadup.el: Now respects inhibit-package-init and
+	inhibit-site-lisp.
+
+	* dumped-lisp.el (preloaded-file-list): Added loadup-paths.
+
+	* loadup-paths.el: New file: setup load-path to encompass
+	packages.
+
+1998-03-22  SL Baur  <steve@altair.xemacs.org>
+
+	* auto-show.el: load-gc renamed to pureload.
+	* site-load.el: Ditto.
+	* packages.el (toplevel): Ditto.
+	* loadup.el (really-early-error-handler): Ditto.
+	* dumped-lisp.el (preloaded-file-list): Ditto.
+	* cus-face.el (custom-declare-face): Ditto.
+
+1998-03-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* <Today>: The Big Path Searching Overhaul.
+
+	* find-paths.el: New file: find and assemble paths in the
+	installation hierarchy.
+
+	* setup-paths.el: New file: global layout of paths and directories
+	within the XEmacs hierarchy.
+
+	* packages.el: Replaced everything related to path searching and
+	startup by code in terms of find-paths.
+
+	* loadup.el, make-docfile.el, update-elc.el, startup.el: Now calls
+	the new path searching engine.
+
+	* dumped-lisp.el (preloaded-file-list): Added new files find-paths
+	and setup-paths.
+
+1998-03-22  SL Baur  <steve@altair.xemacs.org>
+
+	* dumped-lisp.el (preloaded-file-list): Load setup-paths.elc not
+	setup-paths.el.
+
+1998-03-20  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* msw-glyphs.el: Added check for 'mswindows feature, so the file
+	compiles identically in any configuration.
+	Removed irrelevant commentary.
+
+1998-03-20  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* simple.el (set-variable): Allow setting specifiers.
+
+1998-03-19  SL Baur  <steve@altair.xemacs.org>
+
+	* lisp.el (forward-sexp): Revert previous change.
+
+1998-03-18  SL Baur  <steve@altair.xemacs.org>
+
+	* frame.el (frame-initialize): Use `delete-console' instead of
+	`delete-device' to delete the stream console to match the usage in 
+	Fkill_emacs.
+
 1998-03-16  SL Baur  <steve@altair.xemacs.org>
 
 	* files.el (cdpath-previous): New variable.
 	(cd): Use it.
 	From Bob Weiner <weiner@wave.altrasoft.com>
 
+1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* keydefs.el: Changed keybindings of forward-char,
+	  backward, scroll-up and scroll-down to point to their
+	  -command counterparts.
+
+	* simple.el: New functions: forwarc-char-command,
+	  backwrad-char-command, scroll-up-command,
+	  scroll-down-command which work liek their counterparts
+	  except that they honor the variable
+	  signal-error-on-buffer-boundary.
+
+	  Definition of signal-error-on-buffer-boundary received
+	  from src/cmds.c.
+
+	  defvar declaration added for word-across-newline to avoid
+	  byte-compiler warning about the free variable reference.
+
 1998-03-14  Kirill M. Katsnelson  <kkm@kis.ru>
 
 	* winnt.el: Removed "%t" from the beginning of
--- a/lisp/about.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/about.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1243,6 +1243,7 @@
        (print-short "Gennady Agranov" "agranov@csa.CS.Technion.Ac.IL")
        (print-short "Adrian Aichner" "aichner@ecf.teradyne.com")
        (print-short "Mark Allender" "allender@vnet.IBM.COM")
+       (print-short "Stephen R. Anderson" "sra@bloch.ling.yale.edu")
        (print-short "Butch Anton" "butch@zaphod.uchicago.edu")
        (print-short "Fred Appelman" "Fred.Appelman@cv.ruu.nl")
        (print-short "Erik \"The Pope\" Arneson" "lazarus@mind.net")
@@ -1447,6 +1448,7 @@
        (print-short "Remek Trzaska" "remek@npac.syr.edu")
        (print-short "TSUTOMU Nakamura" "tsutomu@rs.kyoto.omronsoft.co.jp")
        (print-short "Stefanie Teufel" "s.teufel@ndh.net")
+       (print-short "Gary Thomas" "g.thomas@opengroup.org")
        (print-short "Stephen Turnbull" "turnbull@sk.tsukuba.ac.jp")
        (print-short "John Turner" "turner@xdiv.lanl.gov")
        (print-short "UENO Fumihiro" "7m2vej@ritp.ye.IHI.CO.JP")
@@ -1459,8 +1461,10 @@
        (print-short "Peter Ware" "ware@cis.ohio-state.edu")
        (print-short "Christoph Wedler" "wedler@fmi.uni-passau.de")
        (print-short "Yoav Weiss" "yoav@zeus.datasrv.co.il")
+       (print-short "Peter B. West" "p.west@uq.net.au")
        (print-short "Rod Whitby" "rwhitby@asc.corp.mot.com")
        (print-short "Rich Williams" "rdw@hplb.hpl.hp.com")
+       (print-short "Peter Windle" "peterw@SDL.UG.EDS.COM")
        (print-short "David C Worenklein" "dcw@gcm.com")
        (print-short "Takeshi Yamada" "yamada@sylvie.kecl.ntt.jp")
        (print-short "Katsumi Yamaoka" "yamaoka@ga.sony.co.jp")
--- a/lisp/auto-show.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/auto-show.el	Mon Aug 13 10:26:29 2007 +0200
@@ -191,7 +191,7 @@
 ;;(add-hook 'post-command-hook 'auto-show-make-point-visible)
 
 ;; If being dumped, turn it on right away.
-(when (boundp 'load-gc)
+(when (boundp 'pureload)
   (auto-show-mode 1))
 
 ;; Do auto-scrolling in comint buffers after process output also.
--- a/lisp/cus-face.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/cus-face.el	Mon Aug 13 10:26:29 2007 +0200
@@ -28,7 +28,7 @@
 ;;;###autoload
 (defun custom-declare-face (face spec doc &rest args)
   "Like `defface', but FACE is evaluated as a normal argument."
-  ;; (when (fboundp 'load-gc)
+  ;; (when (fboundp 'pureload)
     ;; (error "Attempt to declare a face during dump"))
   (unless (get face 'face-defface-spec)
     (put face 'face-defface-spec spec)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/dump-paths.el	Mon Aug 13 10:26:29 2007 +0200
@@ -0,0 +1,47 @@
+;; dump-paths.el --- set up XEmacs paths for dumping
+
+;; Copyright (C) 1985, 1986, 1992, 1994, 1997 Free Software Foundation, Inc.
+
+;; Maintainer: XEmacs Development Team
+;; Keywords: internal, dumped
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Synched up with: Not in FSF
+
+;;; Commentary:
+
+;; This sets up the various paths for continuing loading files for
+;; dumping.
+
+(let ((roots (paths-find-emacs-roots invocation-directory
+				     invocation-name)))
+
+  (setq package-path (packages-find-package-path roots))
+
+  (let ((stuff (packages-find-packages package-path inhibit-package-init)))
+    (setq late-packages (cdr stuff)))
+
+  (setq late-package-load-path (packages-find-package-load-path late-packages))
+
+  (setq load-path (paths-construct-load-path roots
+					     '()
+					     late-package-load-path
+					     inhibit-site-lisp)))
+
+;;; dump-paths.el ends here
--- a/lisp/dumped-lisp.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/dumped-lisp.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1,13 +1,15 @@
 (setq preloaded-file-list
       '("backquote" 		; needed for defsubst etc.
 	"bytecomp-runtime"	; define defsubst
-	;; "setup-paths" ; We're not ready for this
+	#-infodock "Installation.el"
+	"find-paths"
 	"packages"		; Bootstrap run-time lisp environment
+	"setup-paths"
+	"dump-paths"
 	"subr" 			; load the most basic Lisp functions
 	"replace" 		; match-string used in version.el.
 	; Ignore compiled-by-mistake version.elc
 	"version.el"
-	#-infodock "Installation.el"
 	"cl"
 	"cl-extra"
 	"cl-seq"
@@ -23,7 +25,7 @@
 	"obsolete"
 	"specifier"
 	"faces"			; must be loaded before any make-face call
-;;(load-gc "facemenu") #### not yet ported
+;;(pureload "facemenu") #### not yet ported
 	"glyphs"
 	"objects"
 	"extents"
@@ -46,14 +48,14 @@
 ;; autoloads file with the dumped packages removed.
 ;; After fixing, eos/loaddefs-eos and loaddefs appear identical?!!
 ;; So just make loaddefs-eos go away...
-;;(load-gc (if (featurep 'sparcworks) "eos/loaddefs-eos" "loaddefs"))
+;;(pureload (if (featurep 'sparcworks) "eos/loaddefs-eos" "loaddefs"))
 	"startup"		; For initialization of
 				;  `emacs-user-extension-dir'
 	"misc"
-	;; (load-gc "profile")
+	;; (pureload "profile")
 	#-mule "help-nomule"
 	"help"
-	;; (load-gc "hyper-apropos")  Soon...
+	;; (pureload "hyper-apropos")  Soon...
 	#-file-coding "files-nomule"
 	"files"
 	#-infodock "lib-complete" ; InfoDock uses an older version
@@ -110,12 +112,12 @@
 ;; or user switching of input systems???
 ;(if (featurep 'wnn)
 ;    (progn
-;      (load-gc "egg")
-;      (load-gc "egg-wnn")
+;      (pureload "egg")
+;      (pureload "egg-wnn")
 ;      (setq egg-default-startup-file "eggrc-wnn")))
 
 ;; (if (and (boundp 'CANNA) CANNA)
-;;     (load-gc "canna")
+;;     (pureload "canna")
 ;;   )
 
 ;; Now load files to set up all the different languages/environments
@@ -123,11 +125,11 @@
 
 	#+mule "arabic"
 	#+mule "chinese"
-	#+mule "cyrillic"
+	#+mule "mule-base/cyrillic" ; overloaded in leim/quail
 	#+mule "english"
 ;;	#+mule "ethiopic"
 	#+mule "european"
-	#+mule "greek"
+	#+mule "mule-base/greek" ; overloaded in leim/quail
 	#+mule "hebrew"
 	#+mule "japanese"
 	#+mule "korean"
@@ -152,7 +154,7 @@
 
 ;; Enable Mule capability for Gnus, mail, etc...
 ;; Moved to sunpro-load.el - the default only for Sun.
-;;(load-gc "mime-setup")
+;;(pureload "mime-setup")
 ;;; mule-load.el ends here
 	#+window-system "gui"
 	#+window-system "mode-motion"
--- a/lisp/files.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/files.el	Mon Aug 13 10:26:29 2007 +0200
@@ -392,22 +392,23 @@
 (defvar path-separator ":"
   "Character used to separate concatenated paths.")
 
-;; Merged with equivalent C Code.
-;(defun parse-colon-path (cd-path)
-;  "Explode a colon-separated list of paths into a string list."
-;  (and cd-path
-;       (let (cd-list (cd-start 0) cd-colon)
-;	 (setq cd-path (concat cd-path path-separator))
-;	 (while (setq cd-colon (string-match path-separator cd-path cd-start))
-;	   (setq cd-list
-;		 (nconc cd-list
-;			(list (if (= cd-start cd-colon)
-;				   nil
-;				(substitute-in-file-name
-;				 (file-name-as-directory
-;				  (substring cd-path cd-start cd-colon)))))))
-;	   (setq cd-start (+ cd-colon 1)))
-;	 cd-list)))
+(defun parse-colon-path (cd-path)
+  "Explode a colon-separated list of paths into a string list.
+This will be moved into \"C\" when decode_path is no longer called so
+early in XEmacs initialization."
+  (and cd-path
+       (let (cd-list (cd-start 0) cd-colon)
+	 (setq cd-path (concat cd-path path-separator))
+	 (while (setq cd-colon (string-match path-separator cd-path cd-start))
+	   (setq cd-list
+		 (nconc cd-list
+			(list (if (= cd-start cd-colon)
+				   nil
+				(substitute-in-file-name
+				 (file-name-as-directory
+				  (substring cd-path cd-start cd-colon)))))))
+	   (setq cd-start (+ cd-colon 1)))
+	 cd-list)))
 
 (defun cd-absolute (dir)
   "Change current directory to given absolute file name DIR."
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/find-paths.el	Mon Aug 13 10:26:29 2007 +0200
@@ -0,0 +1,241 @@
+;;; find-paths.el --- setup various XEmacs paths
+
+;; Copyright (C) 1985-1986, 1990, 1992-1997 Free Software Foundation, Inc.
+;; Copyright (c) 1993, 1994 Sun Microsystems, Inc.
+;; Copyright (C) 1995 Board of Trustees, University of Illinois
+
+;; Author: Mike Sperber <sperber@informatik.uni-tuebingen.de>
+;; Maintainer: XEmacs Development Team
+;; Keywords: internal, dumped
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the 
+;; Free Software Foundation, 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Synched up with: Not in FSF.
+
+;;; Commentary:
+
+;; This file is dumped with XEmacs.
+
+;; This file contains the library functionality to find paths into the
+;; XEmacs hierarchy.
+
+;;; Code:
+
+(defvar paths-version-control-bases '("RCS" "CVS" "SCCS")
+  "File bases associated with version control.")
+
+(defun paths-find-recursive-path (directories &optional exclude)
+  "Return a list of the directory hierarchy underneath DIRECTORIES.
+The returned list is sorted by pre-order and lexicographically."
+  (let ((path '()))
+    (while directories
+      (let ((directory (file-name-as-directory
+			(expand-file-name
+			 (car directories)))))
+	(if (file-directory-p directory)
+	    (let ((raw-dirs (directory-files directory nil "^[^-.]" nil 'dirs-only))
+		  (reverse-dirs '()))
+
+	      (while raw-dirs
+		(if (null (member (car raw-dirs) exclude))
+		    (setq reverse-dirs
+			  (cons (expand-file-name (car raw-dirs) directory)
+				reverse-dirs)))
+		(setq raw-dirs (cdr raw-dirs)))
+
+	      (let ((sub-path
+		     (paths-find-recursive-path (reverse reverse-dirs) exclude)))
+		(setq path (nconc path
+				  (list directory)
+				  sub-path))))))
+      (setq directories (cdr directories)))
+    path))
+
+(defun paths-find-recursive-load-path (directories)
+  "Construct a recursive load path underneath DIRECTORIES."
+  (paths-find-recursive-path directories paths-version-control-bases))
+
+(defun paths-emacs-root-p (directory)
+  "Check if DIRECTORY is a plausible installation root for XEmacs."
+  (or
+   ;; installed
+   (file-directory-p
+    (concat directory "lib/xemacs-" (construct-emacs-version)))
+   ;; in-place
+   (and 
+    (file-directory-p (concat directory "lib-src"))
+    (file-directory-p (concat directory "lisp"))
+    (file-directory-p (concat directory "src")))))
+
+(defun paths-find-emacs-root
+  (invocation-directory invocation-name)
+  "Find the run-time root of XEmacs."
+  (let ((maybe-root-1 (file-name-as-directory
+		       (expand-file-name ".." invocation-directory)))
+	(maybe-root-2 (file-name-as-directory
+		       (expand-file-name "../.." invocation-directory))))
+    (cond
+     ((paths-emacs-root-p maybe-root-1)
+      maybe-root-1)
+     ((paths-emacs-root-p maybe-root-2)
+      maybe-root-2)
+     (t
+      (let ((maybe-symlink (file-symlink-p (concat invocation-directory
+						   invocation-name))))
+	(if maybe-symlink
+	    (let ((directory (file-name-directory maybe-symlink)))
+	      (paths-find-emacs-root directory invocation-name))
+	  nil))))))
+
+(defun paths-construct-emacs-directory (root suffix base)
+  "Construct a directory name within the XEmacs hierarchy."
+  (file-name-as-directory
+   (expand-file-name 
+    (concat
+     (file-name-as-directory root)
+     suffix
+     base))))
+
+(defun paths-find-emacs-directory (roots suffix base &optional envvar default)
+  "Find a directory in the XEmacs hierarchy.
+ROOTS must be a list of installation roots.
+SUFFIX is the subdirectory from there.
+BASE is the base to look for.
+ENVVAR is the name of the environment variable that might also
+specify the directory.
+DEFAULT is a fall-back value."
+  (let ((envvar-value (and envvar (getenv envvar))))
+    (if (and envvar-value
+	     (file-directory-p envvar-value))
+	(file-name-as-directory envvar-value)
+      (catch 'gotcha
+	(while roots
+	  (let* ((root (car roots))
+		 (path (paths-construct-emacs-directory root suffix base)))
+	    ;; installed
+	    (if (file-directory-p path)
+		(throw 'gotcha path)
+	      (let ((path (paths-construct-emacs-directory root "" base)))
+		;; in-place
+		(if (file-directory-p path)
+		    (throw 'gotcha path)))))
+	  (setq roots (cdr roots)))
+	(if (and default
+		 (file-directory-p default))
+	    (file-name-as-directory default)
+	  nil)))))
+
+(defun paths-find-site-directory (roots base &optional envvar default)
+  "Find a site-specific directory in the XEmacs hierarchy."
+  (paths-find-emacs-directory roots "lib/xemacs/" base envvar default))
+
+(defun paths-find-version-directory (roots base &optional envvar default)
+  "Find a version-specific directory in the XEmacs hierarchy."
+  (paths-find-emacs-directory roots
+			      (concat "lib/xemacs-" (construct-emacs-version) "/")
+			      base
+			      envvar default))
+
+(defun paths-find-architecture-directory (roots base &optional envvar default)
+  "Find an architecture-specific directory in the XEmacs hierarchy."
+  (or
+   ;; from more to less specific
+   (paths-find-version-directory roots
+				 (concat base system-configuration)
+				 envvar default)
+   (paths-find-version-directory roots
+				 system-configuration
+				 envvar default)
+   (paths-find-version-directory roots
+				 base
+				 envvar default)))
+  
+(defvar paths-path-emacs-version nil
+  "Emacs version as it appears in paths.")
+
+(defun construct-emacs-version ()
+  "Construct the raw version number of XEmacs in the form XX.XX."
+  ;; emacs-version isn't available early, but we really don't care then
+  (if (null (boundp 'emacs-version))
+      "XX.XX"
+  (or paths-path-emacs-version		; cache
+      (progn
+	(string-match "\\`[^0-9]*\\([0-9]+\\.[0-9]+\\)" emacs-version)
+	(let ((version (substring emacs-version
+				  (match-beginning 1) (match-end 1))))
+	  (if (string-match "(beta *\\([0-9]+\\))" emacs-version)
+	      (setq version (concat version
+				    "-b"
+				    (substring emacs-version
+					       (match-beginning 1) (match-end 1)))))
+	  (setq paths-path-emacs-version version)
+	  version)))))
+  
+(defun paths-find-emacs-path (roots suffix base &optional envvar default)
+  "Find a path in the XEmacs hierarchy.
+ROOTS must be a list of installation roots.
+SUFFIX is the subdirectory from there.
+BASE is the base to look for.
+ENVVAR is the name of the environment variable that might also
+specify the path.
+DEFAULT is a fall-back value."
+  (let ((envvar-value (and envvar (getenv envvar))))
+    (if envvar-value
+	(decode-path-internal envvar-value)
+      (let ((directory (paths-find-emacs-directory roots base suffix)))
+	(if (and directory (file-directory-p directory))
+	    (list directory)
+	  (paths-directories-which-exist default))))))
+
+(defun paths-directories-which-exist (directories)
+  "Return the directories among DIRECTORIES."
+  (let ((reverse-directories '()))
+    (while directories
+      (if (file-directory-p (car directories))
+	  (setq reverse-directories 
+		(cons (car directories)
+		      reverse-directories)))
+      (setq directories (cdr directories)))
+    (reverse reverse-directories)))
+
+(defun paths-find-site-path (roots base &optional envvar default)
+  "Find a path underneath the site hierarchy."
+  (paths-find-emacs-path roots "lib/xemacs/" base envvar default))
+
+(defun paths-find-version-path (roots base &optional envvar default)
+  "Find a path underneath the site hierarchy."
+  (paths-find-emacs-path roots
+			 (concat "lib/xemacs-" (construct-emacs-version) "/")
+			 base
+			 envvar default))
+		   
+(defun paths-find-emacs-roots (invocation-directory
+			       invocation-name)
+  "Find all plausible installation roots for XEmacs."
+  (let ((invocation-root
+	 (paths-find-emacs-root invocation-directory invocation-name))
+	(installation-root
+	 (if (and configure-prefix-directory
+		  (file-directory-p configure-prefix-directory))
+	     configure-prefix-directory)))
+    (append (and invocation-root
+		 (list invocation-root))
+	    (and installation-root
+		 (list installation-root)))))
+
+;;; find-paths.el ends here
--- a/lisp/frame.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/frame.el	Mon Aug 13 10:26:29 2007 +0200
@@ -216,7 +216,9 @@
 		    (frame-remove-geometry-props initial-frame-plist))))
 	;; At this point, we know that we have a frame open, so we
 	;; can delete the terminal device.
-	(delete-device terminal-device)
+	;; (delete-device terminal-device)
+	;; Do it the same way Fkill_emacs does it. -slb
+	(delete-console terminal-console)
 	(setq terminal-frame nil)
 
 	;; FSFmacs sets frame-creation-function here, but no need.
--- a/lisp/itimer.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/itimer.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1,36 +1,22 @@
-;;; itimer.el --- Interval timers for XEmacs
-
-;; Copyright (C) 1988, 1991, 1993, 1997 Kyle E. Jones
-
-;; Author: Kyle Jones <kyle_jones@wonderworks.com>
-;; Keywords: internal, dumped
-
-;; This file is part of XEmacs.
-
-;; XEmacs is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; XEmacs is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with XEmacs; see the file COPYING.  If not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;; 02111-1307, USA.
-
-;;; Synched up with: Not in FSF
-
-;;; Commentary:
-
-;; This file is dumped with XEmacs.
-
-;; Send bug reports to kyle_jones@wonderworks.com
-
-;;; Code:
+;;; Interval timers for GNU Emacs
+;;; Copyright (C) 1988, 1991, 1993, 1997, 1998 Kyle E. Jones
+;;;
+;;; This program is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 2, or (at your option)
+;;; any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; A copy of the GNU General Public License can be obtained from this
+;;; program's author (send electronic mail to kyle@uunet.uu.net) or from
+;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
+;;; 02139, USA.
+;;;
+;;; Send bug reports to kyle_jones@wonderworks.com
 
 (provide 'itimer)
 
@@ -60,7 +46,7 @@
 ;;
 ;; See the doc strings of these functions for more information.
 
-(defvar itimer-version "1.06"
+(defvar itimer-version "1.07"
   "Version number of the itimer package.")
 
 (defvar itimer-list nil
@@ -83,12 +69,12 @@
 
 ;; This value is maintained internally; it does not determine
 ;; itimer granularity.  Itimer granularity is 1 second if your
-;; Emacs doens't support floats or your system doesn't have a
+;; Emacs doesn't support floats or your system doesn't have a
 ;; clock with microsecond granularity.  Otherwise granularity is
-;; to the microsend, although you can't possibly get timers to be
+;; to the microsecond, although you can't possibly get timers to be
 ;; executed with this kind of accuracy in practice.  There will
 ;; be delays due to system and Emacs internal activity that delay
-;; dealing with syunchronous events and process output.
+;; dealing with synchronous events and process output.
 (defvar itimer-next-wakeup itimer-short-interval
   "Itimer process will wakeup to service running itimers within this
 many seconds.")
@@ -517,7 +503,7 @@
 	tab-stop-list '(22 32 40 60 67))
   (abbrev-mode 0)
   (auto-fill-mode 0)
-  (buffer-disable-undo (current-buffer))
+  (buffer-flush-undo (current-buffer))
   (use-local-map itimer-edit-map)
   (set-syntax-table emacs-lisp-mode-syntax-table))
 
@@ -684,15 +670,20 @@
 	;; catch them and print a message.
 	(inhibit-quit t))
     (setq next-wakeup 600)
-    (if (and (boundp 'last-input-time) (consp last-input-time))
-	(setq last-event-time (list (car last-input-time)
-				    (cdr last-input-time)
-				    0)
-	      idle-time (itimer-time-difference (current-time)
-						last-event-time))
-      ;; no way to do this under FSF Emacs yet.
-      (setq last-event-time '(0 0 0)
-	    idle-time 0))
+    (cond ((and (boundp 'last-command-event-time)
+		(consp 'last-command-event-time))
+	   (setq last-event-time last-command-event-time
+		 idle-time (itimer-time-difference (current-time)
+						   last-event-time)))
+	  ((and (boundp 'last-input-time) (consp last-input-time))
+	   (setq last-event-time (list (car last-input-time)
+				       (cdr last-input-time)
+				       0)
+		 idle-time (itimer-time-difference (current-time)
+						   last-event-time)))
+	  ;; no way to do this under FSF Emacs yet.
+	  (t (setq last-event-time '(0 0 0)
+		   idle-time 0)))
     (while itimers
       (setq itimer (car itimers))
       (if (itimer-is-idle itimer)
@@ -741,9 +732,17 @@
 	    (set-itimer-value-internal itimer (itimer-restart itimer))
 	    (setq next-wakeup (min next-wakeup (itimer-value itimer))))))
       (setq itimers (cdr itimers)))
-    ;; if user is editing itimers, update displayed info
-    (if (eq major-mode 'itimer-edit-mode)
-	(list-itimers))
+    ;; make another sweep through the list to catch any timers
+    ;; that might have been added by timer functions above.
+    (setq itimers itimer-list)
+    (while itimers
+      (setq next-wakeup (min next-wakeup (itimer-value (car itimers)))
+	    itimers (cdr itimers)))
+    ;; if user is viewing the timer list, update displayed info.
+    (let ((b (get-buffer "*Itimer List*")))
+      (if (and b (get-buffer-window b))
+	  (save-excursion
+	    (list-itimers))))
     next-wakeup ))
 
 (defun itimer-process-filter (process string)
@@ -812,12 +811,17 @@
 	  itimer-timer (add-timeout itimer-short-interval
 				    'itimer-timer-driver nil nil))))
 
+(defun itimer-disable-timeout (timeout)
+  ;; Disgusting hack, but necessary because there is no other way
+  ;; to remove a timer that has a restart value from while that
+  ;; timer's function is being run.  (FSF Emacs only.)
+  (if (vectorp timeout)
+      (aset timeout 4 nil))
+  (disable-timeout timeout))
+
 (defun itimer-timer-wakeup ()
   (let ((inhibit-quit t))
-    (cond ((fboundp 'disable-timeout)
-	   (disable-timeout itimer-timer))
-	  ((fboundp 'cancel-timer)
-	   (cancel-timer itimer-timer)))
+    (itimer-disable-timeout itimer-timer)
     (setq itimer-timer (add-timeout itimer-short-interval
 				    'itimer-timer-driver nil 5))))
 
@@ -842,7 +846,7 @@
 
 (defun itimer-timer-driver (&rest ignored)
   ;; inhibit quit because if the user quits at an inopportune
-  ;; time, the timer process won't bne launched again and the
+  ;; time, the timer process won't be launched again and the
   ;; system stops working.  itimer-run-expired-timers allows
   ;; individual timer function to be aborted, so the user can
   ;; escape a feral timer function.
@@ -854,7 +858,7 @@
 	     (sleep nil))
 	(setq itimer-timer-last-wakeup now
 	      sleep (itimer-run-expired-timers elapsed))
-	(disable-timeout itimer-timer)
+	(itimer-disable-timeout itimer-timer)
 	(setq itimer-next-wakeup sleep
 	      itimer-timer (add-timeout sleep 'itimer-timer-driver nil 5)))))
 
@@ -867,5 +871,3 @@
   (if (fboundp 'add-timeout)
       (itimer-timer-wakeup)
     (itimer-process-wakeup)))
-
-;;; itimer.el ends here
--- a/lisp/lisp.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/lisp.el	Mon Aug 13 10:26:29 2007 +0200
@@ -62,8 +62,7 @@
   ;; XEmacs: evil hack! The other half of the evil hack below.
   (if (and (> arg 0) (looking-at "#s("))
       (goto-char (+ (point) 2)))
-  ;; XEmacs change -- don't bomb out if unbalanced sexp
-  (goto-char (or (scan-sexps (point) arg nil t) (buffer-end arg)))
+  (goto-char (or (scan-sexps (point) arg) (buffer-end arg)))
   (if (< arg 0) (backward-prefix-chars))
   ;; XEmacs: evil hack! Skip back over #s so that structures are read
   ;; properly.  the current cheesified syntax tables just aren't up to
--- a/lisp/loadup.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/loadup.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1,4 +1,4 @@
-;;; loadup.el --- load up standardly loaded Lisp files for XEmacs.
+;; loadup.el --- load up standardly loaded Lisp files for XEmacs.
 
 ;; Copyright (C) 1985, 1986, 1992, 1994, 1997 Free Software Foundation, Inc.
 ;; Copyright (C) 1996 Richard Mlynarik.
@@ -48,6 +48,8 @@
 (call-with-condition-handler 'really-early-error-handler
     #'(lambda ()
 	;; message not defined yet ...
+	(setq load-path (decode-path-internal (getenv "EMACSBOOTSTRAPLOADPATH")))
+
 	(external-debugging-output (format "\nUsing load-path %s" load-path))
 
 	;; We don't want to have any undo records in the dumped XEmacs.
@@ -76,7 +78,7 @@
 	;; minimize the size of the dumped image (if we don't do this,
 	;; there will be lots of extra space in the data segment filled
 	;; with garbage-collected junk)
-	(defun load-gc (file)
+	(defun pureload (file)
 	  (let ((full-path (locate-file file
 					load-path
 					(if load-ignore-elc-files
@@ -91,10 +93,11 @@
 	      nil)))
 
 	(load (concat default-directory "../lisp/dumped-lisp.el"))
+
 	(let ((dumped-lisp-packages preloaded-file-list)
 	      file)
 	  (while (setq file (car dumped-lisp-packages))
-	    (or (load-gc file)
+	    (or (pureload file)
 	      (progn
 		(external-debugging-output "Fatal error during load, aborting")
 		(kill-emacs 1)))
@@ -104,7 +107,11 @@
 		;; else still define a few functions.
 		(defun toolbar-button-p    (obj) "No toolbar support." nil)
 		(defun toolbar-specifier-p (obj) "No toolbar support." nil)))
-	  (fmakunbound 'load-gc))
+	  (fmakunbound 'pureload))
+
+	(if (null inhibit-package-init)
+	    (packages-load-package-dumped-lisps late-package-load-path))
+
 	)) ;; end of call-with-condition-handler
 
 ;; Fix up the preloaded file list
--- a/lisp/make-docfile.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/make-docfile.el	Mon Aug 13 10:26:29 2007 +0200
@@ -76,6 +76,9 @@
 
 ;; Then process the list of Lisp files.
 (define-function 'defalias 'define-function)
+
+(setq load-path (decode-path-internal (getenv "EMACSBOOTSTRAPLOADPATH")))
+
 (let ((temp-path (expand-file-name "." (car load-path))))
   (setq load-path (nconc (mapcar
 			  #'(lambda (i) (concat i "/"))
@@ -88,17 +91,22 @@
 (setq autoload-file-name "auto-autoloads.elc")
 (setq source-directory (concat default-directory "../lisp"))
 ;; (print (concat "Source directory: " source-directory))
+(load "find-paths.el")
 (load "packages.el")
-;; (load "setup-paths.el")
+(load "setup-paths.el")
+(load "dump-paths.el")
 
 (let (preloaded-file-list)
   (load (concat default-directory "../lisp/dumped-lisp.el"))
-  ;; Add package lisp directories to load-path (for autoloads)
-  ;; Add files dumped from lisp packages
-  ;(paths-setup-paths)
-  (packages-find-packages package-path t t)
-  (setq preloaded-file-list
-	(append preloaded-file-list packages-hardcoded-lisp))
+
+  (let ((package-preloaded-file-list
+	 (packages-collect-package-dumped-lisps late-package-load-path)))
+
+    (setq preloaded-file-list
+	  (append package-preloaded-file-list
+		  preloaded-file-list
+		  packages-hardcoded-lisp)))
+
   (while preloaded-file-list
     (let ((arg0 (packages-add-suffix (car preloaded-file-list)))
 	  arg)
--- a/lisp/minibuf.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/minibuf.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1934,6 +1934,8 @@
 	  (setq user-data (list filebuf dirbuff filewin dirwin))
 	  (set-window-buffer (frame-lowest-window frame) butbuff)
 	  (set-buffer butbuff)
+	  (when dir
+	    (setq default-directory dir))
 	  (when (featurep 'scrollbar)
 	    (set-specifier scrollbar-width 0 butbuff))
 	  (insert "                 ")
--- a/lisp/msw-glyphs.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/msw-glyphs.el	Mon Aug 13 10:26:29 2007 +0200
@@ -36,10 +36,23 @@
 
 ;;; Code:
 
-(eval-and-compile
+(progn
   (set-console-type-image-conversion-list
    'mswindows
-   '(("^#define" [string :data "[xpm]"])
+   `(("\\.bmp\\'" [bmp :file nil] 2)
+     ("\\`BM" [bmp :data nil] 2)
+     ,@(if (featurep 'xpm) '(("\\.xpm\\'" [xpm :file nil] 2)))
+     ,@(if (featurep 'xpm) '(("\\`/\\* XPM \\*/" [xpm :data nil] 2)))
+;    ,@(if (featurep 'xface) '(("\\`X-Face:" [xface :data nil] 2)))
+;    ,@(if (featurep 'gif) '(("\\.gif\\'" [gif :file nil] 2)
+;			     ("\\`GIF8[79]" [gif :data nil] 2)))
+;    ,@(if (featurep 'jpeg) '(("\\.jpe?g\\'" [jpeg :file nil] 2)))
+;    ;; all of the JFIF-format JPEG's that I've seen begin with
+;    ;; the following.  I have no idea if this is standard.
+;    ,@(if (featurep 'jpeg) '(("\\`\377\330\377\340\000\020JFIF"
+;			       [jpeg :data nil] 2)))
+;    ,@(if (featurep 'png) '(("\\.png\\'" [png :file nil] 2)))
+;    ,@(if (featurep 'png) '(("\\`\211PNG" [png :data nil] 2)))
      ("\\`X-Face:" [string :data "[xface]"])
      ("\\`/\\* XPM \\*/" [string :data "[xpm]"])
      ("\\`GIF87" [string :data "[gif]"])
@@ -49,25 +62,25 @@
      ;; strings are not allowed so they will be ignored.
      ("" [nothing])))
 
-  ;; finish initializing truncation glyph -- created internally
-  ;; because it has a built-in bitmap
   (set-glyph-image truncation-glyph "$" 'global 'mswindows)
-
-  ;; finish initializing continuation glyph -- created internally
-  ;; because it has a built-in bitmap
   (set-glyph-image continuation-glyph "\\" 'global 'mswindows)
-
-  ;; finish initializing hscroll glyph -- created internally
-  ;; because it has a built-in bitmap
   (set-glyph-image hscroll-glyph "$" 'global 'mswindows)
 
   (set-glyph-image octal-escape-glyph "\\")
   (set-glyph-image control-arrow-glyph "^")
   (set-glyph-image invisible-text-glyph " ...")
 
-  (set-glyph-image xemacs-logo
-		   "XEmacs <Images support is due in 20.6!>"
-		   'global 'mswindows)
+  (cond ((featurep 'xpm)
+	 (set-glyph-image xemacs-logo
+			  (concat "../etc/"
+				  (if emacs-beta-version
+				      "xemacs-beta.xpm"
+				    "xemacs.xpm"))
+			  'global 'mswindows))
+	(t
+	 (set-glyph-image xemacs-logo
+			  "XEmacs <insert spiffy graphic logo here>"
+			  'global 'mswindows)))
 )
 
 ;;; msw-glyphs.el ends here
--- a/lisp/package-get-base.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/package-get-base.el	Mon Aug 13 10:26:29 2007 +0200
@@ -1,19 +1,19 @@
 (setq package-get-base
 '((eudc
   (standards-version 1.0
-   version "1.0"
-   author-version "0.2"
-   date "1998-02-25"
-   build-date "1998-02-27"
+   version "1.01"
+   author-version "1.0"
+   date "1998-03-15"
+   build-date "1998-03-22"
    maintainer "Oscar Figueiredo <Oscar.Figueiredo@epfl.ch>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Emacs Unified Directory Client."
-   filename "eudc-1.0-pkg.tar.gz"
-   md5sum "c9a7556ad99205b4dab655781f8b2895"
-   size 25863
+   filename "eudc-1.01-pkg.tar.gz"
+   md5sum "c5b44d0c33a6232c8e2095e30259b870"
+   size 28687
    provides (eudc eudc-ldap eudc-ph)
    requires (xemacs-base)
    type regular
@@ -58,19 +58,19 @@
 ))
 (gnus
   (standards-version 1.0
-   version "1.09"
-   author-version "5.6.1"
-   date "1998-03-07"
-   build-date "1998-03-08"
+   version "1.11"
+   author-version "5.6.3"
+   date "1998-03-19"
+   build-date "1998-03-20"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.09-pkg.tar.gz"
-   md5sum "8e5dd9a1d861f59a5961ba22d511fcbe"
-   size 1648527
+   filename "gnus-1.11-pkg.tar.gz"
+   md5sum "13d451110a73a55cd8537a9d38909b66"
+   size 1650283
    provides (gnus message)
    requires (gnus w3 mh-e mailcrypt rmail mail-lib xemacs-base)
    type regular
@@ -229,19 +229,19 @@
 ))
 (w3
   (standards-version 1.0
-   version "1.03"
-   author-version "4.0pre14"
-   date "1998-01-20"
-   build-date "1998-02-27"
+   version "1.04"
+   author-version "4.0pre16"
+   date "1998-03-07"
+   build-date "1998-03-08"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution experimental
    priority high
    category "comm"
    dump nil
    description "A Web browser."
-   filename "w3-1.03-pkg.tar.gz"
-   md5sum "1870ae4bc79d5c38827fd6fdce0fa16d"
-   size 584854
+   filename "w3-1.04-pkg.tar.gz"
+   md5sum "41efc75e9ea1cc6287e5e86d89cb3572"
+   size 584497
    provides (w3 url)
    requires (w3 mail-lib xemacs-base)
    type regular
@@ -381,57 +381,57 @@
 ))
 (edebug
   (standards-version 1.0
-   version "1.03"
-   author-version "20.5b29"
-   date "1998-01-24"
-   build-date "1998-02-27"
+   version "1.04"
+   author-version "21.0b31"
+   date "1998-03-12"
+   build-date "1998-03-20"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "libs"
    dump nil
    description "An Emacs Lisp debugger."
-   filename "edebug-1.03-pkg.tar.gz"
-   md5sum "767100572c7dd771f59277a808515a3e"
-   size 117962
+   filename "edebug-1.04-pkg.tar.gz"
+   md5sum "ac269699ffcfba6396f1cd27e3c2bbed"
+   size 118166
    provides (edebug cl-read cust-print eval-reg cl-specs)
    requires (xemacs-base)
    type regular
 ))
 (efs
   (standards-version 1.0
-   version "1.07"
-   author-version "1.16"
-   date "1998-02-17"
-   build-date "1998-02-27"
+   version "1.08"
+   author-version "1.16x1"
+   date "1998-03-21"
+   build-date "1998-03-21"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Treat files on remote systems the same as local files."
-   filename "efs-1.07-pkg.tar.gz"
-   md5sum "07a76f9a45d62d1087fc8a79049bb665"
-   size 370308
+   filename "efs-1.08-pkg.tar.gz"
+   md5sum "1c650947f5c9011455327602a2e7f25b"
+   size 358151
    provides (efs)
    requires (xemacs-base vm dired)
    type regular
 ))
 (mail-lib
   (standards-version 1.0
-   version "1.07"
-   author-version "20.5b29"
-   date "1998-02-24"
-   build-date "1998-02-27"
+   version "1.08"
+   author-version "21.0b31"
+   date "S and SLB."
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.07-pkg.tar.gz"
-   md5sum "58f719dd3b9e4e6f20f9c38ca2776b79"
-   size 118919
+   filename "mail-lib-1.08-pkg.tar.gz"
+   md5sum "e0c4144f55c0d4b40d24125692420c97"
+   size 119632
    provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini rmailout sendmail smtpmail)
    requires (xemacs-base)
    type single
@@ -476,23 +476,42 @@
 ))
 (xemacs-devel
   (standards-version 1.0
-   version "1.09"
-   author-version "20.5b30"
-   date "1998-03-03"
-   build-date "1998-03-08"
+   version "1.10"
+   author-version "21.0b31"
+   date "1998-03-09"
+   build-date "1998-03-20"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Emacs Lisp developer support."
-   filename "xemacs-devel-1.09-pkg.tar.gz"
-   md5sum "d81dbc1af8301c2339720936a1e77768"
-   size 75206
-   provides (docref eldoc elp find-func ielm regexp-opt trace)
+   filename "xemacs-devel-1.10-pkg.tar.gz"
+   md5sum "4f9d605e05c24d1219ed74f3f3553b89"
+   size 76390
+   provides (docref eldoc elp find-func hide-copyleft ielm regexp-opt trace)
    requires (xemacs-base)
    type single
 ))
+(edict
+  (standards-version 1.0
+   version "1.01"
+   author-version "0.9.6X1"
+   date "1998-03-13"
+   build-date "1998-03-13"
+   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   distribution mule
+   priority high
+   category "mule"
+   dump t
+   description "Lisp Interface to EDICT, Kanji Dictionary"
+   filename "edict-1.01-pkg.tar.gz"
+   md5sum "f3e4eab5058a028d1d5224adf8d6fc91"
+   size 85019
+   provides ()
+   requires (skk egg-its mule-base xemacs-base)
+   type regular
+))
 (egg-its
   (standards-version 1.0
    version "1.04"
@@ -552,19 +571,19 @@
 ))
 (mule-base
   (standards-version 1.0
-   version "1.10"
-   author-version "20.5b30"
-   date "1998-03-07"
-   build-date "1998-03-08"
+   version "1.11"
+   author-version "21.0b31"
+   date "1998-03-13"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump t
    description "Basic Mule support, required for building with Mule."
-   filename "mule-base-1.10-pkg.tar.gz"
-   md5sum "9eeb07585a000efb9172f2c081eaaad3"
-   size 487358
+   filename "mule-base-1.11-pkg.tar.gz"
+   md5sum "370c0a3dc8569beded926950c5e447f4"
+   size 487578
    provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help)
    requires (xemacs-base)
    type regular
@@ -590,19 +609,19 @@
 ))
 (calc
   (standards-version 1.0
-   version "1.02"
-   author-version "2.02f"
+   version "1.03"
+   author-version "2.02fX1"
    date "1998-03-03"
-   build-date "1998-03-08"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "Emacs calculator"
-   filename "calc-1.02-pkg.tar.gz"
-   md5sum "9e5f89ecd0f03e1abab4d78ca4dbe79e"
-   size 1158346
+   filename "calc-1.03-pkg.tar.gz"
+   md5sum "842bee3ddff8695683917d92afd2b401"
+   size 1158637
    provides (calc)
    requires ()
    type regular
@@ -628,19 +647,19 @@
 ))
 (edit-utils
   (standards-version 1.0
-   version "1.13"
-   author-version "20.5b30"
-   date "1998-03-02"
-   build-date "1998-03-08"
+   version "1.14"
+   author-version "21.0b31"
+   date "1998-03-19"
+   build-date "1998-03-20"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "oa"
    dump nil
    description "Miscellaneous editor extensions, you probably need this."
-   filename "edit-utils-1.13-pkg.tar.gz"
-   md5sum "89d088c6ac182fe5941d7ed3d239544f"
-   size 557868
+   filename "edit-utils-1.14-pkg.tar.gz"
+   md5sum "dfa29846f0dfc07b5f4a22ce93efe996"
+   size 557068
    provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren popper mode-motion+ outl-mouse page-ext blink-paren paren permanent-buffers recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place tempo toolbar-utils tree-menu uniquify where-was-i-db)
    requires (xemacs-base)
    type single
@@ -704,19 +723,19 @@
 ))
 (ispell
   (standards-version 1.0
-   version "1.06"
-   author-version "3.0beta"
-   date "1998-02-25"
-   build-date "1998-02-27"
+   version "1.07"
+   author-version "3.0"
+   date "1998-03-21"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "Spell-checking with GNU ispell."
-   filename "ispell-1.06-pkg.tar.gz"
-   md5sum "7b04d028581c0c7c3b9c7812dbaf70ca"
-   size 65123
+   filename "ispell-1.07-pkg.tar.gz"
+   md5sum "7c366f560ccde1c513e3cbcfea739a1e"
+   size 64455
    provides (ispell)
    requires ()
    type regular
@@ -742,19 +761,19 @@
 ))
 (psgml
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "1.01"
-   date "1998-02-06"
-   build-date "1998-03-08"
+   date "1998-03-20"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "oa"
    dump nil
    description "Validated HTML/SGML editing."
-   filename "psgml-1.05-pkg.tar.gz"
-   md5sum "d9d9bcb7434b0bf39724e4f3d4119e22"
-   size 402844
+   filename "psgml-1.06-pkg.tar.gz"
+   md5sum "9dfb79a1f9532a0725f0d8a8aafb863b"
+   size 418577
    provides (psgml sgml)
    requires (edit-utils)
    type regular
@@ -989,23 +1008,42 @@
 ))
 (c-support
   (standards-version 1.0
-   version "1.05"
-   author-version "20.5b29"
-   date "1998-02-26"
-   build-date "1998-02-27"
+   version "1.06"
+   author-version "21.0b31"
+   date "1998-03-21"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.05-pkg.tar.gz"
-   md5sum "9f82872d426d4364543bc9e36b59074d"
-   size 41785
+   filename "c-support-1.06-pkg.tar.gz"
+   md5sum "358de6577a1e5405e9b065b9661427d1"
+   size 41866
    provides (c-comment-edit cmacexp hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
 ))
+(cc-mode
+  (standards-version 1.0
+   version "1.09"
+   author-version "5.22"
+   date "1998-03-05"
+   build-date "1998-03-16"
+   maintainer "Barry Warsaw <cc-mode-help@python.org>"
+   distribution stable
+   priority medium
+   category "prog"
+   dump nil
+   description "C, C++ and Java language support."
+   filename "cc-mode-1.09-pkg.tar.gz"
+   md5sum "1682c56b515ea634e1b21b10321bcced"
+   size 151206
+   provides (cc-mode)
+   requires (xemacs-base)
+   type regular
+))
 (debug
   (standards-version 1.0
    version "1.01"
@@ -1027,19 +1065,19 @@
 ))
 (ediff
   (standards-version 1.0
-   version "1.05"
-   author-version "2.70"
+   version "1.06"
+   author-version "2.70.1"
    date "1998-02-25"
-   build-date "1998-02-27"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "Interface over GNU patch."
-   filename "ediff-1.05-pkg.tar.gz"
-   md5sum "51b558d3af30e129d82ca5a62a2eefaa"
-   size 244330
+   filename "ediff-1.06-pkg.tar.gz"
+   md5sum "4c604cf4b004557659252ba82b8a27a9"
+   size 244441
    provides (ediff)
    requires (pcl-cvs dired xemacs-base)
    type regular
@@ -1160,19 +1198,19 @@
 ))
 (vc
   (standards-version 1.0
-   version "1.05"
-   author-version "20.5b30"
-   date "1998-03-08"
-   build-date "1998-03-08"
+   version "1.06"
+   author-version "21.0b31"
+   date "1998-03-20"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump t
    description "Version Control for Free systems."
-   filename "vc-1.05-pkg.tar.gz"
-   md5sum "9448703c390f3b4e1c0a4b2a2daf7da9"
-   size 74464
+   filename "vc-1.06-pkg.tar.gz"
+   md5sum "04519e6a475308de47da52f3cb927e68"
+   size 74601
    provides (vc)
    requires (dired xemacs-base)
    type regular
@@ -1255,19 +1293,19 @@
 ))
 (reftex
   (standards-version 1.0
-   version "1.02"
-   author-version "3.18.0.4"
-   date "1998-02-25"
-   build-date "1998-03-08"
+   version "1.03"
+   author-version "3.22"
+   date "1998-03-21"
+   build-date "1998-03-22"
    maintainer "Carsten Dominik <dominik@strw.LeidenUniv.nl>"
    distribution stable
    priority medium
    category "wp"
    dump nil
    description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.02-pkg.tar.gz"
-   md5sum "15da65e996854bdc212bbfaff9db8417"
-   size 140412
+   filename "reftex-1.03-pkg.tar.gz"
+   md5sum "7e650c64e653631b1cb8c14975af6941"
+   size 141804
    provides (reftex)
    requires (xemacs-base)
    type regular
@@ -1331,19 +1369,19 @@
 ))
 (viper
   (standards-version 1.0
-   version "1.05"
-   author-version "3.005"
+   version "1.06"
+   author-version "3.02"
    date "1998-02-25"
-   build-date "1998-02-27"
+   build-date "1998-03-22"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "wp"
    dump nil
    description "VI emulation support."
-   filename "viper-1.05-pkg.tar.gz"
-   md5sum "9fdea665cb1021fd8ce70ef17ba1a19d"
-   size 261076
+   filename "viper-1.06-pkg.tar.gz"
+   md5sum "d868d8e027ae6e86b77a9737acab6885"
+   size 261257
    provides (viper)
    requires (xemacs-base)
    type regular
--- a/lisp/packages.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/packages.el	Mon Aug 13 10:26:29 2007 +0200
@@ -48,6 +48,7 @@
 ;; Because of all this, make sure that the stuff you put here really
 ;; belongs here.
 
+;; This file requires find-paths.el.
 
 ;;; Code:
 
@@ -56,6 +57,18 @@
 (defvar packages-package-list nil
   "database of loaded packages and version numbers")
 
+(defvar early-packages nil
+  "Packages early in the load path.")
+
+(defvar early-package-load-path nil
+  "Load path for packages early in the load path.")
+
+(defvar early-packages nil
+  "Packages late in the load path.")
+
+(defvar late-package-load-path nil
+  "Load path for packages late in the load path.")
+
 (defun package-get-key-1 (info key)
   "Locate keyword `key' in list."
   (cond ((null info)
@@ -249,151 +262,6 @@
   ;; Nothing for the moment
   nil)
 
-;; The following function is called from temacs
-(defun packages-find-packages-1 (package path-only append-p user-package)
-  "Search the supplied directory for associated directories.
-The top level is assumed to look like:
-info/           Contain texinfo files for lisp installed in this hierarchy
-etc/            Contain data files for lisp installled in this hierarchy
-lisp/           Contain directories which either have straight lisp code
-                or are self-contained packages of their own.
-
-If the argument `append-p' is non-nil, the found directories will be
-appended to the paths, otherwise, they will be prepended.
-
-This is an internal function.  Do not call it after startup."
-  ;; Info files
-  (if (and (null path-only) (file-directory-p (concat package "/info")))
-      (let ((dir (concat package "/info/")))
-	(if (not (member dir Info-default-directory-list))
-	    (nconc Info-default-directory-list (list dir)))))
-  ;; Data files
-  (if (and (null path-only) (file-directory-p (concat package "/etc")))
-      (setq data-directory-list
-	    (if append-p
-		(append data-directory-list (list (concat package "/etc/")))
-	      (cons (concat package "/etc/") data-directory-list))))
-  ;; Lisp files
-  (if (file-directory-p (concat package "/lisp"))
-      (progn
-;	(print (concat "DIR: "
-;		       (if user-package "[USER]" "")
-;		       package
-;		       "/lisp/"))
-	(setq load-path
-	      (if append-p
-		  (append load-path (list (concat package "/lisp/")))
-		(cons (concat package "/lisp/") load-path)))
-
-	;; Locate and process a dumped-lisp.el file if it exists
-	(if (and (running-temacs-p)
-		 (file-exists-p (concat package "/lisp/dumped-lisp.el")))
-	    (let (package-lisp)
-	      (let (preloaded-file-list)
-		(load (concat package "/lisp/dumped-lisp.el")))
-	      (if package-lisp
-		  (progn
-		    (if (boundp 'preloaded-file-list)
-			(setq preloaded-file-list
-			      (append preloaded-file-list package-lisp)))
-		    (if (fboundp 'load-gc)
-			(setq dumped-lisp-packages
-			      (append dumped-lisp-packages package-lisp)))))))
-
-	(if user-package
-	    (condition-case error
-		(load (concat package "/lisp/"
-			      (file-name-sans-extension autoload-file-name))
-		      t)
-	      (error
-	       (warn (format "Autoload error in: %s/lisp/:\n\t%s"
-			     package
-			     (with-output-to-string
-			       (display-error error nil)))))))
-	(let ((dirs (directory-files (concat package "/lisp/")
-				     t "^[^-.]" nil 'dirs-only))
-	      dir)
-	  (while dirs
-	    (setq dir (car dirs))
-;	    (print (concat "DIR: " dir "/"))
-	    (setq load-path
-		  (if append-p
-		      (append load-path (list (concat dir "/")))
-		    (cons (concat dir "/") load-path)))
-
-	    ;; Locate and process a dumped-lisp.el file if it exists
-	    (if (and (running-temacs-p)
-		     (file-exists-p (concat dir "/dumped-lisp.el")))
-		(let (package-lisp)
-		  (let (preloaded-file-list)
-		    (load (concat dir "/dumped-lisp.el")))
-		  (if package-lisp
-		      (progn
-			(if (boundp 'preloaded-file-list)
-			    (setq preloaded-file-list
-				  (append preloaded-file-list package-lisp)))
-			(if (fboundp 'load-gc)
-			    (setq dumped-lisp-packages
-				  (append dumped-lisp-packages
-					  package-lisp)))))))
-
-	    (if user-package
-		(condition-case error
-		    (progn
-;		      (print
-;		       (concat dir "/"
-;			       (file-name-sans-extension autoload-file-name)))
-		      (load
-		       (concat dir "/"
-			       (file-name-sans-extension autoload-file-name))
-		       t))
-		  (error
-		   (warn (format "Autoload error in: %s/:\n\t%s"
-				 dir
-				 (with-output-to-string
-				   (display-error error nil)))))))
-	    (packages-find-packages-1 dir path-only append-p user-package)
-	    (setq dirs (cdr dirs)))))))
-
-;; The following function is called from temacs
-(defun packages-find-packages-2 (path path-only append-p suppress-user)
-  "Search the supplied path for associated directories.
-If the argument `append-p' is non-nil, the found directories will be
-appended to the paths, otherwise, they will be prepended.
-
-This is an internal function.  Do not call it after startup."
-  (let (dir)
-    (while path
-      (setq dir (car path))
-      ;; (prin1 (concat "Find: " (expand-file-name dir) "\n"))
-      (if (null (and (or suppress-user inhibit-package-init)
-		     (string-match "^~" dir)))
-	  (progn
-	    ;; (print dir)
-	    (packages-find-packages-1 (expand-file-name dir)
-				      path-only
-				      append-p
-				      (string-match "^~" dir))))
-      (setq path (cdr path)))))
-
-;; The following function is called from temacs
-(defun packages-find-packages (pkg-path path-only &optional suppress-user)
-  "Search the supplied path for additional info/etc/lisp directories.
-Lisp directories if configured prior to build time will have equivalent
-status as bundled packages.
-If the argument `path-only' is non-nil, only the `load-path' will be set,
-otherwise data directories and info directories will be added.
-If the optional argument `suppress-user' is non-nil, package directories
-rooted in a user login directory (like ~/.xemacs) will not be searched.
-This is used at dump time to suppress the builder's local environment."
-  (let ((prefix-path nil))
-    (while (and pkg-path (car pkg-path))
-      (setq prefix-path (cons (car pkg-path) prefix-path)
-	    pkg-path (cdr pkg-path)))
-    (packages-find-packages-2 (cdr pkg-path) path-only t suppress-user)
-    (packages-find-packages-2 prefix-path path-only nil suppress-user)))
-
-
 ;; Data-directory is really a list now.  Provide something to search it for
 ;; directories.
 
@@ -422,10 +290,159 @@
     (setq dir-list data-directory-list))
   (locate-file name dir-list))
 
-;; If we are being loaded as part of being dumped, bootstrap the rest of the
-;; load-path for loaddefs.
-(if (fboundp 'load-gc)
-    (packages-find-packages package-path t t))
+;; Path setup
+
+(defun packages-find-package-path (roots)
+  "Construct the package path underneath installation roots ROOTS."
+  (let ((envvar-value (getenv "EMACSPACKAGEPATH")))
+    (if envvar-value
+	(decode-path-internal envvar-value)
+      (let ((site-base-directory (paths-find-site-directory roots "packages"))
+	    (version-base-directory (paths-find-version-directory roots "packages")))
+	(if (or site-base-directory version-base-directory)
+	    (let ((site-mule-directory
+		   (and (featurep 'mule)
+			(paths-find-site-directory roots
+						   "mule-packages")))
+		  (version-mule-directory
+		   (and (featurep 'mule)
+			(paths-find-version-directory roots
+						      "mule-packages"))))
+	      (append '("~/.xemacs/")
+		      '(nil)
+		      (and version-mule-directory
+			   (null (string-equal version-mule-directory
+					      site-mule-directory))
+			   (list version-mule-directory))
+		      (and site-mule-directory
+			   (list site-mule-directory))
+		      (and version-base-directory
+			   (null (string-equal version-base-directory
+					      site-base-directory))
+			   (list version-base-directory))
+		      (and site-base-directory
+			   (list site-base-directory))))
+	  configure-package-path)))))
+
+(defvar packages-special-bases '("etc" "info" "lisp" "lib-src" "bin")
+  "Special subdirectories of packages.")
+
+(defun packages-find-packages-in-directories (directories)
+  "Find all packages underneath directories in DIRECTORIES."
+  (paths-find-recursive-path directories
+			     (append paths-version-control-bases
+				     packages-special-bases)))
+
+(defun packages-split-path (path)
+  "Split PATH at NIL, return pair with two components.
+The second component is shared with PATH."
+  (let ((reverse-early '()))
+    (while (and path (null (null (car path))))
+      (setq reverse-early (cons (car path) reverse-early))
+      (setq path (cdr path)))
+    (if (null path)
+	(cons nil path)
+      (cons (reverse reverse-early) (cdr path)))))
+
+(defun packages-find-packages (package-path &optional inhibit)
+  "Search for all packages in PACKAGE-PATH.
+PACKAGE-PATH may distinguish (by NIL-separation) between early
+and late packages.
+If INHIBIT is non-NIL, return empty paths.
+This returns (CONS EARLY-PACKAGES LATE-PACKAGES)."
+  (if inhibit
+      (cons '() '())
+    (let* ((stuff (packages-split-path package-path))
+	   (early (car stuff))
+	   (late (cdr stuff)))
+      (cons (packages-find-packages-in-directories early)
+	    (packages-find-packages-in-directories late)))))
+
+(defun packages-find-package-library-path (packages suffixes)
+  "Construct a path into a component of the packages hierarchy.
+PACKAGES is a list of package directories.
+SUFFIXES is a list of names of package subdirectories to look for."
+  (let ((directories
+	 (apply
+	  #'append
+	  (mapcar #'(lambda (package)
+		      (mapcar #'(lambda (suffix)
+				  (concat package suffix))
+			      suffixes))
+		  packages))))
+    (paths-directories-which-exist directories)))
+
+(defun packages-find-package-load-path (packages)
+  "Construct the load-path component for packages.
+PACKAGES is a list of package directories."
+  (paths-find-recursive-load-path
+   (packages-find-package-library-path packages '("lisp/"))))
+
+(defun packages-find-package-exec-path (packages)
+  (packages-find-package-library-path packages
+				   (list (concat "bin/" system-configuration "/")
+					 "lib-src/")))
+
+(defun packages-find-package-info-path (packages)
+  (packages-find-package-library-path packages '("info/")))
+
+(defun packages-find-package-data-path (packages)
+  (packages-find-package-library-path packages '("etc/")))
+
+;; Loading package initialization files
+
+(defun packages-load-package-lisps (package-load-path base)
+  "Load all Lisp files of a certain name along a load path.
+BASE is the base name of the files."
+  (mapc #'(lambda (dir)
+	    (let ((file-name (expand-file-name base dir)))
+	      (if (file-exists-p file-name)
+		  (condition-case error
+		      (load file-name)
+		    (error
+		     (warn (format "Autoload error in: %s:\n\t%s"
+				   file-name
+				   (with-output-to-string
+				     (display-error error nil)))))))))
+	package-load-path))
+
+(defun packages-load-package-auto-autoloads (package-load-path)
+  "Load auto-autoload files along a load path."
+  (packages-load-package-lisps package-load-path
+			       (file-name-sans-extension autoload-file-name)))
+
+(defun packages-handle-package-dumped-lisps (handle package-load-path)
+  "Load dumped-lisp.el files along a load path.
+Call HANDLE on each file off definitions of PACKAGE-LISP there."
+  (mapc #'(lambda (dir)
+	    (let ((file-name (expand-file-name "dumped-lisp.el" dir)))
+	      (if (file-exists-p file-name)
+		  (let (package-lisp
+			;; 20.4 packages could set this
+			preloaded-file-list)
+		    (load file-name)
+		    ;; dumped-lisp.el could have set this ...
+		    (if package-lisp
+			(mapc #'(lambda (base)
+				  (funcall handle (expand-file-name base dir)))
+			      package-lisp))))))
+	  package-load-path))
+
+(defun packages-load-package-dumped-lisps (package-load-path)
+  "Load dumped-lisp.el files along a load path.
+Also load files off PACKAGE-LISP definitions there"
+  (packages-handle-package-dumped-lisps #'load package-load-path))
+
+(defun packages-collect-package-dumped-lisps (package-load-path)
+  "Load dumped-lisp.el files along a load path.
+Return list of files off PACKAGE-LISP definitions there"
+  (let ((*files* '()))
+    (packages-handle-package-dumped-lisps
+     #'(lambda (file)
+	 (setq *files* (cons (file-name-nondirectory file)
+			     *files*)))
+     package-load-path)
+    (reverse *files*)))
 
 (provide 'packages)
 
--- a/lisp/setup-paths.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/setup-paths.el	Mon Aug 13 10:26:29 2007 +0200
@@ -31,322 +31,51 @@
 
 ;; This file is dumped with XEmacs.
 
-;; This file contains the machinery necessary to find the various
-;; paths into the XEmacs hierarchy.
-
-(defvar paths-version-control-bases '("RCS" "CVS" "SCCS")
-  "File bases associated with version control.")
-
-(defun paths-find-recursive-path (directories &optional exclude)
-  "Return a list of the directory hierarchy underneath DIRECTORIES.
-The returned list is sorted by pre-order and lexicographically."
-  (let ((path '()))
-    (while directories
-      (let ((directory (file-name-as-directory
-			(expand-file-name
-			 (car directories)))))
-	(if (file-directory-p directory)
-	    (let ((raw-dirs (directory-files directory nil "^[^-.]" nil 'dirs-only))
-		  (reverse-dirs '()))
-
-	      (while raw-dirs
-		(if (null (member (car raw-dirs) exclude))
-		    (setq reverse-dirs
-			  (cons (expand-file-name (car raw-dirs) directory)
-				reverse-dirs)))
-		(setq raw-dirs (cdr raw-dirs)))
-
-	      (let ((sub-path
-		     (paths-find-recursive-path (reverse reverse-dirs) exclude)))
-		(setq path (nconc path
-				  (list directory)
-				  sub-path))))))
-      (setq directories (cdr directories)))
-    path))
-
-(defun paths-find-recursive-load-path (directories)
-  "Construct a recursive load path underneath DIRECTORIES."
-  (paths-find-recursive-path directories paths-version-control-bases))
-
-(defun paths-emacs-root-p (directory)
-  "Check if DIRECTORY is a plausible installation root for XEmacs."
-  (or
-   ;; installed
-   (and (boundp 'emacs-version)
-	(file-directory-p
-	 (concat directory "lib/xemacs-" (construct-emacs-version))))
-   ;; in-place
-   (and 
-    (file-directory-p (concat directory "lib-src"))
-    (file-directory-p (concat directory "lisp"))
-    (file-directory-p (concat directory "src")))))
+;; This file describes and constructs the various paths into the
+;; XEmacs hierarchy from a global viewpoint.
 
-(defun paths-find-emacs-root
-  (invocation-directory invocation-name)
-  "Find the run-time root of XEmacs."
-  (let ((maybe-root-1 (file-name-as-directory
-		       (expand-file-name ".." invocation-directory)))
-	(maybe-root-2 (file-name-as-directory
-		       (expand-file-name "../.." invocation-directory))))
-    (cond
-     ((paths-emacs-root-p maybe-root-1)
-      maybe-root-1)
-     ((paths-emacs-root-p maybe-root-2)
-      maybe-root-2)
-     (t
-      (let ((maybe-symlink (file-symlink-p (concat invocation-directory
-						   invocation-name))))
-	(if maybe-symlink
-	    (let ((directory (file-name-directory maybe-symlink)))
-	      (paths-find-emacs-root directory invocation-name))
-	  nil))))))
-
-(defun paths-construct-emacs-directory (root suffix base)
-  "Construct a directory name within the XEmacs hierarchy."
-  (file-name-as-directory
-   (expand-file-name 
-    (concat
-     (file-name-as-directory root)
-     suffix
-     base))))
-
-(defun paths-find-emacs-directory (roots suffix base &optional envvar default)
-  "Find a directory in the XEmacs hierarchy.
-ROOTS must be a list of installation roots.
-SUFFIX is the subdirectory from there.
-BASE is the base to look for.
-ENVVAR is the name of the environment variable that might also
-specify the directory.
-DEFAULT is a fall-back value."
-  (let ((envvar-value (and envvar (getenv envvar))))
-    (if (and envvar-value
-	     (file-directory-p envvar-value))
-	(file-name-as-directory envvar-value)
-      (catch 'gotcha
-	(while roots
-	  (let* ((root (car roots))
-		 (path (paths-construct-emacs-directory root suffix base)))
-	    ;; installed
-	    (if (file-directory-p path)
-		(throw 'gotcha path)
-	      (let ((path (paths-construct-emacs-directory root "" base)))
-		;; in-place
-		(if (file-directory-p path)
-		    (throw 'gotcha path)))))
-	  (setq roots (cdr roots)))
-	(if (and default
-		 (file-directory-p default))
-	    (file-name-as-directory default)
-	  nil)))))
-
-(defun paths-find-site-directory (roots base &optional envvar default)
-  "Find a site-specific directory in the XEmacs hierarchy."
-  (paths-find-emacs-directory roots "lib/xemacs/" base envvar default))
-
-(defun paths-find-version-directory (roots base &optional envvar default)
-  "Find a version-specific directory in the XEmacs hierarchy."
-  (paths-find-emacs-directory roots
-			      (concat "lib/xemacs-" (construct-emacs-version) "/")
-			      base
-			      envvar default))
-
-(defun paths-find-architecture-directory (roots base &optional envvar default)
-  "Find an architecture-specific directory in the XEmacs hierarchy."
-  (or
-   ;; from more to less specific
-   (paths-find-version-directory roots
-				 (concat base system-configuration)
-				 envvar default)
-   (paths-find-version-directory roots
-				 system-configuration
-				 envvar default)
-   (paths-find-version-directory roots
-				 base
-				 envvar default)))
-  
-(defvar paths-path-emacs-version nil
-  "Emacs version as it appears in paths.")
+;; It requires find-paths.el and packages.el.
+
+;;; Code:
 
-(defun construct-emacs-version ()
-  "Construct the raw version number of XEmacs in the form XX.XX."
-  ;; emacs-version isn't available early, but we really don't care then
-  (if (null (boundp 'emacs-version))
-      ""
-  (or paths-path-emacs-version		; cache
-      (progn
-	(string-match "\\`[^0-9]*\\([0-9]+\\.[0-9]+\\)" emacs-version)
-	(let ((version (substring emacs-version
-				  (match-beginning 1) (match-end 1))))
-	  (if (string-match "(beta *\\([0-9]+\\))" emacs-version)
-	      (setq version (concat version
-				    "-b"
-				    (substring emacs-version
-					       (match-beginning 1) (match-end 1)))))
-	  (setq paths-path-emacs-version version)
-	  version)))))
-  
-(defun paths-find-emacs-path (roots suffix base &optional envvar default)
-  "Find a path in the XEmacs hierarchy.
-ROOTS must be a list of installation roots.
-SUFFIX is the subdirectory from there.
-BASE is the base to look for.
-ENVVAR is the name of the environment variable that might also
-specify the path.
-DEFAULT is a fall-back value."
-  (let ((envvar-value (and envvar (getenv envvar))))
-    (if (and (fboundp 'parse-colon-path) envvar-value)
-	(parse-colon-path envvar-value)
-      (let ((directory (paths-find-emacs-directory roots base suffix)))
-	(if (and directory (file-directory-p directory))
-	    (list directory)
-	  (paths-directories-which-exist default))))))
-
-(defun paths-directories-which-exist (directories)
-  "Return the directories among DIRECTORIES."
-  (let ((reverse-directories '()))
-    (while directories
-      (if (file-directory-p (car directories))
-	  (setq reverse-directories 
-		(cons (car directories)
-		      reverse-directories)))
-      (setq directories (cdr directories)))
-    (reverse reverse-directories)))
-
-(defun paths-find-site-path (roots base &optional envvar default)
-  "Find a path underneath the site hierarchy."
-  (paths-find-emacs-path roots "lib/xemacs/" base envvar default))
-
-(defun paths-find-version-path (roots base &optional envvar default)
-  "Find a path underneath the site hierarchy."
-  (paths-find-emacs-path roots
-			 (concat "lib/xemacs-" (construct-emacs-version) "/")
-			 base
-			 envvar default))
-		   
-; Packages are special ...
-
-(defun paths-find-package-path (roots)
-  "Construct the package path underneath installation roots ROOTS."
-  (let ((envvar-value (getenv "EMACSPACKAGEPATH")))
-    (if (and (fboundp 'parse-colon-path) envvar-value)
-	(parse-colon-path envvar-value)
-      (let ((base-directory (paths-find-site-directory roots "packages")))
-	(if base-directory
-	    (let ((mule-directory (and (featurep 'mule)
-				       (paths-find-site-directory roots
-								  "mule-packages"))))
-	      (append '("~/.xemacs/")
-		      '(nil)
-		      (and mule-directory
-			   (list mule-directory))
-		      (list base-directory)))
-	  configure-package-path)))))
+(defun paths-find-site-lisp-directory (roots)
+  "Find the site Lisp directory of the XEmacs hierarchy."
+  (paths-find-site-directory roots "site-lisp"
+			     nil
+			     configure-site-directory))
 
-(defvar paths-package-special-bases '("etc" "info" "lisp" "lib-src" "bin")
-  "Special subdirectories of packages.")
-
-(defun paths-find-packages-in-directories (directories)
-  "Find all packages underneath directories in DIRECTORIES."
-  (paths-find-recursive-path directories
-			     (append paths-version-control-bases
-				     paths-package-special-bases)))
-
-(defun paths-split-path (path)
-  "Split PATH at NIL, return pair with two components.
-The second component is shared with PATH."
-  (let ((reverse-early '()))
-    (while (and path (null (null (car path))))
-      (setq reverse-early (cons (car path) reverse-early))
-      (setq path (cdr path)))
-    (if (null path)
-	(cons nil path)
-      (cons (reverse reverse-early) (cdr path)))))
-
-(defun paths-find-packages (package-path)
-  "Search for all packages in PACKAGE-PATH.
-PACKAGE-PATH may distinguish (by NIL-separation) between early
-and late packages.
-This returns (CONS EARLY-PACKAGES LATE-PACKAGES)."
-  (let* ((stuff (paths-split-path package-path))
-	 (early (car stuff))
-	 (late (cdr stuff)))
-    (cons (paths-find-packages-in-directories early)
-	  (paths-find-packages-in-directories late))))
+(defun paths-find-lisp-directory (roots)
+  "Find the main Lisp directory of the XEmacs hierarchy."
+  (paths-find-version-directory roots "lisp"
+				nil
+				configure-lisp-directory))
 
-(defun paths-find-package-library-path (packages suffixes)
-  "Construct a path into a component of the packages hierarchy.
-PACKAGES is a list of package directories.
-SUFFIXES is a list of names of package subdirectories to look for."
-  (let ((directories
-	 (apply
-	  #'append
-	  (mapcar #'(lambda (package)
-		      (mapcar #'(lambda (suffix)
-				  (concat package suffix))
-			      suffixes))
-		  packages))))
-    (paths-directories-which-exist directories)))
-
-(defun paths-find-package-load-path (packages)
-  "Construct the load-path component for packages.
-PACKAGES is a list of package directories."
-  (paths-find-recursive-load-path
-   (paths-find-package-library-path packages '("lisp/"))))
-
-(defun paths-find-package-exec-path (packages)
-  (paths-find-package-library-path packages
-				   (list (concat "bin/" system-configuration "/")
-					 "lib-src/")))
-
-(defun paths-find-package-info-path (packages)
-  (paths-find-package-library-path packages '("info/")))
-
-(defun paths-find-package-data-path (packages)
-  (paths-find-package-library-path packages '("etc/")))
-
-(defun paths-find-emacs-roots (invocation-directory
-			       invocation-name)
-  "Find all plausible installation roots for XEmacs."
-  (let ((invocation-root
-	 (paths-find-emacs-root invocation-directory invocation-name))
-	(installation-root
-	 (if (and configure-prefix-directory
-		  (file-directory-p configure-prefix-directory))
-	     configure-prefix-directory)))
-    (append (and invocation-root
-		 (list invocation-root))
-	    (and installation-root
-		 (list installation-root)))))
-
-(defun paths-find-load-path (roots early-package-load-path late-package-load-path)
+(defun paths-construct-load-path
+  (roots early-package-load-path late-package-load-path
+	 &optional inhibit-site-lisp)
   "Construct the load path."
   (let ((envvar-value (getenv "EMACSLOADPATH")))
-    (if (and (fboundp 'parse-colon-path) envvar-value)
-	(parse-colon-path envvar-value)
+    (if envvar-value
+	(decode-path-internal envvar-value)
       (let* ((site-lisp-directory
-	      (and allow-site-lisp
-		   (paths-find-site-directory roots "site-lisp"
-					      nil
-					      configure-site-directory)))
+	      (and (null inhibit-site-lisp)
+		   (paths-find-site-lisp-directory roots)))
 	     (site-lisp-load-path
 	      (and site-lisp-directory
 		   (paths-find-recursive-load-path (list site-lisp-directory))))
-	     (lisp-directory
-	      (paths-find-version-directory roots "lisp"
-					    nil
-					    configure-lisp-directory))
+	     (lisp-directory (paths-find-lisp-directory roots))
 	     (lisp-load-path
 	      (paths-find-recursive-load-path (list lisp-directory))))
-	(nconc early-package-load-path
-	       site-lisp-load-path
-	       late-package-load-path
-	       lisp-load-path)))))
+	(append early-package-load-path
+		site-lisp-load-path
+		late-package-load-path
+		lisp-load-path)))))
 
-(defun paths-find-info-path (roots early-packages late-packages)
+(defun paths-construct-info-path (roots early-packages late-packages)
   "Construct the info path."
   (append
-   (paths-find-package-info-path early-packages)
-   (paths-find-package-info-path late-packages)
+   (packages-find-package-info-path early-packages)
+   (packages-find-package-info-path late-packages)
    (let ((info-directory
 	  (paths-find-version-directory roots "info"
 					nil
@@ -357,8 +86,8 @@
      (and info-directory
 	  (list info-directory)))
    (let ((info-path-envval (getenv "INFOPATH")))
-     (if (and (fboundp 'parse-colon-path) info-path-envval)
-	 (parse-colon-path info-path-envval)))))
+     (if info-path-envval
+	 (decode-path-internal info-path-envval)))))
 
 (defun paths-find-doc-directory (roots)
   "Find the documentation directory."
@@ -383,17 +112,17 @@
   "Find the binary directory."
   (paths-find-architecture-directory roots "lib-src"))
 
-(defun paths-find-exec-path (roots exec-directory early-packages late-packages)
+(defun paths-construct-exec-path (roots exec-directory early-packages late-packages)
   "Find the binary path."
   (append
    (let ((path-envval (getenv "PATH")))
-     (and (fboundp 'parse-colon-path) path-envval
-	  (parse-colon-path path-envval)))
-   (paths-find-package-exec-path early-packages)
-   (paths-find-package-exec-path late-packages)
+     (if path-envval
+	 (decode-path-internal path-envval)))
+   (packages-find-package-exec-path early-packages)
+   (packages-find-package-exec-path late-packages)
    (let ((emacspath-envval (getenv "EMACSPATH")))
-     (if (and (fboundp 'parse-colon-path) emacspath-envval)
-	 (parse-colon-path path-envval)
+     (if emacspath-envval
+	 (decode-path-internal emacspath-envval)
        (paths-directories-which-exist configure-exec-path)))
    (and exec-directory
 	(list exec-directory))))
@@ -402,132 +131,11 @@
   "Find the data directory."
   (paths-find-version-directory roots "etc" "EMACSDATA" configure-data-directory))
 
-(defun paths-find-data-directory-list (data-directory early-packages late-packages)
+(defun paths-construct-data-directory-list (data-directory early-packages late-packages)
   "Find the data path."
   (append
-   (paths-find-package-data-path early-packages)
-   (paths-find-package-data-path late-packages)
+   (packages-find-package-data-path early-packages)
+   (packages-find-package-data-path late-packages)
    (list data-directory)))
 
-(defun paths-setup-paths ()
-  "Setup all the various paths.
-Call this as often as you like!"
-  ;; XEmacs -- Steven Baur says invocation directory is nil if you
-  ;; try to use XEmacs as a login shell.
-  (or invocation-directory (setq invocation-directory default-directory))
-  (if (fboundp 'abbreviate-file-name)
-      ;; No abbreviate-file-name in temacs
-      (setq invocation-directory
-	    ;; don't let /tmp_mnt/... get into the load-path or exec-path.
-	    (abbreviate-file-name invocation-directory)))
-
-  (let ((roots (paths-find-emacs-roots invocation-directory invocation-name)))
-
-    (setq package-path (paths-find-package-path roots))
-
-    (let ((stuff (paths-find-packages package-path)))
-      (setq early-packages (car stuff))
-      (setq late-packages (cdr stuff)))
-
-    (setq early-package-load-path (paths-find-package-load-path early-packages))
-    (setq late-package-load-path (paths-find-package-load-path late-packages))
-
-    (setq load-path (paths-find-load-path roots
-					  early-package-load-path
-					  late-package-load-path))
-
-    (setq info-path (paths-find-info-path roots early-packages late-packages))
-
-    (if (boundp 'lock-directory)
-	(progn
-	  (setq lock-directory (paths-find-lock-directory roots))
-	  (setq superlock-file (paths-find-superlock-file lock-directory))))
-
-    (setq exec-directory (paths-find-exec-directory roots))
-
-    (setq exec-path (paths-find-exec-path roots exec-directory
-					  early-packages late-packages))
-
-    (setq doc-directory (paths-find-doc-directory roots))
-
-    (setq data-directory (paths-find-data-directory roots))
-
-    (setq data-directory-list (paths-find-data-directory-list data-directory
-							      early-packages
-							      late-packages))))
-
-(defun paths-setup-paths-warning ()
-  (let ((lock (if (boundp 'lock-directory) lock-directory 't))
-	warnings message guess)
-    (if (and (stringp lock) (null (file-directory-p lock)))
-	(setq lock nil))
-    (cond
-     ((null (and exec-directory data-directory doc-directory load-path lock))
-      (save-excursion
-	(set-buffer (get-buffer-create " *warning-tmp*"))
-	(erase-buffer)
-	(buffer-disable-undo (current-buffer))
-	(if (null lock)           (push "lock-directory" warnings))
-	(if (null exec-directory) (push "exec-directory" warnings))
-	(if (null data-directory) (push "data-directory" warnings))
-	(if (null doc-directory)  (push "doc-directory"  warnings))
-	(if (null load-path)      (push "load-path"      warnings))
-	(cond ((cdr (cdr warnings))
-	       (setq message (apply 'format "%s, %s, and %s" warnings)))
-	      ((cdr warnings)
-	       (setq message (apply 'format "%s and %s" warnings)))
-	      (t (setq message (format "variable %s" (car warnings)))))
-	(insert "couldn't find an obvious default for " message
-		", and there were no defaults specified in paths.h when "
-		"XEmacs was built.  Perhaps some directories don't exist, "
-		"or the XEmacs executable, " (concat invocation-directory
-						     invocation-name)
-		" is in a strange place?")
-
-	(if (fboundp 'fill-region)
-	    ;; Might not be bound in the cold load environment...
-	    (let ((fill-column 76))
-	      (fill-region (point-min) (point-max))))
-	(goto-char (point-min))
-	(princ "\nWARNING:\n" 'external-debugging-output)
-	(princ (buffer-string) 'external-debugging-output)
-	(erase-buffer)
-	t)))))
-
-(defun paths-load-package-lisps (package-load-path base)
-  "Load all Lisp files of a certain name along a load path.
-BASE is the base name of the files."
-  (mapc #'(lambda (dir)
-	    (let ((file-name (expand-file-name base dir)))
-	      (if (file-exists-p file-name)
-		  (condition-case error
-		      (load file-name)
-		    (error
-		     (warn (format "Autoload error in: %s:\n\t%s"
-				   file-name
-				   (with-output-to-string
-				     (display-error error nil)))))))))
-	package-load-path))
-
-(defun paths-load-package-auto-autoloads (package-load-path)
-  "Load auto-autoload files along a load path."
-  (paths-load-package-lisps package-load-path
-			    (file-name-sans-extension autoload-file-name)))
-
-(defun paths-load-package-dumped-lisps (package-load-path)
-  "Load dumped-lisp.el files along a load path."
-  (mapc #'(lambda (dir)
-	    (let ((file-name (expand-file-name "dumped-lisp.el" dir)))
-	      (if (file-exists-p file-name)
-		  (let (package-lisp
-			;; 20.4 packages could set this
-			preloaded-file-list)
-		    (load file-name)
-		    ;; dumped-lisp.el could have set this ...
-		    (if package-lisp
-			(mapc #'(lambda (base)
-				  (load (expand-file-name base dir)))
-			      package-lisp))))))
-	package-load-path))
-
 ;;; setup-paths.el ends here
--- a/lisp/simple.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/simple.el	Mon Aug 13 10:26:29 2007 +0200
@@ -3213,6 +3213,8 @@
   "Set VARIABLE to VALUE.  VALUE is a Lisp object.
 When using this interactively, supply a Lisp expression for VALUE.
 If you want VALUE to be a string, you must surround it with doublequotes.
+If VARIABLE is a specifier, VALUE is added to it as an instantiator in
+the 'global locale with nil tag set (see `set-specifier').
 
 If VARIABLE has a `variable-interactive' property, that is used as if
 it were the arg to `interactive' (which see) to interactively read the value."
@@ -3246,7 +3248,9 @@
 					   (list 'interactive prop)
 					   'arg))
 	       (eval-minibuffer (format "Set %s to value: " var)))))))
-  (set var val))
+  (if (specifierp (symbol-value var))
+      (set-specifier (symbol-value var) val)
+    (set var val)))
 
 ;; XEmacs
 (defun activate-region ()
--- a/lisp/site-load.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/site-load.el	Mon Aug 13 10:26:29 2007 +0200
@@ -43,17 +43,17 @@
 (when (file-exists-p site-load-package-file) 
   (let ((file))
     (load site-load-package-file t t t)
-    ;; The `load-gc' macro is provided as a clue that a package is being loaded
-    ;; in preparation of being dumped into XEmacs.
-    (defmacro load-gc (file)
+    ;; The `pureload' macro is provided as a clue that a package is
+    ;; being loaded in preparation of being dumped into XEmacs.
+    (defmacro pureload (file)
       (list 'prog1 (list 'load file) '(garbage-collect)))
     (message "Loading site-wide packages for dumping...")
     (while site-load-packages
       (setq file (car site-load-packages))
-      (load-gc file)
+      (pureload file)
       (setq site-load-packages (cdr site-load-packages)))
     (message "Loading site-wide packages for dumping...done")
-    (fmakunbound 'load-gc)))
+    (fmakunbound 'pureload)))
 
 ;; This file is intended for end user additions.
 ;; Put other initialization here, like setting of language-environment, etc.
--- a/lisp/startup.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/startup.el	Mon Aug 13 10:26:29 2007 +0200
@@ -369,6 +369,21 @@
 	    (setq default-directory (file-name-as-directory value)))))
     (setq default-directory (abbreviate-file-name default-directory))
     (initialize-xemacs-paths)
+
+    (startup-set-invocation-environment)
+
+    (let ((roots (paths-find-emacs-roots invocation-directory
+					 invocation-name)))
+      (startup-setup-paths roots
+			   inhibit-package-init
+			   inhibit-site-lisp)
+      (startup-setup-paths-warning))
+
+    (if (not inhibit-package-init)
+	(progn
+	  (packages-load-package-auto-autoloads early-package-load-path)
+	  (packages-load-package-auto-autoloads late-package-load-path)))
+
     (unwind-protect
 	(command-line)
       ;; Do this again, in case .emacs defined more abbreviations.
@@ -504,7 +519,6 @@
 
     (let ((debugger 'early-error-handler)
 	  (debug-on-error t))
-      (set-default-load-path)
 
       ;; Process magic command-line switches like -q and -u.  Do this
       ;; before creating the first frame because some of these switches
@@ -984,404 +998,71 @@
 ;;    (funcall present-file "sample.Xdefaults")
 ;;    (insert (format "\nin the directory %s." data-directory)))
 
-
-;;;; Computing the default load-path, etc.
-;;;
-;;; This stuff is a complete mess and isn't nearly as general as it 
-;;; thinks it is.  It should be rethunk.  In particular, too much logic
-;;; is duplicated between the code that looks around for the various
-;;; directories, and the code which suggests where to create the various
-;;; directories once it decides they are missing.
-
-;;; The source directory has this layout:
-;;;
-;;;    BUILD_ROOT/src/xemacs*			  argv[0]
-;;;    BUILD_ROOT/xemacs*			  argv[0], possibly
-;;;    BUILD_ROOT/lisp/
-;;;    BUILD_ROOT/etc/				  data-directory
-;;;    BUILD_ROOT/info/
-;;;    BUILD_ROOT/lib-src/			  exec-directory, doc-directory
-;;;    BUILD_ROOT/lock/
-;;;
-;;; The default tree created by "make install" has this layout:
-;;;
-;;;    PREFIX/bin/xemacs*	  		argv[0]
-;;;    PREFIX/lib/xemacs-VERSION/lisp/
-;;;    PREFIX/lib/xemacs-VERSION/etc/		  data-directory
-;;;    PREFIX/lib/xemacs-VERSION/info/
-;;;    PREFIX/lib/xemacs-VERSION/CONFIGURATION/	  exec-directory, doc-directory
-;;;    PREFIX/lib/xemacs/lock/
-;;;    PREFIX/lib/xemacs/site-lisp/
-;;;
-;;; The binary packages we ship have that layout, except that argv[0] has
-;;; been moved one level deeper under the bin directory:
-;;;
-;;;    PREFIX/bin/CONFIGURATION/xemacs*
-;;;
-;;; The following code has to deal with at least the above three situations,
-;;; and it should be possible for it to deal with more.  Though perhaps that
-;;; does cover it all?  The trick is, when something is missing, realizing
-;;; which of those three layouts is mostly in place, so that we can suggest
-;;; the right directories in the error message.
-
-
-;; extremely low-tech debugging, since this happens so early in startup.
-;;(or (fboundp 'orig-file-directory-p)
-;;    (fset 'orig-file-directory-p (symbol-function 'file-directory-p)))
-;;(defun file-directory-p (path)
-;;  (send-string-to-terminal (format "PROBING %S" path))
-;;  (let ((v (orig-file-directory-p path)))
-;;    (send-string-to-terminal (format " -> %S\n" v))
-;;    v))
-
-(defun startup-make-version-dir ()
-  (let ((version (and (string-match "\\`[^0-9]*\\([0-9]+\\.[0-9]+\\)"
-				    emacs-version)
-		      (substring emacs-version
-				 (match-beginning 1) (match-end 1)))))
-    (if (string-match "(beta *\\([0-9]+\\))" emacs-version)
-	(setq version (concat version "-b"
-			      (substring emacs-version (match-beginning 1)
-					 (match-end 1)))))
-    (if (string-match "(alpha *\\([0-9]+\\))" emacs-version)
-	(setq version (concat version "-a"
-			      (substring emacs-version (match-beginning 1)
-					 (match-end 1)))))
-    (concat "lib/xemacs-" version)))
-
-(defun find-emacs-root-internal-1 (path lisp-p)
-  ;; (prin1 (format "f-e-r-i-1:  %s\n" path))
-  (let ((dir (file-name-directory path)))
-    (or
-     ;;
-     ;; If this directory is a plausible root of the XEmacs tree, return it.
-     ;;
-     (and (or (not lisp-p)
-	      (file-directory-p (expand-file-name "lisp" dir)))
-	  (or (file-directory-p (expand-file-name "lib-src" dir))
-	      (file-directory-p (expand-file-name system-configuration dir)))
-	  dir)
-     ;;
-     ;; If the parent of this directory is a plausible root, use it.
-     ;; (But don't do so recursively!)
-     ;;
-     (and (or (not lisp-p)
-	      (file-directory-p (expand-file-name "../lisp" dir)))
-	  (or (file-directory-p (expand-file-name
-				 (format "../%s" system-configuration)
-				 dir))
-	      (file-directory-p (expand-file-name "../lib-src" dir)))
-	  (expand-file-name "../" dir))
-
-     ;; 
-     ;; (--run-in-place) Same thing, but from one directory level deeper.
-     ;;
-     (and (or (not lisp-p)
-	      (file-directory-p (expand-file-name "../../lisp" dir)))
-	  (or (file-directory-p (expand-file-name
-				 (format "../%s" system-configuration)
-				 dir))
-	      (file-directory-p 
-	       (expand-file-name 
-		(format "../../lib-src/%s" system-configuration) dir)))
-	  (expand-file-name "../.." dir))
-
-     ;; If ../lib/xemacs-<version> exists check it.
-     ;; This is of the form "xemacs-19.10/" or "xemacs-19.10-b7/".
-     ;;
-     (let ((ver-dir (concat "../" (startup-make-version-dir))))
-       (and (or (not lisp-p)
-		(file-directory-p (expand-file-name
-				   (format "%s/lisp" ver-dir)
-				   dir)))
-	    (or (file-directory-p (expand-file-name
-				   (format "%s/%s" ver-dir
-					   system-configuration)
-				   dir))
-		(file-directory-p (expand-file-name
-				   (format "%s/lib-src" ver-dir)
-				   dir)))
-	    (expand-file-name (file-name-as-directory ver-dir) dir)))
-     ;;
-     ;; Same thing, but one higher: ../../lib/xemacs-<version>.
-     ;;
-     (let ((ver-dir (concat "../../" (startup-make-version-dir))))
-       (and (or (not lisp-p)
-		(file-directory-p (expand-file-name
-				   (format "%s/lisp" ver-dir)
-				   dir)))
-	    (or (file-directory-p (expand-file-name
-				   (format "%s/%s" ver-dir
-					   system-configuration)
-				   dir))
-		(file-directory-p (expand-file-name
-				   (format "%s/lib-src" ver-dir)
-				   dir)))
-	    (expand-file-name (file-name-as-directory ver-dir) dir)))
-     ;;
-     ;; If that doesn't work, and the XEmacs executable is a symlink, then
-     ;; chase the link and try again there.
-     ;;
-     (and (setq path (file-symlink-p path))
-	  (find-emacs-root-internal-1 (expand-file-name path dir) lisp-p))
-     ;;
-     ;; Otherwise, this directory just doesn't cut it.
-     ;; Some bozos think they can use the 18.59 lisp directory with 19.*.
-     ;; This is because they're not using their brains.  But it might be
-     ;; nice to notice that that is happening and point them in the
-     ;; general direction of a clue.
-     ;;
-     nil)))
-
-(defun find-emacs-root-internal (path)
-  ;;  (send-string-to-terminal (format "FINDING ROOT FOR %S\n" path))
-  ;; first look for lisp and lib-src; then just look for lib-src.
-  ;; XEmacs can run (kind of) if the lisp directory is omitted, which
-  ;; some people might want to do for space reasons.
-  (or (find-emacs-root-internal-1 path t)
-      ;; (find-emacs-root-internal-1 path nil)
-      ;; If we don't succeed we are going to crash and burn for sure.
-      ;; Try some paths relative to prefix-directory if it isn't nil.
-      ;; This is definitely necessary in cases such as when we're used
-      ;; as a login shell since we can't determine the invocation
-      ;; directory in that case.
-
-      (find-emacs-root-internal-1
-       (format "%s/bin/%s" prefix-directory invocation-name) t)
-      (find-emacs-root-internal-1
-       (format "%s/bin/%s" prefix-directory invocation-name) nil)
-      (find-emacs-root-internal-1
-       (format "%s/lib/%s" prefix-directory invocation-name) t)
-      (find-emacs-root-internal-1
-       (format "%s/lib/%s" prefix-directory invocation-name) nil)
-
-      ;; We're desperate -- try the prefix-directory correctly.
-      (find-emacs-root-internal-1
-       (format "%s/%s/foo" prefix-directory (startup-make-version-dir)) t)
-      (find-emacs-root-internal-1
-       (format "%s/%s/foo" prefix-directory (startup-make-version-dir)) nil)
-      ))
-
-(defun set-default-load-path ()
+(defun startup-set-invocation-environment ()
   ;; XEmacs -- Steven Baur says invocation directory is nil if you
   ;; try to use XEmacs as a login shell.
   (or invocation-directory (setq invocation-directory default-directory))
   (setq invocation-directory
 	;; don't let /tmp_mnt/... get into the load-path or exec-path.
-	(abbreviate-file-name invocation-directory))
+	(abbreviate-file-name invocation-directory)))
+
+(defun startup-setup-paths (roots &optional inhibit-packages inhibit-site-lisp)
+  "Setup all the various paths.
+ROOTS is a list of plausible roots of the XEmacs directory hierarchy.
+If INHIBIT-PACKAGES is non-NIL, don't do packages.
+If INHIBIT-SITE-LISP is non-NIL, don't do site-lisp.
+It's idempotent, so call this as often as you like!"
+
+  (setq package-path (packages-find-package-path roots))
 
-  ;; #### FSFmacs recognizes environment vars EMACSLOCKDIR, etc.
-  (let* ((root (find-emacs-root-internal (concat invocation-directory
-						 invocation-name)))
-	 (lisp (and root
-		    (let ((f (expand-file-name "lisp" root)))
-		      (and (file-directory-p f) f))))
-	 (site-lisp
-	  (and root
-	       (or
-		(let ((f (expand-file-name "xemacs/site-lisp" root)))
-		  (and (file-directory-p f) f))
-		(let ((f (expand-file-name "../xemacs/site-lisp" root)))
-		  (and (file-directory-p f) f))
-		;; the next two are for --run-in-place
-		(let ((f (expand-file-name "site-lisp" root)))
-		  (and (file-directory-p f) f))
-		(let ((f (expand-file-name "lisp/site-lisp" root)))
-		  (and (file-directory-p f) f))
-		)))
-	 (lib-src
-	  (and root
-	       (or
-		(let ((f (expand-file-name
-			  (concat "lib-src/" system-configuration)
-			  root)))
-		  (and (file-directory-p f) f))
-		(let ((f (expand-file-name "lib-src" root)))
-		  (and (file-directory-p f) f))
-		(let ((f (expand-file-name system-configuration root)))
-		  (and (file-directory-p f) f)))))
-	 (etc
-	  (and root
-	       (let ((f (expand-file-name "etc" root)))
-		 (and (file-directory-p f) f))))
-	 (info
-	  (and root
-	       (let ((f (expand-file-name "info" root)))
-		 (and (file-directory-p f) (file-name-as-directory f)))))
-	 (packages
-	  (and root
-	       (let ((f (expand-file-name "packages" root)))
-		 (and (file-directory-p f) (file-name-as-directory f)))))
-	 (lock
-	  (and root
-	       (boundp 'lock-directory)
-	       (if (and lock-directory (file-directory-p lock-directory))
-		   (file-name-as-directory lock-directory)
-		 (or
-		  (let ((f (expand-file-name "xemacs/lock" root)))
-		    (and (file-directory-p f)
-			 (file-name-as-directory f)))
-		  (let ((f (expand-file-name "../xemacs/lock" root)))
-		    (and (file-directory-p f)
-			 (file-name-as-directory f)))
-		  (let ((f (expand-file-name "lock" root)))
-		    (and (file-directory-p f)
-			 (file-name-as-directory f)))
-		  ;; if none of them exist, make the "guess" be
-		  ;; the one that set-default-load-path-warning
-		  ;; will suggest.
-		  (file-name-as-directory
-		   (expand-file-name "../xemacs/lock" root))
-		  )))))
-    
-    ;; 1996/12/6 by MORIOKA Tomohiko <morioka@jaist.ac.jp>
-    ;;	define `default-load-path' for file-detect.el
-    (setq default-load-path load-path)
+  (let ((stuff (packages-find-packages package-path inhibit-packages)))
+    (setq early-packages (car stuff))
+    (setq late-packages (cdr stuff)))
+
+  (setq early-package-load-path (packages-find-package-load-path early-packages))
+  (setq late-package-load-path (packages-find-package-load-path late-packages))
 
-    ;; add site-lisp dir to load-path
-    (when site-lisp
-      ;; If the site-lisp dir isn't on the load-path, add it to the end.
-      (or (member site-lisp load-path)
-	  (setq load-path (append load-path
-				  (list (file-name-as-directory site-lisp)))))
-      ;; Also add any direct subdirectories of the site-lisp directory
-      ;; to the load-path.  But don't add dirs whose names begin
-      ;; with dot or hyphen.
-      (let ((files (directory-files site-lisp nil "^[^-.]" nil 'dirs-only))
-	    file)
-	(while files
-	  (setq file (car files))
-	  (if (and (not (member file '("RCS" "CVS" "SCCS")))
-		   (setq file (expand-file-name file site-lisp))
-		   (not (member file load-path)))
-	      (setq load-path
-		    (nconc load-path
-			   (list (file-name-as-directory file)))))
-	  (setq files (cdr files)))))
+  (setq load-path (paths-construct-load-path roots
+					     early-package-load-path
+					     late-package-load-path
+					     inhibit-site-lisp))
+
+  (setq info-path (paths-construct-info-path roots early-packages late-packages))
 
-    ;; add lisp dir to load-path
-    (when lisp
-      ;; If the lisp dir isn't on the load-path, add it to the end.
-      (or (member lisp load-path)
-	  (setq load-path (append load-path
-				  (list (file-name-as-directory lisp)))))
-      ;; Also add any direct subdirectories of the lisp directory
-      ;; to the load-path.  But don't add dirs whose names begin
-      ;; with dot or hyphen.
-      (let ((files (directory-files lisp nil "^[^-.]" nil 'dirs-only))
-	    file)
-	(while files
-	  (setq file (car files))
-	  (when (and (not (member file '("RCS" "CVS" "SCCS")))
-		     (setq file (expand-file-name file lisp))
-		     (not (member file load-path)))
-	    (setq load-path
-		  (nconc load-path
-			 (list (file-name-as-directory file)))))
-	  (setq files (cdr files)))))
+  (if (boundp 'lock-directory)
+      (progn
+	(setq lock-directory (paths-find-lock-directory roots))
+	(setq superlock-file (paths-find-superlock-file lock-directory))))
 
-    ;; 1996/12/6 by MORIOKA Tomohiko <morioka@jaist.ac.jp>
-    ;;	define `default-load-path' for file-detect.el
-    (setq default-load-path
-	  (append default-load-path
-		  (if site-lisp
-		      (list site-lisp))
-		  (if lisp
-		      (list lisp)
-		    )
-		  ))
+  (setq exec-directory (paths-find-exec-directory roots))
 
-    ;; 1997/03/06 by Jeff Miller <jmiller@bayserve.net>
-    ;; initialize 'site-directory'.  This is the site-lisp dir used by 
-    ;; XEmacs
-    (if site-lisp
-	(setq site-directory (file-name-as-directory site-lisp))
-      )
-    ;; If running from the build directory, always prefer the exec-directory
-    ;; that is here over to the one that came from paths.h.
-    (when (or (and (null exec-directory) lib-src)
-	      (and (string= lib-src (expand-file-name "lib-src" root))
-		   (not (string= exec-directory lib-src))))
-      (setq exec-directory (file-name-as-directory lib-src)))
-    (when (or (and (null doc-directory) lib-src)
-	      (and (string= lib-src (expand-file-name "lib-src" root))
-		   (not (string= doc-directory lib-src))))
-      (setq doc-directory (file-name-as-directory lib-src)))
+  (setq exec-path (paths-construct-exec-path roots exec-directory
+					     early-packages late-packages))
 
-    (when exec-directory
-      (or (member exec-directory exec-path)
-	  (setq exec-path (append exec-path (list exec-directory)))))
-    (when (or (and (null data-directory) etc)
-	      (and (string= etc (expand-file-name "etc" root))
-		   (not (string= data-directory etc))))
-      (setq data-directory (file-name-as-directory etc)))
+  (setq doc-directory (paths-find-doc-directory roots))
 
-    ;; If `configure' specified an info dir, use it.
-    ;; #### The above comment is suspect.
-    (or (boundp 'Info-default-directory-list)
-	(setq Info-default-directory-list nil))
-
-    ;; Add additional system directories.
-    (setq Info-default-directory-list
-	  (append Info-default-directory-list
-		  (split-string infopath-internal ":")))
+  (setq data-directory (paths-find-data-directory roots))
 
-    (let ((infopath (getenv "INFOPATH")))
-      (when infopath
-	(setq Info-default-directory-list
-	      (append Info-default-directory-list
-		      (split-string infopath ":")))))
-
-    (cond (configure-info-directory
-	   (setq configure-info-directory (file-name-as-directory
-					   configure-info-directory))
-	   (or (member configure-info-directory Info-default-directory-list)
-	       (setq Info-default-directory-list
-		     (append (list configure-info-directory)
-			     Info-default-directory-list)))))
-    ;; If we've guessed the info dir, use that (too).
-    (when (and info (not (member info Info-default-directory-list)))
-      (setq Info-default-directory-list
-	    (append (list info) Info-default-directory-list)))
+  (setq data-directory-list (paths-construct-data-directory-list data-directory
+								 early-packages
+								 late-packages)))
 
-    ;; Default the lock dir to being a sibling of the data-directory.
-    ;; If superlock isn't set, or is set to a file in a nonexistent
-    ;; directory, derive it from the lock dir.
-    (when (boundp 'lock-directory)
-      (setq lock-directory lock)
-      (cond ((null lock-directory)
-	     (setq superlock-file nil))
-	    ((or (null superlock-file)
-		 (not (file-directory-p
-		       (file-name-directory superlock-file))))
-	     (setq superlock-file
-		   (expand-file-name "!!!SuperLock!!!"
-				     lock-directory)))))
-
-    (set-default-load-path-warning)
-    (when (and (null (running-temacs-p))
-	       data-directory
-	       Info-default-directory-list)
-      (setq data-directory-list (list data-directory))
-      (packages-find-packages package-path nil))))
-
-
-(defun set-default-load-path-warning ()
+(defun startup-setup-paths-warning ()
   (let ((lock (if (boundp 'lock-directory) lock-directory 't))
-	warnings message guess)
-    (when (and (stringp lock) (not (file-directory-p lock)))
-      (setq lock nil))
+	warnings message)
+    (if (and (stringp lock) (null (file-directory-p lock)))
+	(setq lock nil))
     (cond
-     ((not (and exec-directory data-directory doc-directory load-path lock))
+     ((null (and exec-directory data-directory doc-directory load-path lock))
       (save-excursion
 	(set-buffer (get-buffer-create " *warning-tmp*"))
 	(erase-buffer)
 	(buffer-disable-undo (current-buffer))
-	(when (null lock)           (push "lock-directory" warnings))
-	(when (null exec-directory) (push "exec-directory" warnings))
-	(when (null data-directory) (push "data-directory" warnings))
-	(when (null doc-directory)  (push "doc-directory"  warnings))
-	(when (null load-path)      (push "load-path"      warnings))
+	(if (null lock)           (push "lock-directory" warnings))
+	(if (null exec-directory) (push "exec-directory" warnings))
+	(if (null data-directory) (push "data-directory" warnings))
+	(if (null doc-directory)  (push "doc-directory"  warnings))
+	(if (null load-path)      (push "load-path"      warnings))
 	(cond ((cdr (cdr warnings))
 	       (setq message (apply 'format "%s, %s, and %s" warnings)))
 	      ((cdr warnings)
@@ -1393,83 +1074,11 @@
 		"or the XEmacs executable, " (concat invocation-directory
 						     invocation-name)
 		" is in a strange place?")
-	(setq guess (or exec-directory
-			data-directory
-			doc-directory
-			(car load-path)
-			(and (string-match "/[^/]+\\'" invocation-directory)
-			     (substring invocation-directory 0
-					(match-beginning 0)))))
-	(when (and guess
-		   (or
-		    ;; parent of a terminal bin/<configuration> pair (hack hack).
-		    (string-match (concat "/bin/"
-					  (regexp-quote system-configuration)
-					  "/?\\'")
-				  guess)
-		    ;; parent of terminal src, lib-src, etc, or lisp dir.
-		    (string-match
-		     "/\\(bin\\|src\\|lib-src\\|etc\\|lisp\\)[^/]*/?\\'"
-		     guess)))
-	  (setq guess (substring guess 0 (match-beginning 0))))
 
-	;; If neither the exec nor lisp dirs are around, then "guess" that
-	;; the new configure-style lib dir should be used.  Otherwise, if
-	;; only one of them appears to be missing, or it's just lock,
-	;; then guess it to be a sibling of whatever already exists.
-	(when (and (null exec-directory) (null load-path))
-	  (setq guess (expand-file-name (startup-make-version-dir) guess)))
-
-	(when (or (null exec-directory) (null load-path))
-	  (insert
-	   "\n\nWithout both exec-directory and load-path, XEmacs will "
-	   "be very broken.  "))
-	(when (and (null exec-directory) guess)
-	  (insert
-	   "Consider making a symbolic link from "
-	   (expand-file-name system-configuration guess)
-	   " to wherever the appropriate XEmacs exec-directory "
-	   "directory is"))
-	(when (and (null data-directory) guess)
-	  (insert
-	   (if exec-directory
-	       "\n\nConsider making a symbolic link " ", and ")
-	   "from "
-	   (expand-file-name "etc" (if load-path
-				       (file-name-directory
-					(directory-file-name
-					 (car load-path)))
-				     guess))
-	   " to wherever the appropriate XEmacs data-directory is"))
-	(when (and (null load-path) guess)
-	  (insert
-	   (if (and exec-directory data-directory)
-	       "Consider making a symbolic link "
-	     ", and ")
-	   "from "
-	   (expand-file-name "lisp" guess)
-	   " to wherever the appropriate XEmacs lisp library is"))
-	(insert ".")
-
-	(when (null lock)
-	  (insert
-	   "\n\nWithout lock-directory set, file locking won't work.  ")
-	  (when guess
-	    (insert
-	     "Consider creating "
-	     (expand-file-name "../xemacs/lock"
-			       (or (find-emacs-root-internal
-				    (concat invocation-directory
-					    invocation-name))
-				   guess))
-	     " as a directory or symbolic link for use as the lock "
-	     "directory.  (This directory must be globally writable.)"
-	     )))
-
-	(when (fboundp 'fill-region)
-	  ;; Might not be bound in the cold load environment...
-	  (let ((fill-column 76))
-	    (fill-region (point-min) (point-max))))
+	(if (fboundp 'fill-region)
+	    ;; Might not be bound in the cold load environment...
+	    (let ((fill-column 76))
+	      (fill-region (point-min) (point-max))))
 	(goto-char (point-min))
 	(princ "\nWARNING:\n" 'external-debugging-output)
 	(princ (buffer-string) 'external-debugging-output)
--- a/lisp/update-elc.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/update-elc.el	Mon Aug 13 10:26:29 2007 +0200
@@ -63,8 +63,13 @@
 ;		    (nthcdr 3 command-line-args))))
 
 (define-function 'defalias 'define-function)
+
+(setq load-path (decode-path-internal (getenv "EMACSBOOTSTRAPLOADPATH")))
+
+(load "find-paths.el")
 (load "packages.el")
-;;; (load "setup-paths.el")
+(load "setup-paths.el")
+(load "dump-paths.el")
 
 (let ((autol (packages-list-autoloads)))
   ;; (print (prin1-to-string autol))
@@ -82,15 +87,22 @@
 					  nil 'dirs-only)
 			 (cons temp-path load-path))))
 
-
 ;; (print (prin1-to-string update-elc-files-to-compile))
 
 (let (preloaded-file-list site-load-packages)
   (load (concat default-directory "../lisp/dumped-lisp.el"))
-  ;; At this point we need to have the package path initialized
-  ;(paths-setup-paths)
-  (packages-find-packages package-path t t)
-  ;; (print (prin1-to-string preloaded-file-list))
+
+  (print (format "%S" package-path))
+
+  ;; Path setup
+  (let ((package-preloaded-file-list
+	 (packages-collect-package-dumped-lisps late-package-load-path)))
+
+    (setq preloaded-file-list
+	  (append package-preloaded-file-list
+		  preloaded-file-list
+		  packages-hardcoded-lisp)))
+
   (load (concat default-directory "../site-packages") t t)
   (setq preloaded-file-list
 	(append packages-hardcoded-lisp
--- a/lisp/wid-edit.el	Mon Aug 13 10:25:39 2007 +0200
+++ b/lisp/wid-edit.el	Mon Aug 13 10:26:29 2007 +0200
@@ -2197,21 +2197,27 @@
   ;; Insert the first choice that matches the value.
   (let ((value (widget-get widget :value))
 	(args (widget-get widget :args))
+	(explicit (widget-get widget :explicit-choice))
 	current)
-    (while args
-      (setq current (car args)
-	    args (cdr args))
-      (when (widget-apply current :match value)
-	(widget-put widget :children (list (widget-create-child-value
-					    widget current value)))
-	(widget-put widget :choice current)
-	(setq args nil
-	      current nil)))
-    (when current
-      (let ((void (widget-get widget :void)))
-	(widget-put widget :children (list (widget-create-child-and-convert
-					    widget void :value value)))
-	(widget-put widget :choice void)))))
+    (if explicit
+	(progn
+	  (widget-put widget :children (list (widget-create-child-value
+					      widget explicit value)))
+	  (widget-put widget :choice explicit))
+      (while args
+	(setq current (car args)
+	      args (cdr args))
+	(when (widget-apply current :match value)
+	  (widget-put widget :children (list (widget-create-child-value
+					      widget current value)))
+	  (widget-put widget :choice current)
+	  (setq args nil
+		current nil)))
+      (when current
+	(let ((void (widget-get widget :void)))
+	  (widget-put widget :children (list (widget-create-child-and-convert
+					      widget void :value value)))
+	  (widget-put widget :choice void))))))
 
 (defun widget-choice-value-get (widget)
   ;; Get value of the child widget.
@@ -2283,7 +2289,10 @@
 			 (cons (cons (widget-apply current :menu-tag-get)
 				     current)
 			       choices)))
-		 (widget-choose tag (reverse choices) event))))
+		 (let ((choice
+			(widget-choose tag (reverse choices) event)))
+		   (widget-put widget :explicit-choice choice)
+		   choice))))
     (when current
       (widget-value-set widget
 			(widget-apply current :value-to-external
--- a/nt/ChangeLog	Mon Aug 13 10:25:39 2007 +0200
+++ b/nt/ChangeLog	Mon Aug 13 10:26:29 2007 +0200
@@ -1,3 +1,21 @@
+1998-03-24  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* xemacs.mak (dump-xemacs): Replaced use of `touch' with `echo'.
+
+1998-03-20  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* xemacs.mak: Removed all references to deleted dgif_lib.{c,obj},
+	gif_err.{c,obj} and gifalloc.{c,obj}. New image support is not
+	compiled in yet.
+
+1998-03-19  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* xemacs.mak: HAVE_FILE_CODING removed: it is no longer an option, 
+	since file I/O depends on it, and defined unconditioanlly in
+	src/s/windowsnt.h.
+	Added -nologo switch to different tools here and there.
+	Suppressed some irrelevant make output.
+
 1998-02-28  Kirill M. Katsnelson  <kkm@kis.ru>
 
 	* xemacs.mak: Defined HAVE_FILE_CODING variable, an equivalent of
--- a/nt/xemacs.mak	Mon Aug 13 10:25:39 2007 +0200
+++ b/nt/xemacs.mak	Mon Aug 13 10:26:29 2007 +0200
@@ -4,7 +4,6 @@
 HAVE_X=0
 HAVE_MSW=1
 
-HAVE_FILE_CODING=1
 HAVE_MULE=0
 HAVE_IMAGEMAGICK=0
 
@@ -25,10 +24,6 @@
 
 #------------------------------------------------------------------------------
 
-!if $(HAVE_MULE)
-HAVE_FILE_CODING=1
-!endif
-
 !if $(HAVE_X)
 
 X11R6=h:\utils\X11R6
@@ -58,10 +53,6 @@
 MULE_DEFINES=-DMULE
 !endif
 
-!if $(HAVE_FILE_CODING)
-CODING_DEFINES=-DFILE_CODING
-!endif
-
 !if $(DEBUG_XEMACS)
 DEBUG_DEFINES=-DDEBUG_XEMACS
 DEBUG_FLAGS= -debugtype:both -debug:full
@@ -76,8 +67,7 @@
 
 INCLUDES=$(X_INCLUDES) -I$(XEMACS)\nt\inc -I$(XEMACS)\src -I$(XEMACS)\lwlib -I"$(MSVCDIR)\include"
 
-DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(CODING_DEFINES) $(MULE_DEFINES) \
-	$(MSW_C_DIRED_DEFINES) \
+DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(MULE_DEFINES) $(MSW_C_DIRED_DEFINES) \
 	-DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN -DWINDOWSNT -Demacs \
 	-DHAVE_CONFIG_H -D_DEBUG
 
@@ -200,8 +190,7 @@
  $(XEMACS)\src\console-stream.c \
  $(XEMACS)\src\console.c \
  $(XEMACS)\src\data.c \
- $(XEMACS)\src\device.c \
- $(XEMACS)\src\dgif_lib.c 
+ $(XEMACS)\src\device.c
 DOC_SRC2=\
  $(XEMACS)\src\dialog.c \
  $(XEMACS)\src\dired.c \
@@ -216,6 +205,7 @@
  $(XEMACS)\src\events.c \
  $(XEMACS)\src\extents.c \
  $(XEMACS)\src\faces.c \
+ $(XEMACS)\src\file-coding.c \
  $(XEMACS)\src\fileio.c \
  $(XEMACS)\src\filelock.c \
  $(XEMACS)\src\filemode.c \
@@ -226,8 +216,6 @@
  $(XEMACS)\src\frame.c \
  $(XEMACS)\src\free-hook.c \
  $(XEMACS)\src\general.c \
- $(XEMACS)\src\gif_err.c \
- $(XEMACS)\src\gifalloc.c \
  $(XEMACS)\src\glyphs.c \
  $(XEMACS)\src\gmalloc.c \
  $(XEMACS)\src\gui.c  \
@@ -318,13 +306,8 @@
  $(MSW_C_DIRED_SRC)
 !endif
 
-!if $(HAVE_FILE_CODING)
+!if $(HAVE_MULE)
 DOC_SRC8=\
- $(XEMACS)\src\file-coding.c
-!endif
-
-!if $(HAVE_MULE)
-DOC_SRC9=\
  $(XEMACS)\src\input-method-xlib.c \
  $(XEMACS)\src\mule.c \
  $(XEMACS)\src\mule-charset.c \
@@ -333,7 +316,7 @@
 !endif
 
 !if $(DEBUG_XEMACS)
-DOC_SRC10=\
+DOC_SRC9=\
  $(XEMACS)\src\debug.c
 !endif
 
@@ -343,12 +326,12 @@
 	link.exe -out:$@ $(LIB_SRC_LFLAGS) $** $(LIB_SRC_LIBS)
 
 $(OUTDIR)\make-docfile.obj:	$(LIB_SRC)\make-docfile.c
-	 $(CC) $(LIB_SRC_FLAGS) -c $** -Fo$@
+	 $(CC) -nologo $(LIB_SRC_FLAGS) -c $** -Fo$@
 
 RUNEMACS=$(XEMACS)\src\runemacs.exe
 
 $(RUNEMACS): $(OUTDIR)\runemacs.obj
-	link.exe -out:$@ -subsystem:windows -entry:WinMainCRTStartup \
+	link.exe -nologo -out:$@ -subsystem:windows -entry:WinMainCRTStartup \
 	-pdb:none -release -incremental:no $** \
 	kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \
 	advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib libc.lib
@@ -425,10 +408,6 @@
 	$(MSW_C_DIRED_OBJ)
 !endif
 
-!if $(HAVE_FILE_CODING)
-TEMACS_CODING_OBJS=\
-	$(OUTDIR)\file-coding.obj
-!endif
 
 !if $(HAVE_MULE)
 TEMACS_MULE_OBJS=\
@@ -467,7 +446,6 @@
 	$(OUTDIR)\console.obj \
 	$(OUTDIR)\data.obj \
 	$(OUTDIR)\device.obj \
-	$(OUTDIR)\dgif_lib.obj \
 	$(OUTDIR)\dialog.obj \
 	$(OUTDIR)\dired.obj \
 	$(OUTDIR)\doc.obj \
@@ -481,6 +459,7 @@
 	$(OUTDIR)\events.obj \
 	$(OUTDIR)\extents.obj \
 	$(OUTDIR)\faces.obj \
+	$(OUTDIR)\file-coding.obj \
 	$(OUTDIR)\fileio.obj \
 	$(OUTDIR)\filelock.obj \
 	$(OUTDIR)\filemode.obj \
@@ -490,8 +469,6 @@
 	$(OUTDIR)\frame.obj \
 	$(OUTDIR)\free-hook.obj \
 	$(OUTDIR)\general.obj \
-	$(OUTDIR)\gif_err.obj \
-	$(OUTDIR)\gifalloc.obj \
 	$(OUTDIR)\glyphs.obj \
 	$(OUTDIR)\gmalloc.obj \
 	$(OUTDIR)\gui.obj \
@@ -573,9 +550,9 @@
 
 # MSDEV Source Broswer file. "*.sbr" is too inclusive but this is harmless
 $(TEMACS_BROWSE): $(TEMACS_OBJS)
-	dir /b/s $(OUTDIR)\*.sbr > bscmake.tmp
-	bscmake -o$@ @bscmake.tmp
-	del bscmake.tmp
+	@dir /b/s $(OUTDIR)\*.sbr > bscmake.tmp
+	bscmake /nologo -o$@ @bscmake.tmp
+	@del bscmake.tmp
 
 #------------------------------------------------------------------------------
 
@@ -595,7 +572,6 @@
 	!$(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC7)
 	!$(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC8)
 	!$(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC9)
-	!$(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC10)
 
 $(LISP)\Installation.el: Installation.el
 	copy Installation.el $(LISP)
@@ -604,16 +580,16 @@
 	!$(TEMACS) -batch -l update-elc.el
 
 rebuild: $(TEMACS_DIR)\puresize-adjust.h
-        !nmake -f xemacs.mak dump-xemacs
+        !nmake -nologo -f xemacs.mak dump-xemacs
 
 # This rule dumps xemacs and then checks to see if a rebuild is required due
 # to changing PURESPACE requirements.
 dump-xemacs: $(TEMACS)
-        !touch rebuild
+        !echo >rebuild
         cd $(TEMACS_DIR)
         !$(TEMACS) -batch -l loadup.el dump
         cd $(XEMACS)\nt
-        !nmake -f xemacs.mak rebuild
+        !nmake -nologo -f xemacs.mak rebuild
 
 #------------------------------------------------------------------------------
 
@@ -660,6 +636,7 @@
 	-del /s /q *.bak *.elc *.orig *.rej
 
 depend:
+	mkdepend -f xemacs.mak -p$(OUTDIR)\ -o.obj -w9999 -- $(TEMACS_CPP_FLAGS) --  $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(LASTFILE_SRC)\lastfile.c $(LIB_SRC)\make-docfile.c .\runemacs.c
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
-	mkdepend -f xemacs.mak -p$(OUTDIR)\ -o.obj -w9999 -- $(TEMACS_CPP_FLAGS) --  $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(LASTFILE_SRC)\lastfile.c $(LIB_SRC)\make-docfile.c .\runemacs.c
+
--- a/src/ChangeLog	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/ChangeLog	Mon Aug 13 10:26:29 2007 +0200
@@ -1,3 +1,238 @@
+1998-03-25  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* process.c (Fprocess_send_eof): Close output stream before
+	deleting stream pair.
+	(deactivate_process): Ditto, both input and output streams.
+
+	* event-unixoid.c (event_stream_unixoid_delete_stream_pair): Do
+	not close passed lstreams.
+
+1998-03-24  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* fileio.c (Ffile_readable_p): GC protect fix, MS Windows specific. 
+
+Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>
+
+	* configure.in: compile in glyphs-msw.o when compiling fopr
+	mswindows.
+	
+Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>
+
+	* msw-glyphs.el: add support for xpm and bmp. change
+	eval-and-compile to progn.
+
+Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>
+
+	* Makefile.in.in: fastdump - new target for dumping bypassing
+	bytecompilation, DOC. Add dependencies for glyphs-msw.o. Move
+	imgproc.o to object list.
+	
+	* glyphs-msw.h:
+	* glyphs-msw.c: new files adding support for xpm and bmp and
+	EImages.
+
+	* redisply-msw.c: add support for outputing color pixmaps.
+
+	* console-msw.h: add bitspixel field to mswindows frame.
+
+	* device-msw.c: initialise bitspixel field in mswindows frame.
+	
+	* glyphs-x.c (xpm_instantiate): call mswindows_xpm_instantiate if
+	the device type is mswindows.
+
+	* emacs.c: call glyphs-msw.c init functions if compiling with
+	mswindows.
+
+	* symsinit.h: add prototypes for glyphs-msw.c functions.
+	
+	* sheap.c: make includes src-dir compliant.
+
+	* events.c: remove cygwin ^H <-> erase hack.
+
+	* s/cygwin32.h: remove NOMULTIPLEJOBS defn.
+
+1998-03-24  P. E. Jareth Hein  <jareth@camelot-soft.com>
+
+	* glyphs-x.c (my_jpeg_output_message): Added new function to redirect
+	any error/warning messages from the jpeg library to XEmacs.  Also
+	get rid of an unneeded temp variable in the tiff code.
+
+1998-03-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (fixup_internal_substring): Protect asserts with #ifdef
+	ERROR_CHECK_BUFPOS.
+
+	* minibuf.c (scmp_1): c1 and c2 are Emchar, not Bufbyte.
+	(Ftry_completion): Fixed typo.
+
+	* dired.c (file_name_completion): Removed `readfunc', a remnant of
+	dead VMS code.
+
+1998-03-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* dired.c (Fdirectory_files): Simplify logic.
+
+	* symbols.c (reject_constant_symbols): Allow setting a keyword's
+	function slot.
+
+1998-03-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* lread.c (readevalloop): Don't specbind Qstandard_input to
+	READCHARFUN.
+
+1998-03-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* wid-edit.el (widget-choice-action): Remember user's explicit
+	choice.
+	(widget-choice-value-create): Respect it.
+	From Richard Stallman <rms@gnu.org>
+
+1998-03-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* lread.c (read_atom): Ditto.
+
+	* symbols.c (reject_constant_symbols): Do the keyword stunts only
+	if the symbol is in Vobarray.
+
+	* symbols.c (reject_constant_symbols): Signal error when
+	attempting to assign a value to a keyword, unless the value is the 
+	keyword itself.
+
+	* symbols.c (Fintern): Initialize symbol's ->obarray to t only
+	when OBARRAY is Vobarray.
+
+1998-03-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* events.c (Fmake_event): Allow creation of misc-user-events.
+
+1998-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* config.h.in, emacs.c: Changed allow-site-lisp to
+	inhibit-site-lisp.  Made -no-autoloads set inhibit-site-lisp.
+
+1998-03-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* <Today>: The Big Path Searching Overhaul.
+
+	* symsinit.h: Added declaration for complex_vars_of_emacs in
+	emacs.c.
+
+	* paths.h.in: Adjusted the comments to reality as dictated by
+	configure.
+
+	* filelock.c (complex_vars_of_filelock): Added support for lock
+	directories passed in from configure.
+
+	* emacs.c (complex_vars_of_emacs): Added all relevant installation
+	paths passed from configure.  They all have the prefix "configure-" now.
+
+	* config.h.in: Added HAVE_SITE_LISP configuration option.
+
+	* callproc.c (init_callproc): Ripped out all the bogus path setup.
+
+	* Makefile.in.in: Updated all calls of "temacs -l" with absolute
+	file names because auf the more minimalistic load-path setup in
+	lread.c.  Also set EMACSBOOTSTRAPLOADPATH on calling temacs rather
+	than EMACSLOADPATH because EMACSLOADPATH is now more persistent than
+	before.
+
+	* lread.c (init_lread): Ripped out bogus load-path setup.
+
+1998-03-21  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* frame.h: Move the check for an initialize_frame_toolbars
+	  method into FRAME_RAW_REAL_TOOLBAR_VISIBLE to avoid getting
+	  clunked by toolbar-less builds.
+
+1998-03-20  SL Baur  <steve@altair.xemacs.org>
+
+	* m/powerpc.h (LD_SWITCH_MACHINE): Fix path to ppc.ldscript.
+
+1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* redisplay.c (window_line_number_buf): Made it larger.
+
+	* opaque.c (print_opaque): Ditto.
+
+	* lstream.c (print_lstream): Avoid `%p'.
+
+	* keymap.c (ensure_meta_prefix_char_keymapp): Use
+	error_with_frob().
+
+	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles): Allocate buf
+	dynamically.
+
+	* event-Xt.c (describe_event_window): Allocate buf dynamically.
+
+	* doc.c (Fsubstitute_command_keys): Warn of sprintf().
+
+	* device-x.c (x_init_device): Allocate path dynamically.
+	(x_init_device): Allocate buf1 and buf2 dynamically.
+
+1998-03-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* ExternalShell.c (GetGeometry): Use a larger buffer for
+	sprintf().
+
+1998-03-19  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* redisplay.c (point_would_be_visible): Fix
+	window::line_cache_validation_override reference counter.
+	(start_with_line_at_pixpos): Ditto.
+
+1998-03-20  Olivier Galibert  <olivier.galibert@mines.u-nancy.fr>
+
+	* insdel.c (bytecount_to_charcount): Use 'L' suffix on long
+	constants probably too large for an int.
+
+1998-03-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* lread.c (read_atom_0): Signal Qend_of_file if readcharfun
+	returned -1.
+	(read_escape): Ditto.
+	(FSF_LOSSAGE): Ditto.
+
+1998-03-20  SL Baur  <steve@altair.xemacs.org>
+
+	* emacs.c: path-separator (and parse-colon-path) moved from Lisp
+	into C because we need it for early initialization.
+
+	* Makefile.in.in (libmcheck): Add.
+
+	* config.h.in: Add HAVE_LIBMCHECK and HAVE_MCHECK_H.
+
+	* hash.c (grow_hashtable): Fix tests to compare against
+	Qnull_pointer since this function may be called before any symbols 
+	or the Lisp engine is initialized.
+
+	* emacs.c (main_1): Restore usage of free-hook.c.
+
+	* free-hook.c (check_realloc): Change aborts to printfs.
+	(check_free): Ditto.
+
+1998-03-18  SL Baur  <steve@altair.xemacs.org>
+
+	* emacs.c (Fkill_emacs): Use LIST_LOOP_DELETING because our
+	control variable is being modified underneath us.
+	- Avoid calling delete_console_internal on stream consoles.
+
+	* console-tty.c (free_tty_console_struct): NULL out pointers after 
+	xfree'ing.
+
+	* console-stream.c (allocate_stream_console_struct): Fix memory
+	leak -- if the stream_console struct is already allocated, don't
+	reallocate it.
+	(free_stream_console_struct): Don't leave dangling freed pointer
+	around.
+
+	* redisplay-output.c (redisplay_redraw_cursor): Fully bracket.
+
+1998-03-17  SL Baur  <steve@altair.xemacs.org>
+
+	* frame.c (delete_frame_internal): Correct check.
+
+	* imgproc.c: Include <config.h>.
+
 1998-03-13  P. E. Jareth Hein  <jareth@camelot-soft.com>
 
 	* glyphs-x.c: fix for upside-down TIFFs.
@@ -67,24 +302,6 @@
 
 1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>
 
-	* keydefs.el: Changed keybindings of forward-char,
-	  backward, scroll-up and scroll-down to point to their
-	  -command counterparts.
-
-	* simple.el: New functions: forwarc-char-command,
-	  backwrad-char-command, scroll-up-command,
-	  scroll-down-command which work liek their counterparts
-	  except that they honor the variable
-	  signal-error-on-buffer-boundary.
-
-	  Definition of signal-error-on-buffer-boundary received
-	  from src/cmds.c.
-
-	  defvar declaration added for word-across-newline to avoid
-	  byte-compiler warning about the free variable reference.
-
-1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>
-
 	* redisplay-tty.c (tty_clear_frame): Record that the
 	  real location of teh cursor has been moved to 0,0.
 	  Failure to do this makes the display code believe the
--- a/src/ExternalShell.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/ExternalShell.c	Mon Aug 13 10:26:29 2007 +0200
@@ -381,7 +381,7 @@
     }
 
     if(w->shell.geometry != NULL) {
-	char def_geom[64];
+	char def_geom[128];
 	int width, height;
 
 	x = w->core.x;
--- a/src/Makefile.in.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/Makefile.in.in	Mon Aug 13 10:26:29 2007 +0200
@@ -70,6 +70,7 @@
 start_flags=@start_flags@
 LD=@ld@
 lib_gcc=@lib_gcc@
+#libmcheck=@libmcheck@
 
 #define NOT_C_CODE
 #include "config.h"
@@ -120,7 +121,7 @@
 OFFIX_O = @OFFIX_O@
 
 x_objs=balloon_help.o balloon-x.o console-x.o device-x.o event-Xt.o frame-x.o\
- glyphs-x.o objects-x.o redisplay-x.o xgccache.o xselect.o imgproc.o
+ glyphs-x.o objects-x.o redisplay-x.o xgccache.o xselect.o 
 
 #ifdef AIX4
 LIBI18N = -li18n
@@ -178,7 +179,7 @@
  event-stream.o extents.o faces.o\
  fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
  frame.o general.o getloadavg.o glyphs.o\
- $(gui_objs) hash.o indent.o insdel.o intl.o\
+ $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
  keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
  macros.o marker.o md5.o minibuf.o objects.o opaque.o\
  print.o process.o profile.o pure.o\
@@ -194,7 +195,7 @@
 rallocobjs = ralloc.o
 #endif
 
-malloclib =
+malloclib = $(libmcheck)
 #ifndef SYSTEM_MALLOC
 # ifdef GNU_MALLOC  /* GNU malloc */
 #  ifdef ERROR_CHECK_MALLOC
@@ -289,7 +290,7 @@
 mo_file = ${mo_dir}emacs.mo
 #endif
 
-LOADPATH =  EMACSLOADPATH="${lispdir}:${blddir}"
+LOADPATH =  EMACSBOOTSTRAPLOADPATH="${lispdir}:${blddir}"
 DUMPENV = $(LOADPATH)
 
 release: temacs ${libsrc}DOC $(mo_file) ${other_files}
@@ -298,18 +299,18 @@
 #else
 #ifdef HAVE_SHM
 	-if [ -w ${srcdir}/../lisp ]; then \
-	  w=`pwd`; cd ${srcdir} && $${w}/temacs -nl -batch -l inc-vers; \
+	  w=`pwd`; cd ${srcdir} && $${w}/temacs -nl -batch -l ${srcdir}/../lisp/inc-vers; \
 	else true; fi
 	@touch SATISFIED
-	-$(DUMPENV) ./temacs -nl -batch -l loadup.el dump
+	-$(DUMPENV) ./temacs -nl -batch -l ${srcdir}/../lisp/loadup.el dump
 	@if test ! -f SATISFIED; then $(RECURSIVE_MAKE) $@; fi
 	@$(RM) SATISFIED
 #else /* ! defined (HAVE_SHM) */
 	-if [ -w ${srcdir}/../lisp ]; then \
-	  w=`pwd`; cd ${srcdir} && $${w}/temacs -batch -l inc-vers; \
+	  w=`pwd`; cd ${srcdir} && $${w}/temacs -batch -l ${srcdir}/../lisp/inc-vers; \
 	else true; fi
 	@touch SATISFIED
-	-$(DUMPENV) ./temacs -batch -l loadup.el dump
+	-$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
 	@if test ! -f SATISFIED; then $(RECURSIVE_MAKE) $@; fi
 	@$(RM) SATISFIED
 #endif /* ! defined (HAVE_SHM) */
@@ -318,18 +319,26 @@
 
 xemacs: temacs ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
 	@$(RM) $@ && touch SATISFIED
-	-$(DUMPENV) ./temacs -batch -l loadup.el dump
+	-$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
 	@if test -f $@;        then if test -f SATISFIED; then \
 		./xemacs -batch -vanilla -f list-load-path-shadows; fi; \
 		$(RM) SATISFIED; exit 0; fi; \
 	if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi; \
 	$(RECURSIVE_MAKE) $@;
 
+fastdump: temacs 
+	@$(RM) xemacs && touch SATISFIED
+	-$(DUMPENV) ./temacs -batch -l loadup.el dump
+	@if test -f xemacs;        then if test -f SATISFIED; then \
+		./xemacs -batch -vanilla -f list-load-path-shadows; fi; \
+		$(RM) SATISFIED; exit 0; fi; \
+	if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi;
+
 FRC.update-elc.stamp :
 
 update-elc.stamp : temacs FRC.update-elc.stamp
 	@touch NOBYTECOMPILE
-	${DUMPENV} ./temacs -batch -l update-elc.el
+	${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/update-elc.el
 	@if test ! -f $@ -o -f NOBYTECOMPILE; then touch $@; fi; \
 	 $(RM) NOBYTECOMPILE
 
@@ -350,14 +359,14 @@
 
 ${libsrc}DOC: temacs update-elc.stamp
 	$(RM) ${libsrc}DOC; \
-	${DUMPENV} ./temacs -batch -l make-docfile.el -- \
+	${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/make-docfile.el -- \
 		-o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
 		${obj_src} ${mallocdocsrc} ${rallocdocsrc}
 
 dump_elcs: dump-elcs
 
 dump-elcs: temacs
-	-${DUMPENV} ./temacs -batch -l update-elc.el
+	-${DUMPENV} ./temacs -batch -l ${srcdir}/../lisp/update-elc.el
 
 all-elc all-elcs:
 	cd .. && $(RECURSIVE_MAKE) all-elc
@@ -418,7 +427,7 @@
 .PHONY : run-temacs
 
 run-temacs: temacs
-	./temacs -batch -l loadup.el run-temacs
+	./temacs -batch -l ${srcdir}/../lisp/loadup.el run-temacs
 
 ## Debugging targets:
 ##
@@ -448,7 +457,7 @@
 	ignore POLL; \
 	check -access; \
 	suppress rui; \
-	runargs -batch -l loadup.el run-temacs -q; \
+	runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
 	run' rtcmacs
 
 ## Purify
@@ -459,7 +468,7 @@
 	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) -lpthread
 
 run-puremacs: puremacs
-	./puremacs -batch -l loadup.el run-temacs
+	./puremacs -batch -l ${srcdir}/../lisp/loadup.el run-temacs
 
 ## Quantify
 #ifdef  QUANTIFY
@@ -1964,6 +1973,29 @@
 glyphs.o: specifier.h
 glyphs.o: toolbar.h
 glyphs.o: window.h
+glyphs-msw.o: bitmaps.h
+glyphs-msw.o: blocktype.h
+glyphs-msw.o: buffer.h
+glyphs-msw.o: bufslots.h
+glyphs-msw.o: config.h
+glyphs-msw.o: conslots.h
+glyphs-msw.o: console-msw.h
+glyphs-msw.o: console.h
+glyphs-msw.o: device.h
+glyphs-msw.o: dynarr.h
+glyphs-msw.o: frame.h
+glyphs-msw.o: frameslots.h
+glyphs-msw.o: glyphs-msw.h
+glyphs-msw.o: glyphs.h
+glyphs-msw.o: insdel.h
+glyphs-msw.o: objects-msw.h
+glyphs-msw.o: objects.h
+glyphs-msw.o: opaque.h
+glyphs-msw.o: scrollbar.h
+glyphs-msw.o: specifier.h
+glyphs-msw.o: sysfile.h
+glyphs-msw.o: toolbar.h
+glyphs-msw.o: imgproc.h
 gmalloc.o: config.h
 gmalloc.o: getpagesize.h
 gui-x.o: $(LWLIB_SRCDIR)/lwlib.h
--- a/src/callproc.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/callproc.c	Mon Aug 13 10:26:29 2007 +0200
@@ -55,14 +55,6 @@
 Lisp_Object Vbinary_process_output;
 #endif /* DOS_NT */
 
-Lisp_Object Vexec_path, Vexec_directory, Vdata_directory, Vdoc_directory;
-Lisp_Object Vdata_directory_list;
-Lisp_Object Vconfigure_info_directory, Vsite_directory;
-Lisp_Object Vinfopath_internal;
-
-/* The default base directory XEmacs is installed under. */
-Lisp_Object Vprefix_directory;
-
 Lisp_Object Vshell_file_name;
 
 /* The environment to pass to all subprocesses when they are started.
@@ -877,134 +869,6 @@
       }
   }
 
-  /* jwz: don't do these things when in temacs (this used to be the case by
-     virtue of egetenv() always returning 0, but that has been changed).
-   */
-#ifndef CANNOT_DUMP
-  if (!initialized)
-    {
-      Vdata_directory = Qnil;
-      Vsite_directory = Qnil;
-      Vdoc_directory  = Qnil;
-      Vexec_path      = Qnil;
-    }
-  else
-#endif
-    {
-      char *data_dir = egetenv ("EMACSDATA");
-      char *site_dir = egetenv ("EMACSSITE");
-      char *doc_dir  = egetenv ("EMACSDOC");
-
-#ifdef PATH_DATA
-      if (!data_dir)
-	data_dir = (char *) PATH_DATA;
-#endif
-#ifdef PATH_DOC
-      if (!doc_dir)
-	doc_dir = (char *) PATH_DOC;
-#endif
-#ifdef PATH_SITE
-      if (!site_dir)
-	site_dir = (char *) PATH_SITE;
-#endif
-
-      if (data_dir)
-	Vdata_directory = Ffile_name_as_directory
-	  (build_string (data_dir));
-      else
-	Vdata_directory = Qnil;
-      if (doc_dir)
-	Vdoc_directory = Ffile_name_as_directory
-	  (build_string (doc_dir));
-      else
-	Vdoc_directory = Qnil;
-      if (site_dir)
-	Vsite_directory = Ffile_name_as_directory
-	  (build_string (site_dir));
-      else
-	Vsite_directory = Qnil;
-
-      /* Check the EMACSPATH environment variable, defaulting to the
-	 PATH_EXEC path from paths.h.  */
-      Vexec_path = decode_env_path ("EMACSPATH",
-#ifdef PATH_EXEC
-				    PATH_EXEC
-#else
-				    0
-#endif
-				    );
-    }
-
-  if (NILP (Vexec_path))
-    Vexec_directory = Qnil;
-      else
-    Vexec_directory = Ffile_name_as_directory
-      (Fcar (Vexec_path));
-
-  if (initialized)
-    Vexec_path = nconc2 (decode_env_path ("PATH", 0),
-                         Vexec_path);
-
-  if (!NILP (Vexec_directory))
-    {
-      tempdir = Fdirectory_file_name (Vexec_directory);
-      if (access ((char *) XSTRING_DATA (tempdir), 0) < 0)
-	{
-	  /* If the hard-coded path is bogus, fail silently.
-	     This will allow the normal heuristics to make an attempt. */
-#if 0
-	  warn_when_safe
-	    (Qpath, Qwarning,
-	     "Warning: machine-dependent data dir (%s) does not exist.\n",
-	     XSTRING_DATA (Vexec_directory));
-#else
-	  Vexec_directory = Qnil;
-#endif
-	}
-    }
-
-  if (!NILP (Vdata_directory))
-    {
-      tempdir = Fdirectory_file_name (Vdata_directory);
-      if (access ((char *) XSTRING_DATA (tempdir), 0) < 0)
-	{
-	  /* If the hard-coded path is bogus, fail silently.
-	     This will allow the normal heuristics to make an attempt. */
-#if 0
-	  warn_when_safe
-	    (Qpath, Qwarning,
-	     "Warning: machine-independent data dir (%s) does not exist.\n",
-	     XSTRING_DATA (Vdata_directory));
-#else
-	  Vdata_directory = Qnil;
-#endif
-	}
-    }
-
-  if (!NILP (Vsite_directory))
-    {
-      tempdir = Fdirectory_file_name (Vsite_directory);
-      if (access ((char *) XSTRING_DATA (tempdir), 0) < 0)
-	{
-	  /* If the hard-coded path is bogus, fail silently.
-	     This will allow the normal heuristics to make an attempt. */
-#if 0
-	  warn_when_safe
-	    (Qpath, Qwarning,
-	     "Warning: machine-independent site dir (%s) does not exist.\n",
-	     XSTRING_DATA (Vsite_directory));
-#else
-	  Vsite_directory = Qnil;
-#endif
-	}
-    }
-
-#ifdef PATH_PREFIX
-  Vprefix_directory = build_string ((char *) PATH_PREFIX);
-#else
-  Vprefix_directory = Qnil;
-#endif
-
 #ifdef WINDOWSNT
   /* Sync with FSF Emacs 19.34.6 note: this is not in 19.34.6. --marcpa */
   /*
@@ -1083,46 +947,6 @@
 Initialized from the SHELL environment variable.
 */ );
 
-  DEFVAR_LISP ("exec-path", &Vexec_path /*
-*List of directories to search programs to run in subprocesses.
-Each element is a string (directory name) or nil (try default directory).
-*/ );
-
-  DEFVAR_LISP ("exec-directory", &Vexec_directory /*
-Directory of architecture-dependent files that come with XEmacs,
-especially executable programs intended for XEmacs to invoke.
-*/ );
-
-  DEFVAR_LISP ("data-directory", &Vdata_directory /*
-Directory of architecture-independent files that come with XEmacs,
-intended for XEmacs to use.
-Use of this variable in new code is almost never correct.  See the
-function `locate-data-directory' and the variable `data-directory-list'.
-*/ );
-
-  DEFVAR_LISP ("data-directory-list", &Vdata_directory_list /*
-List of directories of architecture-independent files that come with XEmacs
-or were installed as packages, and are intended for XEmacs to use.
-*/ );
-  Vdata_directory_list = Qnil;
-
-  DEFVAR_LISP ("site-directory", &Vsite_directory /*
-Directory of architecture-independent files that do not come with XEmacs,
-intended for XEmacs to use.
-*/ );
-
-  /* FSF puts the DOC file into data-directory.  They do a bunch of
-     contortions to attempt to put everything into the DOC file
-     whether the support is there or not. */
-  DEFVAR_LISP ("doc-directory", &Vdoc_directory /*
-Directory containing the DOC file that comes with XEmacs.
-This is usually the same as exec-directory.
-*/ );
-
-  DEFVAR_LISP ("prefix-directory", &Vprefix_directory /*
-The default directory under which XEmacs is installed.
-*/ );
-
   DEFVAR_LISP ("process-environment", &Vprocess_environment /*
 List of environment variables for subprocesses to inherit.
 Each element should be a string of the form ENVVARNAME=VALUE.
@@ -1130,32 +954,3 @@
 when Emacs starts.
 */ );
 }
-
-void
-complex_vars_of_callproc (void)
-{
-  DEFVAR_LISP ("configure-info-directory", &Vconfigure_info_directory /*
-For internal use by the build procedure only.
-This is the name of the directory in which the build procedure installed
-Emacs's info files; the default value for Info-default-directory-list
-includes this.
-*/ );
-
-#ifdef PATH_INFO
-  Vconfigure_info_directory =
-    Ffile_name_as_directory (build_string (PATH_INFO));
-#else
-  Vconfigure_info_directory = Qnil;
-#endif
-
-  DEFVAR_LISP ("infopath-internal", &Vinfopath_internal /*
-The configured initial value of Info-default-directory-list.
-*/ );
-
-#ifdef PATH_INFOPATH
-  Vinfopath_internal = build_string (PATH_INFOPATH);
-#else
-  Vinfopath_internal =
-    build_string ("/usr/info:/usr/local/info:/usr/lib/texmf/doc/info:/usr/local/lib/texmf/doc/info");
-#endif
-}
--- a/src/config.h.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/config.h.in	Mon Aug 13 10:26:29 2007 +0200
@@ -73,8 +73,8 @@
 /* Used to identify the XEmacs version in stack traces. */
 #undef STACK_TRACE_EYE_CATCHER
 
-/* Allow the configurer to specify (additional) package directories. */
-#undef PACKAGE_PATH
+/* Allow the configurer to specify if she wants site-lisp. */
+#undef INHIBIT_SITE_LISP
 
 /* This will be removed in 19.15. */
 /* Hah!  Try 20.3 ... */
@@ -94,6 +94,9 @@
 /* Define if you are using the GNU C Library. -- experimental. */
 #undef DOUG_LEA_MALLOC
 
+/* Define if you are using libmcheck.a from the GNU C Library. */
+#undef HAVE_LIBMCHECK
+
 /* Define if you are using dlmalloc from the Linux C library. */
 #undef _NO_MALLOC_WARNING_
 
@@ -167,6 +170,7 @@
 
 /* Some things figured out by the configure script, grouped as they are in
    configure.in. */
+#undef HAVE_MCHECK_H
 #undef HAVE_MACH_MACH_H
 #undef HAVE_SYS_STROPTS_H
 #undef HAVE_SYS_TIMEB_H
--- a/src/console-msw.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/console-msw.h	Mon Aug 13 10:26:29 2007 +0200
@@ -84,6 +84,7 @@
   int planes, cells;
   int horzres, vertres;		/* Size in pixels */
   int horzsize, vertsize;	/* Size in mm */
+  int bitspixel;
 };
 
 #define DEVICE_MSWINDOWS_DATA(d) DEVICE_TYPE_DATA (d, mswindows)
@@ -95,6 +96,7 @@
 #define DEVICE_MSWINDOWS_VERTRES(d) 	(DEVICE_MSWINDOWS_DATA (d)->vertres)
 #define DEVICE_MSWINDOWS_HORZSIZE(d) 	(DEVICE_MSWINDOWS_DATA (d)->horzsize)
 #define DEVICE_MSWINDOWS_VERTSIZE(d) 	(DEVICE_MSWINDOWS_DATA (d)->vertsize)
+#define DEVICE_MSWINDOWS_BITSPIXEL(d) 	(DEVICE_MSWINDOWS_DATA (d)->bitspixel)
 
 
 /*
--- a/src/console-stream.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/console-stream.c	Mon Aug 13 10:26:29 2007 +0200
@@ -47,7 +47,14 @@
 static void
 allocate_stream_console_struct (struct console *con)
 {
-  con->console_data = xnew_and_zero (struct stream_console);
+  if (!con->console_data)
+    {
+      con->console_data = xnew_and_zero (struct stream_console);
+    }
+  else
+    {
+      memset(con->console_data, 0, sizeof (struct stream_console));
+    }
 }
 
 static void
@@ -101,7 +108,10 @@
 {
   struct stream_console *tcon = (struct stream_console *) con->console_data;
   if (tcon)
-    xfree (tcon);
+    {
+      xfree (tcon);
+      con->console_data = NULL;
+    }
 }
 
 extern int stdout_needs_newline;
@@ -167,9 +177,10 @@
 stream_init_frame_1 (struct frame *f, Lisp_Object props)
 {
   struct device *d = XDEVICE (FRAME_DEVICE (f));
+#if 0
   if (!NILP (DEVICE_FRAME_LIST (d)))
     error ("Only one frame allowed on stream devices");
-
+#endif
   f->name = build_string ("stream");
   f->height = 80;
   f->width = 24;
--- a/src/console-tty.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/console-tty.c	Mon Aug 13 10:26:29 2007 +0200
@@ -181,9 +181,15 @@
 {
   struct tty_console *tcon = (struct tty_console *) con->console_data;
   if (tcon && tcon->term_entry_buffer) /* allocated in term_init () */
-    xfree (tcon->term_entry_buffer);
+    {
+      xfree (tcon->term_entry_buffer);
+      tcon->term_entry_buffer = NULL;
+    }
   if (tcon)
-    xfree (tcon);
+    {
+      xfree (tcon);
+      con->console_data = NULL;
+    }
 }
 
 static void
--- a/src/device-msw.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/device-msw.c	Mon Aug 13 10:26:29 2007 +0200
@@ -83,6 +83,7 @@
   DEVICE_MSWINDOWS_VERTRES(d) = GetDeviceCaps(hdc, VERTRES);
   DEVICE_MSWINDOWS_HORZSIZE(d) = GetDeviceCaps(hdc, HORZSIZE);
   DEVICE_MSWINDOWS_VERTSIZE(d) = GetDeviceCaps(hdc, VERTSIZE);
+  DEVICE_MSWINDOWS_BITSPIXEL(d) = GetDeviceCaps(hdc, BITSPIXEL);
   ReleaseDC(desktop, hdc);
 
   DEVICE_CLASS(d) = Qcolor;
--- a/src/device-x.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/device-x.c	Mon Aug 13 10:26:29 2007 +0200
@@ -329,7 +329,7 @@
        This is in addition to the standard app-defaults files, and
        does not override resources defined elsewhere */
     CONST char *data_dir;
-    char path[MAXPATHLEN];
+    char *path;
     XrmDatabase db = XtDatabase (dpy); /* ### XtScreenDatabase(dpy) ? */
     CONST char *locale = XrmLocaleOfDatabase (db);
 
@@ -337,6 +337,7 @@
 	XSTRING_LENGTH (Vx_app_defaults_directory) > 0)
       {
 	GET_C_STRING_FILENAME_DATA_ALLOCA(Vx_app_defaults_directory, data_dir);
+	path = (char *)alloca (strlen (data_dir) + strlen (locale) + 7);
 	sprintf (path, "%s%s/Emacs", data_dir, locale);
 	if (!access (path, R_OK))
 	  XrmCombineFileDatabase (path, &db, False);
@@ -344,6 +345,7 @@
     else if (STRINGP (Vdata_directory) && XSTRING_LENGTH (Vdata_directory) > 0)
       {
 	GET_C_STRING_FILENAME_DATA_ALLOCA (Vdata_directory, data_dir);
+	path = (char *)alloca (strlen (data_dir) + 13 + strlen (locale) + 7);
 	sprintf (path, "%sapp-defaults/%s/Emacs", data_dir, locale);
 	if (!access (path, R_OK))
 	  XrmCombineFileDatabase (path, &db, False);
@@ -364,7 +366,8 @@
   /* search for a matching visual if requested by the user, or setup the display default */
   numargs = 0;
   {
-    char buf1[100],buf2[100];
+    char *buf1 = (char *)alloca (strlen (app_name) + 17);
+    char *buf2 = (char *)alloca (strlen (app_class) + 17);
     char *type;
     XrmValue value;
 
--- a/src/dired.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/dired.c	Mon Aug 13 10:26:29 2007 +0200
@@ -63,43 +63,41 @@
 */
        (dirname, full, match, nosort, files_only))
 {
-  /* This function can GC.  GC checked 1997.04.06. */
+  /* This function can GC */
   DIR *d;
-  Bytecount name_as_dir_length;
-  Lisp_Object list = Qnil, name, dirfilename = Qnil;
+  Lisp_Object list = Qnil;
+  Bytecount dirnamelen;
   Lisp_Object handler;
   struct re_pattern_buffer *bufp = NULL;
-  Lisp_Object name_as_dir = Qnil;
   int speccount = specpdl_depth ();
   char *statbuf, *statbuf_tail;
 
-  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
-  GCPRO4 (dirname, name_as_dir, dirfilename, list);
+  struct gcpro gcpro1, gcpro2;
+  GCPRO2 (dirname, list);
 
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (dirname, Qdirectory_files);
   if (!NILP (handler))
-  {
-    UNGCPRO;
-    if (!NILP (files_only))
-      return call6 (handler, Qdirectory_files, dirname, full, match, nosort,
-                    files_only);
-    else
-      return call5 (handler, Qdirectory_files, dirname, full, match,
-		    nosort);
-  }
+    {
+      UNGCPRO;
+      if (!NILP (files_only))
+	return call6 (handler, Qdirectory_files, dirname, full, match, nosort,
+		      files_only);
+      else
+	return call5 (handler, Qdirectory_files, dirname, full, match,
+		      nosort);
+    }
 
   /* #### why do we do Fexpand_file_name after file handlers here,
      but earlier everywhere else? */
   dirname = Fexpand_file_name (dirname, Qnil);
-  dirfilename = Fdirectory_file_name (dirname);
-  name_as_dir = Ffile_name_as_directory (dirname);
+  dirname = Ffile_name_as_directory (dirname);
+  dirnamelen = XSTRING_LENGTH (dirname);
 
-  name_as_dir_length = XSTRING_LENGTH (name_as_dir);
-  statbuf = (char *) alloca (name_as_dir_length + MAXNAMLEN + 1);
-  memcpy (statbuf, XSTRING_DATA (name_as_dir), name_as_dir_length);
-  statbuf_tail = statbuf + name_as_dir_length;
+  statbuf = (char *)alloca (dirnamelen + MAXNAMLEN + 1);
+  memcpy (statbuf, XSTRING_DATA (dirname), dirnamelen);
+  statbuf_tail = statbuf + dirnamelen;
 
   /* XEmacs: this should come after Ffile_name_as_directory() to avoid
      potential regexp cache smashage.  It comes before the opendir()
@@ -117,81 +115,82 @@
   /* Now *bufp is the compiled form of MATCH; don't call anything
      which might compile a new regexp until we're done with the loop!  */
 
-  /* Do this opendir after anything which might signal an error;
-     previosly, there was no unwind-protection in case of error, but
-     now there is.  */
-  d = opendir ((char *) XSTRING_DATA (dirfilename));
-  if (! d)
+  /* Do this opendir after anything which might signal an error.
+     NOTE: the above comment is old; previosly, there was no
+     unwind-protection in case of error, but now there is.  */
+  d = opendir ((char *) XSTRING_DATA (dirname));
+  if (!d)
     report_file_error ("Opening directory", list1 (dirname));
 
   record_unwind_protect (close_directory_unwind, make_opaque_ptr ((void *)d));
 
-  list = Qnil;
-
   /* Loop reading blocks */
   while (1)
     {
       DIRENTRY *dp = readdir (d);
+      Lisp_Object name;
       int len;
 
-      if (!dp) break;
+      if (!dp)
+	break;
       len = NAMLEN (dp);
-      if (DIRENTRY_NONEMPTY (dp))
+      if (DIRENTRY_NONEMPTY (dp)
+	  && (NILP (match)
+	      || (0 <= re_search (bufp, dp->d_name, len, 0, len, 0))))
 	{
-	  int result;
-	  result = (NILP (match)
-	      || (0 <= re_search (bufp, dp->d_name, len, 0, len, 0)));
-          if (result)
+	  if (!NILP (files_only))
 	    {
-	      if (!NILP (files_only))
-		{
-		  int dir_p;
-		  struct stat st;
-		  char *cur_statbuf = statbuf;
-		  char *cur_statbuf_tail = statbuf_tail;
+	      int dir_p;
+	      struct stat st;
+	      char *cur_statbuf = statbuf;
+	      char *cur_statbuf_tail = statbuf_tail;
+
+	      /* #### I don't think the code under `if' is necessary
+		 anymore.  The crashes in this function were reported
+		 because MAXNAMLEN was used to remember the *whole*
+		 statbuf, instead of using MAXPATHLEN.  This should be
+		 tested after 20.5 is released.  */
 
-		  /* A trick: we normally use the buffer created by
-		     alloca.  However, if the filename is too big
-		     (meaning MAXNAMLEN is wrong or useless on the
-		     system), we'll use a malloced buffer, and free
-		     it. */
-		  if (len > MAXNAMLEN)
-		    {
-		      cur_statbuf = (char *) xmalloc (name_as_dir_length
-						      + len + 1);
-		      memcpy (cur_statbuf, statbuf, name_as_dir_length);
-		      cur_statbuf_tail = cur_statbuf + name_as_dir_length;
-		    }
-		  memcpy (cur_statbuf_tail, dp->d_name, len);
-		  cur_statbuf_tail [len] = 0;
-
-		  if (stat (cur_statbuf, &st) < 0)
-		    dir_p = 0;
-		  else
-		    dir_p = ((st.st_mode & S_IFMT) == S_IFDIR);
+	      /* We normally use the buffer created by alloca.
+		 However, if the file name we get too big, we'll use a
+		 malloced buffer, and free it.  It is undefined how
+		 stat() will react to this, but we avoid a buffer
+		 overrun.  */
+	      if (len > MAXNAMLEN)
+		{
+		  cur_statbuf = (char *)xmalloc (dirnamelen + len + 1);
+		  memcpy (cur_statbuf, statbuf, dirnamelen);
+		  cur_statbuf_tail = cur_statbuf + dirnamelen;
+		}
+	      memcpy (cur_statbuf_tail, dp->d_name, len);
+	      cur_statbuf_tail[len] = 0;
 
-		  if (cur_statbuf != statbuf)
-		    xfree (cur_statbuf);
+	      if (stat (cur_statbuf, &st) < 0)
+		dir_p = 0;
+	      else
+		dir_p = ((st.st_mode & S_IFMT) == S_IFDIR);
 
-		  if (EQ (files_only, Qt) && dir_p)
-		    continue;
-		  else if (!EQ (files_only, Qt) && !dir_p)
-		    continue;
-		}
+	      if (cur_statbuf != statbuf)
+		xfree (cur_statbuf);
 
-	      if (!NILP (full))
-		name = concat2 (name_as_dir,
-				make_ext_string ((Bufbyte *)dp->d_name,
-						 len, FORMAT_FILENAME));
-	      else
-		name = make_ext_string ((Bufbyte *)dp->d_name,
-					len, FORMAT_FILENAME);
+	      if (EQ (files_only, Qt) && dir_p)
+		continue;
+	      else if (!EQ (files_only, Qt) && !dir_p)
+		continue;
+	    }
 
-	      list = Fcons (name, list);
-	    }
+	  if (!NILP (full))
+	    name = concat2 (dirname, make_ext_string ((Bufbyte *)dp->d_name,
+						      len, FORMAT_FILENAME));
+	  else
+	    name = make_ext_string ((Bufbyte *)dp->d_name,
+				    len, FORMAT_FILENAME);
+
+	  list = Fcons (name, list);
 	}
     }
   unbind_to (speccount, Qnil);	/* This will close the dir */
+
   if (!NILP (nosort))
     RETURN_UNGCPRO (list);
   else
@@ -292,17 +291,17 @@
 }
 
 static Lisp_Object
-file_name_completion_unwind (Lisp_Object unwind_obj)
+file_name_completion_unwind (Lisp_Object locative)
 {
   DIR *d;
-  Lisp_Object obj = XCAR (unwind_obj);
+  Lisp_Object obj = XCAR (locative);
 
   if (NILP (obj))
     return Qnil;
   d = (DIR *)get_opaque_ptr (obj);
   closedir (d);
   free_opaque_ptr (obj);
-  free_cons (XCONS (unwind_obj));
+  free_cons (XCONS (locative));
   return Qnil;
 }
 
@@ -319,8 +318,7 @@
   int passcount;
   int speccount = specpdl_depth ();
   Charcount file_name_length;
-  DIRENTRY *((*readfunc) (DIR *)) = readdir;
-  Lisp_Object unwind_closure;
+  Lisp_Object locative;
   struct gcpro gcpro1, gcpro2, gcpro3;
 
   GCPRO3 (file, dirname, bestmatch);
@@ -331,7 +329,7 @@
   /* Filename completion on Windows ignores case, since Windows
      filesystems do.  */
   specbind (Qcompletion_ignore_case, Qt);
-#endif /* HAVE_WINDOWS */
+#endif /* WINDOWSNT */
 
 #ifdef FILE_SYSTEM_CASE
   file = FILE_SYSTEM_CASE (file);
@@ -352,15 +350,15 @@
      call closedir, but it was wrong, because it made sane handling of
      QUIT impossible and, besides, various utility functions like
      regexp_ignore_completion_p can signal errors.  */
-  unwind_closure = noseeum_cons (Qnil, Qnil);
-  record_unwind_protect (file_name_completion_unwind, unwind_closure);
+  locative = noseeum_cons (Qnil, Qnil);
+  record_unwind_protect (file_name_completion_unwind, locative);
 
   for (passcount = !!all_flag; NILP (bestmatch) && passcount < 2; passcount++)
     {
       d = opendir ((char *) XSTRING_DATA (Fdirectory_file_name (dirname)));
       if (!d)
 	report_file_error ("Opening directory", list1 (dirname));
-      XCAR (unwind_closure) = make_opaque_ptr ((void *)d);
+      XCAR (locative) = make_opaque_ptr ((void *)d);
 
       /* Loop reading blocks */
       while (1)
@@ -374,7 +372,7 @@
           int ignored_extension_p = 0;
 	  Bufbyte *d_name;
 
-	  dp = (*readfunc) (d);
+	  dp = readdir (d);
 	  if (!dp) break;
 
 	  /* #### This is a bad idea, because d_name can contain
@@ -516,8 +514,8 @@
             }
         }
       closedir (d);
-      free_opaque_ptr (XCAR (unwind_closure));
-      XCAR (unwind_closure) = Qnil;
+      free_opaque_ptr (XCAR (locative));
+      XCAR (locative) = Qnil;
     }
 
   unbind_to (speccount, Qnil);
--- a/src/doc.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/doc.c	Mon Aug 13 10:26:29 2007 +0200
@@ -923,6 +923,7 @@
 	      {
 		char boof[255], *b = boof;
 		*b++ = '\n';
+		/* #### This sprintf() is potentially dangerous!  */
 		sprintf (b, GETTEXT (
 		"Uses keymap \"%s\", which is not currently defined."),
 			 (char *) XSTRING_DATA (Fsymbol_name (name)));
--- a/src/emacs.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/emacs.c	Mon Aug 13 10:26:29 2007 +0200
@@ -86,14 +86,6 @@
 /* Preserves a pointer to the memory allocated that copies that
    static data inside glibc's malloc.  */
 void *malloc_state_ptr;
-/*#define SLB_MEMORY_CHECKING 1*/
-/* I have observed free being passed the value 0x01 in gdb from somewhere */
-/* in the locale initialization, except that as soon as the following */
-/* monitoring code was added, the problem went away.  I don't trust gdb */
-/* at all with glibc, sigh.  -slb */
-#ifdef SLB_MEMORY_CHECKING
-void slb_memory_checker(__malloc_ptr_t);
-#endif
 #endif
 
 /* Variable whose value is symbol giving operating system type. */
@@ -112,9 +104,6 @@
 Lisp_Object Vemacs_beta_version;
 Lisp_Object Vxemacs_codename;
 
-/* Package directories built in at configure time */
-Lisp_Object Vpackage_path;
-
 /* The name under which XEmacs was invoked, with any leading directory
    names discarded.  */
 Lisp_Object Vinvocation_name;
@@ -128,6 +117,21 @@
 Lisp_Object Vinstallation_directory;
 #endif
 
+Lisp_Object Vexec_path, Vconfigure_exec_path;
+Lisp_Object Vexec_directory;
+Lisp_Object Vconfigure_lisp_directory;
+Lisp_Object Vconfigure_package_path;
+Lisp_Object Vdata_directory, Vconfigure_data_directory;
+Lisp_Object Vdoc_directory, Vconfigure_doc_directory;
+Lisp_Object Vconfigure_lock_directory;
+Lisp_Object Vdata_directory_list;
+Lisp_Object Vinfo_directory, Vconfigure_info_directory;
+Lisp_Object Vsite_directory, Vconfigure_site_directory;
+Lisp_Object Vconfigure_info_path;
+
+/* The default base directory XEmacs is installed under. */
+Lisp_Object Vconfigure_prefix_directory;
+
 /* If nonzero, set XEmacs to run at this priority.  This is also used
    in child_setup and sys_suspend to make sure subshells run at normal
    priority. */
@@ -173,6 +177,9 @@
 
 int noninteractive1;
 
+/* Nonzero means don't perform site-lisp searches at startup */
+int inhibit_site_lisp;
+
 /* Nonzero means don't perform package searches at startup */
 int inhibit_package_init;
 
@@ -506,14 +513,14 @@
   extern int malloc_cookie;
 #endif
 
-#ifndef SYSTEM_MALLOC
+#if !defined(SYSTEM_MALLOC) && !defined(HAVE_LIBMCHECK)
   /* Make sure that any libraries we link against haven't installed a
      hook for a gmalloc of a potentially incompatible version. */
+  /* If we're using libmcheck, the hooks have already been initialized, */
+  /* don't touch them. -slb */
   __malloc_hook = NULL;
   __realloc_hook = NULL;
-#ifndef SLB_MEMORY_CHECKING
   __free_hook = NULL;
-#endif
 #endif /* not SYSTEM_MALLOC */
 
   noninteractive = 0;
@@ -532,11 +539,12 @@
       printf ("malloc jumpstart failed!\n");
 #endif /* NeXT */
 
-#if defined (GNU_MALLOC) && defined (ERROR_CHECK_MALLOC)
-#if 0
-  if (!initialized)
-    init_free_hook ();
-#endif
+#if defined (GNU_MALLOC) && \
+    defined (ERROR_CHECK_MALLOC) && \
+    !defined (HAVE_LIBMCHECK)
+  /* Prior to XEmacs 21, this was `#if 0'ed out.  I'm putting it back in
+     because it provides extremely valuable debugging code. -slb */
+  init_free_hook ();
 #endif
 
   sort_args (argc, argv);
@@ -677,6 +685,7 @@
     {
       /* Inhibit everything */
       inhibit_package_init = 1;
+      inhibit_site_lisp = 1;
       inhibit_update_autoloads = 1;
       inhibit_update_dumped_lisp = 1;
       skip_args--;
@@ -945,6 +954,7 @@
       syms_of_frame_mswindows ();
       syms_of_objects_mswindows ();
       syms_of_select_mswindows ();
+      syms_of_glyphs_mswindows ();
 #ifdef HAVE_MENUBARS
       syms_of_menubar_mswindows ();
 #endif
@@ -982,11 +992,12 @@
       syms_of_btl ();
 #endif
 
-#if defined (GNU_MALLOC) && defined (ERROR_CHECK_MALLOC)
-#if 0
+#if defined (GNU_MALLOC) && \
+    defined (ERROR_CHECK_MALLOC) && \
+    !defined (HAVE_LIBMCHECK)
+      /* Prior to XEmacs 21, this was `#if 0'ed out. -slb */
       syms_of_free_hook ();
 #endif
-#endif
 
 #ifdef TOOLTALK
       syms_of_tooltalk ();
@@ -1050,6 +1061,7 @@
       console_type_create_frame_mswindows ();
       console_type_create_objects_mswindows ();
       console_type_create_redisplay_mswindows ();
+      console_type_create_glyphs_mswindows ();
 # ifdef HAVE_SCROLLBARS
       console_type_create_scrollbar_mswindows ();
 # endif
@@ -1107,6 +1119,9 @@
 #ifdef HAVE_X_WINDOWS
       image_instantiator_format_create_glyphs_x ();
 #endif /* HAVE_X_WINDOWS */
+#ifdef HAVE_MS_WINDOWS
+      image_instantiator_format_create_glyphs_mswindows ();
+#endif /* HAVE_MSWINDOWS_WINDOWS */
 
       /* Now initialize the lstream types and associated symbols.
 	 Other than the first function below, the functions may
@@ -1312,6 +1327,7 @@
       vars_of_frame_mswindows ();
       vars_of_objects_mswindows ();
       vars_of_select_mswindows ();
+      vars_of_glyphs_mswindows ();
 #ifdef HAVE_SCROLLBARS
       vars_of_scrollbar_mswindows ();
 #endif
@@ -1415,6 +1431,9 @@
 #ifdef HAVE_X_WINDOWS
       complex_vars_of_glyphs_x ();
 #endif
+#ifdef HAVE_MS_WINDOWS
+      complex_vars_of_glyphs_mswindows ();
+#endif
 
       /* This calls Fmake_glyph_internal(). */
       complex_vars_of_alloc ();
@@ -1460,7 +1479,8 @@
 
       /* These two might call Ffile_name_as_directory(), which
 	 might depend on all sorts of things; I'm not sure. */
-      complex_vars_of_callproc ();
+      complex_vars_of_emacs ();
+
 #ifdef CLASH_DETECTION
       complex_vars_of_filelock ();
 #endif /* CLASH_DETECTION */
@@ -1911,25 +1931,6 @@
   return Qnil; /* not reached; warning suppression */
 }
 
-#ifdef SLB_MEMORY_CHECKING
-void
-slb_memory_checker(__malloc_ptr_t mem)
-{
-  unsigned int u = (unsigned int)mem;
-  /*        08f6b0a8 */
-  if (u < 0x08000000) {
-    printf("free(%08x)\n", u);
-    /* abort(); */
-  } else {
-    __free_hook = 0;
-
-    free(mem);
-
-    __free_hook = slb_memory_checker;
-  }
-}
-#endif
-
 /* ARGSUSED */
 int
 main (int argc, char **argv, char **envp)
@@ -1965,9 +1966,6 @@
   quantify_clear_data ();
 #endif /* QUANTIFY */
 
-#ifdef SLB_MEMORY_CHECKING
-      __free_hook = slb_memory_checker;
-#endif
   suppress_early_backtrace = 0;
   lim_data = 0; /* force reinitialization of this variable */
 
@@ -2076,7 +2074,7 @@
 
   if (!preparing_for_armageddon)
     {
-      Lisp_Object concons;
+      Lisp_Object concons, nextcons;
 
       /* Normally, go ahead and delete all the consoles now.
 	 Some unmentionably lame window systems (MS Wwwww...... eek,
@@ -2085,8 +2083,17 @@
 	 If we're going down, however, we don't do this (might
 	 be too dangerous), and if we get a crash somewhere within
 	 this loop, we'll still autosave and won't try this again. */
-      CONSOLE_LOOP (concons)
-	delete_console_internal (XCONSOLE (XCAR (concons)), 1, 1, 0);
+
+      LIST_LOOP_DELETING(concons, nextcons, Vconsole_list)
+	{
+	  /* There is very little point in deleting the stream console.
+	     It uses stdio, which should flush any buffered output and
+	     something can only go wrong. -slb */
+	  /* I changed my mind.  There's a stupid hack in close to add
+	     a trailing newline. */
+	  /*if (!CONSOLE_STREAM_P (XCONSOLE (XCAR (concons))))*/
+	    delete_console_internal (XCONSOLE (XCAR (concons)), 1, 1, 0);
+	}
     }
 
   UNGCPRO;
@@ -2371,14 +2378,20 @@
 #define SEPCHAR ':'
 #endif
 
-DEFUN ("parse-colon-path", Fparse_colon_path, 1, 1, 0, /*
+DEFUN ("decode-path-internal", Fdecode_path_internal, 1, 1, 0, /*
 Explode a colon-separated list of paths into a string list.
 */
        (cd_path))
 {
+  if (NILP(cd_path))
+    {
+      return Qnil;
+    }
   CHECK_STRING (cd_path);
 
-  return decode_path(XSTRING_DATA(cd_path));
+  return (!XSTRING_LENGTH(cd_path)) ?
+    list1(Qnil) :
+    decode_path(XSTRING_DATA(cd_path));
 }
 
 Lisp_Object
@@ -2398,7 +2411,7 @@
       p = strchr (path, SEPCHAR);
       if (!p) p = path + strlen (path);
       lpath = Fcons (((p != path)
-#if 0
+#if 1
 		      ? Ffile_name_as_directory(make_string ((CONST Bufbyte *) path, p - path))
 #else
 		      ? make_string ((CONST Bufbyte *) path, p - path)
@@ -2512,7 +2525,7 @@
   DEFSUBR (Fquantify_clear_data);
 #endif /* QUANTIFY */
 
-  DEFSUBR (Fparse_colon_path);
+  DEFSUBR (Fdecode_path_internal);
 
   defsymbol (&Qkill_emacs_hook, "kill-emacs-hook");
   defsymbol (&Qsave_buffers_kill_emacs, "save-buffers-kill-emacs");
@@ -2607,14 +2620,6 @@
 #endif
   Vxemacs_codename = Fpurecopy (build_string (XEMACS_CODENAME));
 
-  DEFVAR_LISP ("package-path", &Vpackage_path /*
-List of directories configured for package searching.
-*/ );
-#ifndef PACKAGE_PATH
-#define PACKAGE_PATH "~/.xemacs:" PATH_PREFIX "/lib/xemacs/packages"
-#endif
-  Vpackage_path = decode_path(PACKAGE_PATH);
-
   DEFVAR_BOOL ("noninteractive", &noninteractive1 /*
 Non-nil means XEmacs is running without interactive terminal.
 */ );
@@ -2623,6 +2628,10 @@
 Set to non-nil when the package-path should not be searched at startup.
 */ );
 
+  DEFVAR_BOOL ("inhibit-site-lisp", &inhibit_site_lisp /*
+Set to non-nil when the site-lisp should not be searched at startup.
+*/ );
+
   DEFVAR_BOOL ("inhibit-update-dumped-lisp", &inhibit_update_dumped_lisp /*
 Set to non-nil when modified dumped lisp should not be reloaded at startup.
 */ );
@@ -2644,3 +2653,148 @@
   emacs_priority = 0;
 
 }
+
+void
+complex_vars_of_emacs (void)
+{
+  DEFVAR_LISP ("exec-path", &Vexec_path /*
+*List of directories to search programs to run in subprocesses.
+Each element is a string (directory name) or nil (try default directory).
+*/ );
+  Vexec_path = Qnil;
+
+  DEFVAR_LISP ("configure-exec-path", &Vconfigure_exec_path /*
+For internal use by the build procedure only.
+configure's idea of what EXEC-PATH will be.
+*/ );
+#ifdef PATH_EXEC
+  Vconfigure_exec_path = decode_path (PATH_EXEC);
+#else
+  Vconfigure_exec_path = Qnil;
+#endif
+
+  DEFVAR_LISP ("exec-directory", &Vexec_directory /*
+*Directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.
+*/ );
+  Vexec_directory = Qnil;
+
+  DEFVAR_LISP ("configure-lisp-directory", &Vconfigure_lisp_directory /*
+Directory of core Lisp files that come with XEmacs.
+*/ );
+#ifdef PATH_LOADSEARCH
+  Vconfigure_lisp_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_LOADSEARCH));
+#else
+  Vconfigure_lisp_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("configure-package-path", &Vconfigure_package_path /*
+For internal use by the build procedure only.
+configure's idea of what PACKAGE-DIRECTORY will be.
+*/ );
+#ifdef PATH_PACKAGEPATH
+  Vconfigure_package_path = decode_path (PATH_PACKAGEPATH);
+#else
+  Vconfigure_package_path = Qnil;
+#endif
+
+  DEFVAR_LISP ("data-directory", &Vdata_directory /*
+*Directory of architecture-independent files that come with XEmacs,
+intended for XEmacs to use.
+Use of this variable in new code is almost never correct.  See the
+function `locate-data-directory' and the variable `data-directory-list'.
+*/ );
+  Vdata_directory = Qnil;
+
+  DEFVAR_LISP ("configure-data-directory", &Vconfigure_data_directory /*
+For internal use by the build procedure only.
+configure's idea of what DATA-DIRECTORY will be.
+*/ );
+#ifdef PATH_DATA
+  Vconfigure_data_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_DATA));
+#else
+  Vconfigure_data_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("data-directory-list", &Vdata_directory_list /*
+*List of directories of architecture-independent files that come with XEmacs
+or were installed as packages, and are intended for XEmacs to use.
+*/ );
+  Vdata_directory_list = Qnil;
+
+#ifdef CLASH_DETECTION
+  DEFVAR_LISP ("configure-lock-directory", &Vconfigure_lock_directory /*
+For internal use by the build procedure only.
+configure's idea of what LOCK-DIRECTORY will be.
+*/ );
+#ifdef PATH_LOCK
+  Vconfigure_lock_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_LOCK));
+#else
+  Vconfigure_lock_directory = Qnil;
+#endif
+#endif /* CLASH_DETECTION */
+
+  DEFVAR_LISP ("configure-site-directory", &Vconfigure_site_directory /*
+For internal use by the build procedure only.
+configure's idea of what SITE-DIRECTORY will be.
+*/ );
+#ifdef PATH_SITE
+  Vconfigure_site_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_SITE));
+#else
+  Vconfigure_site_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("doc-directory", &Vdoc_directory /*
+*Directory containing the DOC file that comes with XEmacs.
+This is usually the same as exec-directory.
+*/ );
+  Vdoc_directory = Qnil;
+
+  DEFVAR_LISP ("configure-doc-directory", &Vconfigure_doc_directory /*
+For internal use by the build procedure only.
+configure's idea of what DOC-DIRECTORY will be.
+*/ );
+#ifdef PATH_DOC
+  Vconfigure_doc_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_DOC));
+#else
+  Vconfigure_doc_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("configure-prefix-directory", &Vconfigure_prefix_directory /*
+For internal use by the build procedure only.
+configure's idea of what PREFIX-DIRECTORY will be.
+*/ );
+#ifdef PATH_PREFIX
+  Vconfigure_prefix_directory = Ffile_name_as_directory
+    (build_string ((char *) PATH_PREFIX));
+#else
+  Vconfigure_prefix_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("configure-info-directory", &Vconfigure_info_directory /*
+For internal use by the build procedure only.
+This is the name of the directory in which the build procedure installed
+Emacs's info files; the default value for Info-default-directory-list
+includes this.
+*/ );
+#ifdef PATH_INFO
+  Vconfigure_info_directory =
+    Ffile_name_as_directory (build_string (PATH_INFO));
+#else
+  Vconfigure_info_directory = Qnil;
+#endif
+
+  DEFVAR_LISP ("configure-info-path", &Vconfigure_info_path /*
+The configured initial path for info documentation.
+*/ );
+#ifdef PATH_INFOPATH
+  Vconfigure_info_path = decode_path (PATH_INFOPATH);
+#else
+  Vconfigure_info_path = Qnil;
+#endif
+}
--- a/src/event-Xt.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/event-Xt.c	Mon Aug 13 10:26:29 2007 +0200
@@ -2044,12 +2044,13 @@
   if (w)
     stderr_out (" %s", w->core.widget_class->core_class.class_name);
   f = x_any_window_to_frame (get_device_from_display (display), window);
-  if (f) {
-    char buf[500];
-    sprintf (buf, " \"%s\"", XSTRING_DATA (f->name));
-    write_string_to_stdio_stream (stderr, 0, (Bufbyte *) buf, 0, strlen (buf),
-                                  FORMAT_TERMINAL);
-  }
+  if (f)
+    {
+      char *buf = alloca (XSTRING_LENGTH (f->name) + 4);
+      sprintf (buf, " \"%s\"", XSTRING_DATA (f->name));
+      write_string_to_stdio_stream (stderr, 0, (Bufbyte *) buf, 0,
+				    strlen (buf), FORMAT_TERMINAL);
+    }
   stderr_out ("\n");
 }
 
--- a/src/event-stream.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/event-stream.c	Mon Aug 13 10:26:29 2007 +0200
@@ -3184,14 +3184,14 @@
     while (!NILP (t))
       {
 	i++;
-	sprintf(buf,"OPERATE (%d): ",i);
-	write_c_string (buf,Qexternal_debugging_output);
+	sprintf (buf,"OPERATE (%d): ",i);
+	write_c_string (buf, Qexternal_debugging_output);
 	print_internal (t, Qexternal_debugging_output, 1);
 	write_c_string ("\n", Qexternal_debugging_output);
 	t = XEVENT_NEXT (t);
       }
   }
-#endif
+#endif /* 0 */
 
   /* menu accelerator keys don't go into keyboard macros */
   if (!NILP (con->defining_kbd_macro) && NILP (Vexecuting_macro))
--- a/src/event-unixoid.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/event-unixoid.c	Mon Aug 13 10:26:29 2007 +0200
@@ -325,11 +325,6 @@
   if (out != in && out >= 0)
     close (out);
 
-  if (!NILP (instream))
-    Lstream_close (XLSTREAM (instream));
-  if (!NILP (outstream))
-    Lstream_close (XLSTREAM (outstream));
-
   return FD_TO_USID (in);
 }
 
--- a/src/events.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/events.c	Mon Aug 13 10:26:29 2007 +0200
@@ -482,6 +482,11 @@
     e->event_type = button_release_event;
   else if (EQ (type, Qmotion))
     e->event_type = pointer_motion_event;
+  else if (EQ (type, Qmisc_user))
+    {
+      e->event_type = misc_user_event;
+      e->event.eval.function = e->event.eval.object = Qnil;
+    }
 #if defined(HAVE_OFFIX_DND) || defined(HAVE_MS_WINDOWS)
   else if (EQ (type, Qdnd_drop))
     {
@@ -491,37 +496,38 @@
 #endif
   else
     {
-      /* Not allowed: Qmisc_user, Qprocess, Qtimeout, Qmagic, Qeval,
-	 Qmagic_eval.  */
-      /* #### Should we allow misc-user events?  */
+      /* Not allowed: Qprocess, Qtimeout, Qmagic, Qeval, Qmagic_eval.  */
       signal_simple_error ("Invalid event type", type);
     }
 
+  EVENT_CHANNEL (e) = Qnil;
+
   plist = Fcopy_sequence (plist);
   Fcanonicalize_plist (plist, Qnil);
 
-  /* Process the plist. */
+#define WRONG_EVENT_TYPE_FOR_PROPERTY(prop)					\
+  error_with_frob (type, "Invalid event type for `%s' property", keyword)
+
   EXTERNAL_PROPERTY_LIST_LOOP (tail, keyword, value, plist)
     {
       if (EQ (keyword, Qchannel))
 	{
 	  if (e->event_type == key_press_event)
 	    {
-	      if (!CONSOLEP (value))
-		wrong_type_argument (Qconsolep, value);
+	      while (!CONSOLEP (value))
+		value = wrong_type_argument (Qconsolep, value);
 	    }
-	  else
+	  else if (e->event_type != misc_user_event)
 	    {
-	      if (!FRAMEP (value))
-		wrong_type_argument (Qframep, value);
+	      while (!FRAMEP (value))
+		value = wrong_type_argument (Qframep, value);
 	    }
 	  EVENT_CHANNEL (e) = value;
 	}
       else if (EQ (keyword, Qkey))
 	{
 	  if (e->event_type != key_press_event)
-	    signal_simple_error ("Invalid event type for `key' property",
-				 type);
+	    WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
 	  if (!SYMBOLP (value) && !CHARP (value))
 	    signal_simple_error ("Invalid event key", value);
 	  e->event.key.keysym = value;
@@ -529,28 +535,28 @@
       else if (EQ (keyword, Qbutton))
 	{
 	  CHECK_NATNUM (value);
-	  check_int_range (XINT(value), 1, 3);
+	  check_int_range (XINT (value), 0, 7);
 	  if (e->event_type != button_press_event
 	      && e->event_type != button_release_event)
-	    signal_simple_error ("Invalid event type for `button' property",
-				 type);
+	    {
+	      WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
+	    }
 	  e->event.button.button = XINT (value);
 	}
       else if (EQ (keyword, Qmodifiers))
 	{
-	  Lisp_Object modtail, sym;
+	  Lisp_Object modtail;
 	  int modifiers = 0;
 
 	  if (e->event_type != key_press_event
 	      && e->event_type != button_press_event
 	      && e->event_type != button_release_event
 	      && e->event_type != pointer_motion_event)
-	    /* Currently unreached. */
-	    signal_simple_error ("Invalid event type for modifiers", type);
+	    WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
 
 	  EXTERNAL_LIST_LOOP (modtail, value)
 	    {
-	      sym = XCAR (modtail);
+	      Lisp_Object sym = XCAR (modtail);
 	      if (EQ (sym, Qcontrol))      modifiers |= MOD_CONTROL;
 	      else if (EQ (sym, Qmeta))    modifiers |= MOD_META;
 	      else if (EQ (sym, Qsuper))   modifiers |= MOD_SUPER;
@@ -559,7 +565,7 @@
 	      else if (EQ (sym, Qsymbol))  modifiers |= MOD_ALT;
 	      else if (EQ (sym, Qshift))   modifiers |= MOD_SHIFT;
 	      else
-		signal_simple_error ("Invalid key modifier", XCAR (modtail));
+		signal_simple_error ("Invalid key modifier", sym);
 	    }
 	  if (e->event_type == key_press_event)
 	    e->event.key.modifiers = modifiers;
@@ -578,8 +584,7 @@
 	      && e->event_type != button_press_event
 	      && e->event_type != button_release_event)
 	    {
-	      signal_simple_error ("Cannot assign `x' property to event",
-				   type);
+	      WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
 	    }
 	  coord_x = XINT (value);
 	}
@@ -591,8 +596,7 @@
 	      && e->event_type != button_press_event
 	      && e->event_type != button_release_event)
 	    {
-	      signal_simple_error ("Cannot assign `y' property to event",
-				   type);
+	      WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
 	    }
 	  coord_y = XINT (value);
 	}
@@ -601,6 +605,18 @@
 	  CHECK_NATNUM (value);
 	  e->timestamp = XINT (value);
 	}
+      else if (EQ (keyword, Qfunction))
+	{
+	  if (e->event_type != misc_user_event)
+	    WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
+	  e->event.eval.function = value;
+	}
+      else if (EQ (keyword, Qobject))
+	{
+	  if (e->event_type != misc_user_event)
+	    WRONG_EVENT_TYPE_FOR_PROPERTY (keyword);
+	  e->event.eval.object = value;
+	}
 #if defined(HAVE_OFFIX_DND) || defined(HAVE_MS_WINDOWS)
       else if (EQ (keyword, Qdnd_data))
 	{
@@ -627,15 +643,15 @@
 	}
 #endif /* HAVE_OFFIX_DND || HAVE_MS_WINDOWS */
       else
-	signal_simple_error ("Invalid property", keyword);
-    } /* while */
+	signal_simple_error_2 ("Invalid property", keyword, value);
+    }
 
   /* Insert the channel, if missing. */
   if (NILP (EVENT_CHANNEL (e)))
     {
       if (e->event_type == key_press_event)
 	EVENT_CHANNEL (e) = Vselected_console;
-      else
+      else if (e->event_type != misc_user_event)
 	EVENT_CHANNEL (e) = Fselected_frame (Qnil);
     }
 
@@ -1001,7 +1017,7 @@
 	case 'M': k = QKreturn;	  m &= ~MOD_CONTROL; break;
 	case '[': k = QKescape;	  m &= ~MOD_CONTROL; break;
 	default:
-#if defined(HAVE_TTY) && !defined(__CYGWIN32__)
+#if defined(HAVE_TTY)
 	  if (do_backspace_mapping &&
 	      CHARP (con->tty_erase_char) &&
 	      c - '@' == XCHAR (con->tty_erase_char))
@@ -1014,7 +1030,7 @@
 	}
       if (c >= 'A' && c <= 'Z') c -= 'A'-'a';
     }
-#if defined(HAVE_TTY) && !defined(__CYGWIN32__)
+#if defined(HAVE_TTY) 
   else if (do_backspace_mapping &&
 	   CHARP (con->tty_erase_char) && c == XCHAR (con->tty_erase_char))
     k = QKbackspace;
--- a/src/fileio.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/fileio.c	Mon Aug 13 10:26:29 2007 +0200
@@ -2191,9 +2191,11 @@
 
 #ifdef WINDOWSNT
   /* Under MS-DOS and Windows, open does not work for directories.  */
+  UNGCPRO;
   if (access (XSTRING_DATA (abspath), 0) == 0)
     return Qt;
-  return Qnil;
+  else
+    return Qnil;
 #else /* not WINDOWSNT */
   {
     int desc = interruptible_open ((char *) XSTRING_DATA (abspath), O_RDONLY | OPEN_BINARY, 0);
--- a/src/filelock.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/filelock.c	Mon Aug 13 10:26:29 2007 +0200
@@ -40,7 +40,7 @@
 
 /* The name of the directory in which we keep lock files, with a '/'
    appended.  */
-Lisp_Object Vlock_directory;
+Lisp_Object Vlock_directory, Vconfigure_lock_directory;
 
 #if 0 /* FSFmacs */
 /* Look in startup.el */
@@ -51,7 +51,7 @@
 
 /* The name of the superlock file.  This is SUPERLOCK_NAME appended to
    Vlock_directory.  */
-Lisp_Object Vsuperlock_file;
+Lisp_Object Vsuperlock_file, Vconfigure_superlock_file;
 
 Lisp_Object Qask_user_about_supersession_threat;
 Lisp_Object Qask_user_about_lock;
@@ -523,25 +523,34 @@
   DEFVAR_LISP ("lock-directory", &Vlock_directory /*
 Don't change this
 */ );
+  Vlock_directory = Qnil;
   DEFVAR_LISP ("superlock-file", &Vsuperlock_file /*
 Don't change this
 */ );
+  Vsuperlock_file = Qnil;
 }
 
 void
 complex_vars_of_filelock (void)
 {
+  DEFVAR_LISP ("configure-lock-directory", &Vconfigure_lock_directory /*
+For internal use by the build procedure only.
+configure's idea of what LOCK-DIRECTORY will be.
+*/ );
 #ifdef PATH_LOCK
-  Vlock_directory =
+  Vconfigure_lock_directory =
     Ffile_name_as_directory (build_string (PATH_LOCK));
 #else
-  Vlock_directory = Qnil;
+  Vconfigure_lock_directory = Qnil;
 #endif
+  DEFVAR_LISP ("configure-superlock-file", &Vconfigure_superlock_file /*
+For internal use by the build procedure only.
+configure's idea of what SUPERLOCK-FILE will be.
+*/ );
 #ifdef PATH_SUPERLOCK
-  Vsuperlock_file =
-    Ffile_name_as_directory (build_string (PATH_SUPERLOCK));
+  Vconfigure_superlock_file = build_string (PATH_SUPERLOCK);
 #else
-  Vsuperlock_file = Qnil;
+  Vconfigure_superlock_file = Qnil;
 #endif
   /* All the rest done dynamically by startup.el */
 }
--- a/src/frame.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/frame.c	Mon Aug 13 10:26:29 2007 +0200
@@ -1513,7 +1513,7 @@
     }
  double_break_1:
 
-  if (called_from_delete_device < 0)
+  if (!called_from_delete_device)
     /* then we're being called from delete-console, and we shouldn't
        try to find another default-minibuffer frame for the console.
        */
--- a/src/frame.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/frame.h	Mon Aug 13 10:26:29 2007 +0200
@@ -450,7 +450,8 @@
 
 #ifdef HAVE_TOOLBARS
 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) \
-  (!NILP (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_visible_p[pos]))
+  (HAS_DEVMETH_P (XDEVICE (FRAME_DEVICE (f)), initialize_frame_toolbars) \
+   && !NILP (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_visible_p[pos]))
 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \
   (XINT (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos]))
 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) \
--- a/src/free-hook.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/free-hook.c	Mon Aug 13 10:26:29 2007 +0200
@@ -77,6 +77,7 @@
 void *malloc (unsigned long);
 #endif
 
+#if !defined(HAVE_LIBMCHECK)
 #include <stdio.h>
 
 #include "hash.h"
@@ -225,28 +226,36 @@
 	{
 	/* This can only happen if you try to free something that didn't
 	   come from malloc */
-	if (strict_free_check)
-	  abort ();
-	else
-	  {
-	    __free_hook = check_free;
-	    __malloc_hook = check_malloc;
-	    goto end;
-	  }
+#if 1
+	  /* I originally wrote:  "There's really no need to drop core."
+	     I have seen the error of my ways. -slb */
+	  if (strict_free_check)
+	    {
+	      abort ();
+	    }
+#endif
+	  printf("Freeing unmalloc'ed memory at %p\n", ptr);
+	  __free_hook = check_free;
+	  __malloc_hook = check_malloc;
+	  goto end;
 	}
 
       if (size < 0)
 	{
-	/* This happens when you free twice */
-	if (strict_free_check)
-	  abort ();
-	else
-	  {
-	    __free_hook = check_free;
-	    __malloc_hook = check_malloc;
-	    goto end;
-	  }
+	  /* This happens when you free twice */
+#if 1
+	  /* See above comment. */
+	  if (strict_free_check)
+	    {
+	      abort ();
+	    }
+#endif
+	  printf("Freeing %p twice\n", ptr);
+	  __free_hook = check_free;
+	  __malloc_hook = check_malloc;
+	  goto end;
 	}
+
       puthash (ptr, (void *)-size, pointer_table);
 #ifdef UNMAPPED_FREE
       /* Round up size to an even number of pages. */
@@ -345,9 +354,16 @@
 
   present = (EMACS_INT) gethash (ptr, pointer_table, (void **) &old_size);
   if (!present)
+    {
     /* This can only happen by reallocing a pointer that didn't
        come from malloc. */
-    abort ();
+#if 1
+      /* see comment in check_free(). */
+      abort ();
+#endif
+      printf("Realloc'ing unmalloc'ed pointer at %p\n", ptr);
+    }
+
   if (result == 0)
     goto end;
   memcpy (result, ptr, MIN (size, old_size));
@@ -490,6 +506,7 @@
 void *(*__realloc_hook)() = check_realloc;
 #endif
 
+#endif /* !defined(HAVE_LIBMCHECK) */
 
 #if defined(DEBUG_INPUT_BLOCKING) || defined (DEBUG_GCPRO)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/glyphs-msw.c	Mon Aug 13 10:26:29 2007 +0200
@@ -0,0 +1,741 @@
+/* mswindows-specific Lisp objects.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* written by Andy Piper <andyp@parallax.co.uk> plagerising buts from
+   glyphs-x.c */
+
+#include <config.h>
+#include "lisp.h"
+#include "lstream.h"
+#include "console-msw.h"
+#include "glyphs-msw.h"
+#include "objects-msw.h"
+
+#include "buffer.h"
+#include "frame.h"
+#include "insdel.h"
+#include "opaque.h"
+#include "sysfile.h"
+#include "faces.h"
+#include "imgproc.h"
+
+#ifdef HAVE_XPM
+#include <X11/xpm.h>
+#endif
+
+#ifdef FILE_CODING
+#include "file-coding.h"
+#endif
+
+DEFINE_IMAGE_INSTANTIATOR_FORMAT (bmp);
+Lisp_Object Qbmp;
+Lisp_Object Vmswindows_bitmap_file_path;
+
+static void
+mswindows_initialize_dibitmap_image_instance (struct Lisp_Image_Instance *ii,
+					    enum image_instance_type type);
+
+COLORREF mswindows_string_to_color(CONST char *name);
+
+/************************************************************************/
+/* convert from a series of RGB triples to a BITMAPINFO formated for the*/
+/* proper display 							*/
+/************************************************************************/
+BITMAPINFO* EImage2DIBitmap(Lisp_Object device, int width, int height,
+			    unsigned char *pic,
+			    int *bit_count,
+			    unsigned char** bmp_data)
+{
+  struct device *d = XDEVICE (device);
+  int i;
+  RGBQUAD* colortbl;
+  int		ncolors;
+  BITMAPINFO*	bmp_info;
+
+  if (DEVICE_MSWINDOWS_BITSPIXEL(d) > 16)
+    {
+      /* FIXME: we can do this because 24bpp implies no colour table, once
+       * we start paletizing this is no longer true. The X versions of
+       * this function quantises to 256 colours or bit masks down to a
+       * long. Windows can actually handle rgb triples in the raw so I
+       * don't see much point trying to optimise down to the best
+       * structure - unless it has memory / color allocation implications
+       * .... */
+      bmp_info=xnew_and_zero(BITMAPINFO);
+      
+      if (!bmp_info)
+	{
+	  return NULL;
+	}
+
+      bmp_info->bmiHeader.biBitCount=24; /* just RGB triples for now */
+      bmp_info->bmiHeader.biCompression=BI_RGB; /* just RGB triples for now */
+      bmp_info->bmiHeader.biSizeImage=width*height*3; 
+
+      /* bitmap data needs to be in blue, green, red triples - in that
+	 order, eimage is in RGB format so we need to convert */
+      *bmp_data = xnew_array_and_zero (unsigned char, width * height * 3);
+      *bit_count = width * height * 3;
+
+      if (!bmp_data)
+	{
+	  xfree(bmp_info);
+	  return NULL;
+	}
+      for (i=0; i<width*height; i++)
+	{
+	  (*bmp_data)[2]=*pic;
+	  (*bmp_data)[1]= pic[1];
+	  **bmp_data    = pic[2];
+	  (*bmp_data) += 3;
+	}
+    }
+  else				/* scale to 256 colors */
+    {
+      int rd,gr,bl, j;
+      unsigned char *ip, *dp;
+      quant_table *qtable;
+      int bpline= (int)(~3UL & (unsigned long)(width +3));
+      /* Quantize the image and get a histogram while we're at it.
+	 Do this first to save memory */
+      qtable = EImage_build_quantable(pic, width, height, 256);
+      if (qtable == NULL) return NULL;
+
+      /* use our quantize table to allocate the colors */
+      ncolors = qtable->num_active_colors;
+      bmp_info=(BITMAPINFO*)xmalloc_and_zero(sizeof(BITMAPINFOHEADER) + 
+					     sizeof(RGBQUAD) * ncolors);
+      if (!bmp_info)
+	{
+	  xfree(qtable);
+	  return NULL;
+	}
+
+      colortbl=(RGBQUAD*)(((unsigned char*)bmp_info)+sizeof(BITMAPINFOHEADER));
+
+      bmp_info->bmiHeader.biBitCount=8; 
+      bmp_info->bmiHeader.biCompression=BI_RGB; 
+      bmp_info->bmiHeader.biSizeImage=bpline*height;
+      bmp_info->bmiHeader.biClrUsed=ncolors; 
+      bmp_info->bmiHeader.biClrImportant=ncolors; 
+      
+      *bmp_data = (unsigned char *) xmalloc_and_zero (bpline * height);
+      *bit_count = bpline * height;
+
+      if (!*bmp_data)
+	{
+	  xfree(qtable);
+	  xfree(bmp_info);
+	  return NULL;
+	}
+      
+      /* build up an RGBQUAD colortable */
+      for (i = 0; i < qtable->num_active_colors; i++) {
+	colortbl[i].rgbRed = qtable->rm[i];
+	colortbl[i].rgbGreen = qtable->gm[i];
+	colortbl[i].rgbBlue = qtable->bm[i];
+	colortbl[i].rgbReserved = 0;
+      }
+
+      /* now build up the data. picture has to be upside-down and
+         back-to-front for msw bitmaps */
+      ip = pic;
+      for (i = height-1; i >= 0; i--) {
+	dp = (*bmp_data) + (i * bpline);
+	for (j = 0; j < width; j++) {
+	  rd = *ip++;
+	  gr = *ip++;
+	  bl = *ip++;
+	  *dp++ = QUANT_GET_COLOR(qtable,rd,gr,bl);
+	}
+      }
+      xfree(qtable);
+    } 
+  /* fix up the standard stuff */
+  bmp_info->bmiHeader.biWidth=width;
+  bmp_info->bmiHeader.biHeight=height;
+  bmp_info->bmiHeader.biPlanes=1;
+  bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
+  bmp_info->bmiHeader.biXPelsPerMeter=3779; /* unless you know better */
+  bmp_info->bmiHeader.biYPelsPerMeter=3779; 
+
+  return bmp_info;
+}
+
+/* Given a pixmap filename, look through all of the "standard" places
+   where the file might be located.  Return a full pathname if found;
+   otherwise, return Qnil. */
+
+static Lisp_Object
+locate_pixmap_file (Lisp_Object name)
+{
+  /* This function can GC if IN_REDISPLAY is false */
+
+  /* Check non-absolute pathnames with a directory component relative to
+     the search path; that's the way Xt does it. */
+  /* #### Unix-specific */
+  if (XSTRING_BYTE (name, 0) == '/' ||
+      (XSTRING_BYTE (name, 0) == '.' &&
+       (XSTRING_BYTE (name, 1) == '/' ||
+	(XSTRING_BYTE (name, 1) == '.' &&
+	 (XSTRING_BYTE (name, 2) == '/')))))
+    {
+      if (!NILP (Ffile_readable_p (name)))
+	return name;
+      else
+	return Qnil;
+    }
+
+  if (!NILP(Vmswindows_bitmap_file_path))
+  {
+    Lisp_Object found;
+    if (locate_file (Vmswindows_bitmap_file_path, name, "", &found, R_OK) < 0)
+      {
+	Lisp_Object temp = list1 (Vdata_directory);
+	struct gcpro gcpro1;
+
+	GCPRO1 (temp);
+	locate_file (temp, name, "", &found, R_OK);
+	UNGCPRO;
+      }
+    
+    return found;
+  }
+  else
+    return Qnil;
+}
+
+/* If INSTANTIATOR refers to inline data, return Qnil.
+   If INSTANTIATOR refers to data in a file, return the full filename
+   if it exists; otherwise, return a cons of (filename).
+
+   FILE_KEYWORD and DATA_KEYWORD are symbols specifying the
+   keywords used to look up the file and inline data,
+   respectively, in the instantiator.  Normally these would
+   be Q_file and Q_data, but might be different for mask data. */
+
+static Lisp_Object
+potential_pixmap_file_instantiator (Lisp_Object instantiator,
+				    Lisp_Object file_keyword,
+				    Lisp_Object data_keyword)
+{
+  Lisp_Object file;
+  Lisp_Object data;
+
+  assert (VECTORP (instantiator));
+
+  data = find_keyword_in_vector (instantiator, data_keyword);
+  file = find_keyword_in_vector (instantiator, file_keyword);
+
+  if (!NILP (file) && NILP (data))
+    {
+      Lisp_Object retval = locate_pixmap_file (file);
+      if (!NILP (retval))
+	return retval;
+      else
+	return Fcons (file, Qnil); /* should have been file */
+    }
+
+  return Qnil;
+}
+
+static Lisp_Object
+simple_image_type_normalize (Lisp_Object inst, Lisp_Object console_type,
+			     Lisp_Object image_type_tag)
+{
+  /* This function can call lisp */
+  Lisp_Object file = Qnil;
+  struct gcpro gcpro1, gcpro2;
+  Lisp_Object alist = Qnil;
+
+  GCPRO2 (file, alist);
+
+  /* Now, convert any file data into inline data.  At the end of this,
+     `data' will contain the inline data (if any) or Qnil, and `file'
+     will contain the name this data was derived from (if known) or
+     Qnil.
+
+     Note that if we cannot generate any regular inline data, we
+     skip out. */
+
+  file = potential_pixmap_file_instantiator (inst, Q_file, Q_data);
+
+  if (CONSP (file)) /* failure locating filename */
+    signal_double_file_error ("Opening pixmap file",
+			      "no such file or directory",
+			      Fcar (file));
+
+  if (NILP (file)) /* no conversion necessary */
+    RETURN_UNGCPRO (inst);
+
+  alist = tagged_vector_to_alist (inst);
+
+  {
+    Lisp_Object data = make_string_from_file (file);
+    alist = remassq_no_quit (Q_file, alist);
+    /* there can't be a :data at this point. */
+    alist = Fcons (Fcons (Q_file, file),
+		   Fcons (Fcons (Q_data, data), alist));
+  }
+
+  {
+    Lisp_Object result = alist_to_tagged_vector (image_type_tag, alist);
+    free_alist (alist);
+    RETURN_UNGCPRO (result);
+  }
+}
+
+
+/* Initialize an image instance from a bitmap
+
+   DEST_MASK specifies the mask of allowed image types.
+
+   If this fails, signal an error.  INSTANTIATOR is only used
+   in the error message. */
+
+static void
+init_image_instance_from_dibitmap (struct Lisp_Image_Instance *ii,
+				   BITMAPINFO *bmp_info,
+				   int dest_mask,
+				   void *bmp_data,
+				   int bmp_bits,
+				   Lisp_Object instantiator)
+{
+  Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+  struct device *d = XDEVICE (device);
+  struct frame *f = XFRAME (DEVICE_SELECTED_FRAME(d));
+  void* bmp_buf=0;
+  HBITMAP bitmap;
+  HDC hdc, cdc;
+
+  if (!DEVICE_MSWINDOWS_P (d))
+    signal_simple_error ("Not an mswindows device", device);
+
+  if (NILP (DEVICE_SELECTED_FRAME (d)))
+    signal_simple_error ("No selected frame on mswindows device", device);
+
+  if (!(dest_mask & IMAGE_COLOR_PIXMAP_MASK))
+    incompatible_image_types (instantiator, dest_mask,
+			      IMAGE_COLOR_PIXMAP_MASK);
+  hdc = FRAME_MSWINDOWS_DC (f);
+
+  bitmap=CreateDIBSection(hdc,  
+			  bmp_info,
+			  DIB_RGB_COLORS,
+			  &bmp_buf, 
+			  0,0);
+
+  if (!bitmap || !bmp_buf)
+    signal_simple_error ("Unable to create bitmap", instantiator);
+
+  /* copy in the actual bitmap */
+  memcpy(bmp_buf, bmp_data, bmp_bits);
+
+  /* create a memory dc */
+  cdc = CreateCompatibleDC(hdc);
+
+  mswindows_initialize_dibitmap_image_instance (ii, IMAGE_COLOR_PIXMAP);
+
+  IMAGE_INSTANCE_PIXMAP_FILENAME (ii) =
+    find_keyword_in_vector (instantiator, Q_file);
+
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = bitmap;
+  IMAGE_INSTANCE_MSWINDOWS_DC (ii) = cdc;
+  IMAGE_INSTANCE_PIXMAP_WIDTH (ii) = bmp_info->bmiHeader.biWidth;
+  IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) = bmp_info->bmiHeader.biHeight;
+  IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = bmp_info->bmiHeader.biBitCount;
+}
+
+/**********************************************************************
+ *                               XPM                                  *
+ **********************************************************************/
+
+#ifdef HAVE_XPM
+static int xpm_to_eimage(Lisp_Object image, CONST Extbyte *buffer,
+			 unsigned char** data,
+			 int* width, int* height,
+			 COLORREF bg)
+{
+  XpmImage xpmimage;
+  XpmInfo xpminfo;
+  int result, i;
+  unsigned char* dptr;
+  unsigned int* sptr;
+  COLORREF color; /* the american spelling virus hits again .. */
+  COLORREF* colortbl; 
+
+  memset (&xpmimage, 0, sizeof (xpmimage));
+  memset (&xpminfo, 0, sizeof (xpmimage));
+  
+  result = XpmCreateXpmImageFromBuffer((char*)buffer,
+				       &xpmimage,
+				       &xpminfo);
+  switch(result)
+    {
+    case XpmSuccess:
+      break;
+    case XpmFileInvalid:
+      {
+	signal_simple_error ("invalid XPM data", image);
+      }
+    case XpmNoMemory:
+      {
+	signal_double_file_error ("Parsing pixmap data",
+				  "out of memory", image);
+      }
+    default:
+      {
+	signal_double_file_error_2 ("Parsing pixmap data",
+				    "unknown error code",
+				    make_int (result), image);
+      }
+    }
+  
+  *width = xpmimage.width;
+  *height = xpmimage.height;
+
+  *data = xnew_array_and_zero (unsigned char, *width * *height * 3);
+  if (!*data)
+    {
+      XpmFreeXpmImage(&xpmimage);
+      XpmFreeXpmInfo(&xpminfo);
+      return 0;
+    }
+
+  /* build a color table to speed things up */
+  colortbl = xnew_array_and_zero (COLORREF, xpmimage.ncolors);
+  if (!colortbl)
+    {
+      xfree(*data);
+      XpmFreeXpmImage(&xpmimage);
+      XpmFreeXpmInfo(&xpminfo);
+      return 0;
+    }
+
+  for (i=0; i<xpmimage.ncolors; i++)
+    {
+				/* pick up transparencies */
+      if (!strcmp(xpmimage.colorTable[i].c_color,"None"))
+	{
+	  colortbl[i]=bg;
+	}
+      else
+	{
+	  colortbl[i]=
+	    mswindows_string_to_color(xpmimage.colorTable[i].c_color);
+	}
+    }
+
+  /* convert the image */
+  sptr=xpmimage.data;
+  dptr=*data;
+  for (i = 0; i< *width * *height; i++)
+    {
+      color = colortbl[*sptr++];
+
+      /* split out the 0x02bbggrr colorref into an rgb triple */
+      *dptr++=GetRValue(color); /* red */
+      *dptr++=GetGValue(color); /* green */
+      *dptr++=GetBValue(color); /* blue */
+    }
+
+  XpmFreeXpmImage(&xpmimage);
+  XpmFreeXpmInfo(&xpminfo);
+  xfree(colortbl);
+  return TRUE;
+}
+
+void
+mswindows_xpm_instantiate (Lisp_Object image_instance,
+			   Lisp_Object instantiator,
+			   Lisp_Object pointer_fg, Lisp_Object pointer_bg,
+			   int dest_mask, Lisp_Object domain)
+{
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+  CONST Extbyte		*bytes;
+  Extcount 		len;
+  unsigned char		*eimage;
+  int			width, height;
+  BITMAPINFO*		bmp_info;
+  unsigned char*	bmp_data;
+  int			bmp_bits;
+  COLORREF		bkcolor;
+  
+  Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
+
+  if (!DEVICE_MSWINDOWS_P (XDEVICE (device)))
+    signal_simple_error ("Not an mswindows device", device);
+
+  assert (!NILP (data));
+
+  GET_STRING_BINARY_DATA_ALLOCA (data, bytes, len);
+
+  /* this is a hack but MaskBlt and TransparentBlt are not supported
+     on most windows variants */
+  bkcolor = COLOR_INSTANCE_MSWINDOWS_COLOR 
+    (XCOLOR_INSTANCE (FACE_BACKGROUND(Vdefault_face, domain)));
+
+  /* convert to an eimage to make processing easier */
+  if (!xpm_to_eimage(image_instance, bytes, &eimage, &width, &height,
+		     bkcolor))
+    {
+      signal_simple_error ("XPM to EImage conversion failed", 
+			   image_instance);
+    }
+  
+  /* build a bitmap from the eimage */
+  if (!(bmp_info=EImage2DIBitmap(device, width, height, eimage,
+				 &bmp_bits, &bmp_data)))
+    {
+      signal_simple_error ("XPM to EImage conversion failed",
+			   image_instance);
+    }
+  xfree(eimage);
+
+  /* Now create the pixmap and set up the image instance */
+  init_image_instance_from_dibitmap (ii, bmp_info, dest_mask,
+				     bmp_data, bmp_bits, instantiator);
+
+  xfree(bmp_info);
+  xfree(bmp_data);
+}
+#endif /* HAVE_XPM */
+
+/**********************************************************************
+ *                               BMP                                  *
+ **********************************************************************/
+
+static void
+bmp_validate (Lisp_Object instantiator)
+{
+  file_or_data_must_be_present (instantiator);
+}
+
+static Lisp_Object
+bmp_normalize (Lisp_Object inst, Lisp_Object console_type)
+{
+  return simple_image_type_normalize (inst, console_type, Qbmp);
+}
+
+static int
+bmp_possible_dest_types (void)
+{
+  return IMAGE_COLOR_PIXMAP_MASK;
+}
+
+static void
+bmp_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
+		 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
+		 int dest_mask, Lisp_Object domain)
+{
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+  CONST Extbyte		*bytes;
+  Extcount 		len;
+  BITMAPFILEHEADER*	bmp_file_header;
+  BITMAPINFO*		bmp_info;
+  void*			bmp_data;
+  int			bmp_bits;
+  Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
+
+  if (!DEVICE_MSWINDOWS_P (XDEVICE (device)))
+    signal_simple_error ("Not an mswindows device", device);
+
+  assert (!NILP (data));
+
+  GET_STRING_BINARY_DATA_ALLOCA (data, bytes, len);
+  
+  /* Then slurp the image into memory, decoding along the way.
+     The result is the image in a simple one-byte-per-pixel
+     format. */
+  
+  bmp_file_header=(BITMAPFILEHEADER*)bytes;
+  bmp_info = (BITMAPINFO*)(bytes + sizeof(BITMAPFILEHEADER));
+  bmp_data = (Extbyte*)bytes + bmp_file_header->bfOffBits;
+  bmp_bits = bmp_file_header->bfSize - bmp_file_header->bfOffBits;
+
+  /* Now create the pixmap and set up the image instance */
+  init_image_instance_from_dibitmap (ii, bmp_info, dest_mask,
+				     bmp_data, bmp_bits, instantiator);
+}
+
+
+/************************************************************************/
+/*                      image instance methods                          */
+/************************************************************************/
+
+static void
+mswindows_print_image_instance (struct Lisp_Image_Instance *p,
+				Lisp_Object printcharfun,
+				int escapeflag)
+{
+  char buf[100];
+
+  switch (IMAGE_INSTANCE_TYPE (p))
+    {
+    case IMAGE_MONO_PIXMAP:
+    case IMAGE_COLOR_PIXMAP:
+    case IMAGE_POINTER:
+      sprintf (buf, " (0x%lx", 
+	       (unsigned long) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p));
+      write_c_string (buf, printcharfun);
+      if (IMAGE_INSTANCE_MSWINDOWS_MASK (p))
+	{
+	  sprintf (buf, "/0x%lx", 
+		   (unsigned long) IMAGE_INSTANCE_MSWINDOWS_MASK (p));
+	  write_c_string (buf, printcharfun);
+	}
+      write_c_string (")", printcharfun);
+      break;
+    default:
+      break;
+    }
+}
+
+static void
+mswindows_finalize_image_instance (struct Lisp_Image_Instance *p)
+{
+  if (!p->data)
+    return;
+
+  if (DEVICE_LIVE_P (XDEVICE (p->device)))
+    {
+      if (IMAGE_INSTANCE_MSWINDOWS_DC (p))
+	DeleteDC(IMAGE_INSTANCE_MSWINDOWS_DC (p));
+      if (IMAGE_INSTANCE_MSWINDOWS_BITMAP (p))
+	DeleteObject(IMAGE_INSTANCE_MSWINDOWS_BITMAP (p));
+      IMAGE_INSTANCE_MSWINDOWS_BITMAP (p) = 0;
+      IMAGE_INSTANCE_MSWINDOWS_DC (p) = 0;
+    }
+
+  xfree (p->data);
+  p->data = 0;
+}
+
+static int
+mswindows_image_instance_equal (struct Lisp_Image_Instance *p1,
+				struct Lisp_Image_Instance *p2, int depth)
+{
+  switch (IMAGE_INSTANCE_TYPE (p1))
+    {
+    case IMAGE_MONO_PIXMAP:
+    case IMAGE_COLOR_PIXMAP:
+    case IMAGE_POINTER:
+      if (IMAGE_INSTANCE_MSWINDOWS_BITMAP (p1) 
+	  != IMAGE_INSTANCE_MSWINDOWS_BITMAP (p2))
+	return 0;
+      break;
+    default:
+      break;
+    }
+
+  return 1;
+}
+
+static unsigned long
+mswindows_image_instance_hash (struct Lisp_Image_Instance *p, int depth)
+{
+  switch (IMAGE_INSTANCE_TYPE (p))
+    {
+    case IMAGE_MONO_PIXMAP:
+    case IMAGE_COLOR_PIXMAP:
+    case IMAGE_POINTER:
+      return (unsigned long) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p);
+    default:
+      return 0;
+    }
+}
+
+/* Set all the slots in an image instance structure to reasonable
+   default values.  This is used somewhere within an instantiate
+   method.  It is assumed that the device slot within the image
+   instance is already set -- this is the case when instantiate
+   methods are called. */
+
+static void
+mswindows_initialize_dibitmap_image_instance (struct Lisp_Image_Instance *ii,
+					    enum image_instance_type type)
+{
+  ii->data = xnew_and_zero (struct mswindows_image_instance_data);
+  IMAGE_INSTANCE_TYPE (ii) = type;
+  IMAGE_INSTANCE_PIXMAP_FILENAME (ii) = Qnil;
+  IMAGE_INSTANCE_PIXMAP_MASK_FILENAME (ii) = Qnil;
+  IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) = Qnil;
+  IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) = Qnil;
+  IMAGE_INSTANCE_PIXMAP_FG (ii) = Qnil;
+  IMAGE_INSTANCE_PIXMAP_BG (ii) = Qnil;
+}
+
+
+/************************************************************************/
+/*                            initialization                            */
+/************************************************************************/
+
+void
+syms_of_glyphs_mswindows (void)
+{
+}
+
+void
+console_type_create_glyphs_mswindows (void)
+{
+  /* image methods */
+
+  CONSOLE_HAS_METHOD (mswindows, print_image_instance);
+  CONSOLE_HAS_METHOD (mswindows, finalize_image_instance);
+  CONSOLE_HAS_METHOD (mswindows, image_instance_equal);
+  CONSOLE_HAS_METHOD (mswindows, image_instance_hash);
+}
+
+void
+image_instantiator_format_create_glyphs_mswindows (void)
+{
+  /* image-instantiator types */
+
+  INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (bmp, "bmp");
+
+  IIFORMAT_HAS_METHOD (bmp, validate);
+  IIFORMAT_HAS_METHOD (bmp, normalize);
+  IIFORMAT_HAS_METHOD (bmp, possible_dest_types);
+  IIFORMAT_HAS_METHOD (bmp, instantiate);
+
+  IIFORMAT_VALID_KEYWORD (bmp, Q_data, check_valid_string);
+  IIFORMAT_VALID_KEYWORD (bmp, Q_file, check_valid_string);
+}
+
+void
+vars_of_glyphs_mswindows (void)
+{
+  Fprovide (Qbmp);
+  DEFVAR_LISP ("mswindows-bitmap-file-path", &Vmswindows_bitmap_file_path /*
+A list of the directories in which mswindows bitmap files may be found.
+This is used by the `make-image-instance' function.
+*/ );
+  Vmswindows_bitmap_file_path = Qnil;
+}
+
+void
+complex_vars_of_glyphs_mswindows (void)
+{
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/glyphs-msw.h	Mon Aug 13 10:26:29 2007 +0200
@@ -0,0 +1,61 @@
+/* mswindows-specific glyphs and related.
+   Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1995 Board of Trustees, University of Illinois.
+   Copyright (C) 1995, 1996 Ben Wing
+   Copyright (C) 1995 Sun Microsystems, Inc.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with:  Not in FSF. */
+
+#ifndef _XEMACS_GLYPHS_MSW_H_
+#define _XEMACS_GLYPHS_MSW_H_
+
+#ifdef HAVE_MS_WINDOWS
+
+#include <windows.h>
+#include "glyphs.h"
+
+/****************************************************************************
+ *                         Image-Instance Object                            *
+ ****************************************************************************/
+
+struct mswindows_image_instance_data
+{
+  HBITMAP bitmap;
+  HDC	dc;
+};
+
+#define MSWINDOWS_IMAGE_INSTANCE_DATA(i) \
+((struct mswindows_image_instance_data *) (i)->data)
+
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP(i) \
+(MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmap)
+#define IMAGE_INSTANCE_MSWINDOWS_DC(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->dc)
+#define IMAGE_INSTANCE_MSWINDOWS_MASK(i) 0
+
+#define XIMAGE_INSTANCE_MSWINDOWS_BITMAP(i) \
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_MSWINDOWS_DC(i) \
+  IMAGE_INSTANCE_MSWINDOWS_DC (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_MSWINDOWS_MASK(i) \
+  IMAGE_INSTANCE_MSWINDOWS_MASK (XIMAGE_INSTANCE (i))
+
+#endif /* HAVE_MS_WINDOWS */
+#endif /* _XEMACS_GLYPHS_MSW_H_ */
--- a/src/glyphs-x.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/glyphs-x.c	Mon Aug 13 10:26:29 2007 +0200
@@ -98,6 +98,10 @@
 DEFINE_IMAGE_INSTANTIATOR_FORMAT (xpm);
 Lisp_Object Qxpm;
 Lisp_Object Q_color_symbols;
+void mswindows_xpm_instantiate (Lisp_Object image_instance, 
+				Lisp_Object instantiator,
+				Lisp_Object pointer_fg, Lisp_Object pointer_bg,
+				int dest_mask, Lisp_Object domain);
 #endif
 
 #ifdef HAVE_XFACE
@@ -1618,6 +1622,12 @@
   enum image_instance_type type;
   int force_mono;
   unsigned int w, h;
+#ifdef HAVE_MS_WINDOWS
+  if (DEVICE_MSWINDOWS_P (XDEVICE (device)))
+    return mswindows_xpm_instantiate(image_instance, instantiator, 
+				     pointer_fg, pointer_bg, 
+				     dest_mask, domain);
+#endif
 
   if (!DEVICE_X_P (XDEVICE (device)))
     signal_simple_error ("Not an X device", device);
@@ -2154,6 +2164,20 @@
   longjmp (myerr->setjmp_buffer, 1);
 }
 
+#if defined(JPEG_LIB_VERSION) && (JPEG_LIB_VERSION >= 61)
+METHODDEF(void)
+#else
+METHODDEF void
+#endif
+my_jpeg_output_message (j_common_ptr cinfo)
+{
+  char buffer[JMSG_LENGTH_MAX];
+
+  /* Create the message */
+  (*cinfo->err->format_message) (cinfo, buffer);
+  warn_when_safe (Qjpeg, Qinfo, "%s", buffer);
+}
+
 /* The code in this routine is based on example.c from the JPEG library
    source code and from gif_instantiate() */
 static void
@@ -2226,6 +2250,7 @@
   /* We set up the normal JPEG error routines, then override error_exit. */
   cinfo.err = jpeg_std_error (&jerr.pub);
   jerr.pub.error_exit = my_jpeg_error_exit;
+  jerr.pub.output_message = my_jpeg_output_message;
 
   /* Establish the setjmp return context for my_error_exit to use. */
   if (setjmp (jerr.setjmp_buffer))
@@ -2258,7 +2283,7 @@
 #else
   {
     Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
-    Extbyte *bytes;
+    CONST Extbyte *bytes;
     Extcount len;
 
     /* #### This is a definite problem under Mule due to the amount of
@@ -3587,11 +3612,11 @@
   
   /* set up error facilities */
   if (setjmp(tiff_err_data.setjmp_buffer)) {
-    /* An error was signaled. No clean up is needed, as unwind handles that
-       for us.  Just pass the error along. */
-    Lisp_Object errstring;
-    errstring = build_string (tiff_err_data.err_str);
-    signal_simple_error_2 ("TIFF decoding error", errstring, instantiator);
+  /* An error was signaled. No clean up is needed, as unwind handles that
+     for us.  Just pass the error along. */
+    signal_simple_error_2 ("TIFF decoding error",
+			   build_string(tiff_err_data.err_str),
+			   instantiator);
   }
   TIFFSetErrorHandler((TIFFErrorHandler)tiff_error_func);
   TIFFSetWarningHandler((TIFFErrorHandler)tiff_warning_func);
--- a/src/hash.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/hash.c	Mon Aug 13 10:26:29 2007 +0200
@@ -272,7 +272,9 @@
      been set and is thus all zeroes.  Qzero is "automatically"
      initialized at startup because its correct value is also all
      zeroes. */
-  if (!NILP (hash->elisp_table) && !ZEROP (hash->elisp_table))
+  if (!EQ (hash->elisp_table, Qnull_pointer) &&
+      !NILP (hash->elisp_table) &&
+      !ZEROP (hash->elisp_table))
     new_harray = (hentry *) elisp_hvector_malloc (sizeof (hentry) * new_hsize,
 						  hash->elisp_table);
   else
@@ -293,7 +295,9 @@
   }
 
 #ifdef emacs
-  if (!NILP (hash->elisp_table) && !ZEROP (hash->elisp_table))
+  if (!EQ (hash->elisp_table, Qnull_pointer) &&
+      !NILP (hash->elisp_table) &&
+      !ZEROP (hash->elisp_table))
     elisp_hvector_free (old_harray, hash->elisp_table);
   else
 #endif
--- a/src/imgproc.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/imgproc.c	Mon Aug 13 10:26:29 2007 +0200
@@ -40,7 +40,7 @@
    Color Image Quantization for Frame Buffer Display, Paul Heckbert,
    Siggraph '82 proceedings, pp. 297-307 */
 
-#include "config.h"
+#include <config.h>
 #include "lisp.h"
 #include "imgproc.h"
 
--- a/src/input-method-xlib.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/input-method-xlib.c	Mon Aug 13 10:26:29 2007 +0200
@@ -538,7 +538,9 @@
 
   if (p->count_styles == 0)
     {   /* No valid styles? */
-      char buf[1024];
+      char *buf = (char *)alloca (strlen (fromVal->addr)
+				  + strlen (DefaultXIMStyles)
+				  + 100);
       XrmValue new_from;
       XtAppContext the_app_con = XtDisplayToApplicationContext (dpy);
 
@@ -703,7 +705,7 @@
 void
 describe_Window (Window win)
 {
-  char xwincmd[64];
+  char xwincmd[128];
   sprintf (xwincmd, "xwininfo -id 0x%x >&2; xwininfo -events -id 0x%x >&2",
            (int) win, (int) win);
   system (xwincmd);
--- a/src/insdel.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/insdel.c	Mon Aug 13 10:26:29 2007 +0200
@@ -316,9 +316,9 @@
 #  define HIGH_BIT_MASK 0x80808080U
 # else
 #  define LONG_BYTES 8
-#  define ALIGN_MASK 0xFFFFFFFFFFFFFFF8U
+#  define ALIGN_MASK 0xFFFFFFFFFFFFFFF8UL
    /* I had a dream, I was being overrun with early Intel processors ... */
-#  define HIGH_BIT_MASK 0x8080808080808080U
+#  define HIGH_BIT_MASK 0x8080808080808080UL
 # endif
 
   /* When we have a large number of bytes to scan, we can be trickier
@@ -2331,12 +2331,14 @@
       else
 	*len = XSTRING_LENGTH (reloc) - offset;
     }
+#ifdef ERROR_CHECK_BUFPOS
   assert (*len >= 0);
   if (STRINGP (reloc))
     {
       assert (offset >= 0 && offset <= XSTRING_LENGTH (reloc));
       assert (offset + *len <= XSTRING_LENGTH (reloc));
     }
+#endif
 }
 
 /* Insert a string into BUF at Bufpos POS.  The string data comes
--- a/src/keymap.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 10:26:29 2007 +0200
@@ -287,6 +287,7 @@
   write_c_string ("#<keymap ", printcharfun);
   if (!NILP (keymap->name))
     print_internal (keymap->name, printcharfun, 1);
+  /* #### Yuck!  This is no way to form plural!  --hniksic */
   sprintf (buf, "%s%d entr%s 0x%x>",
            ((NILP (keymap->name)) ? "" : " "),
            size,
@@ -1719,7 +1720,6 @@
                                  Lisp_Object keymap)
 {
   /* This function can GC */
-  char buf [255];
   Lisp_Object new_keys;
   int i;
   Lisp_Object mpc_binding;
@@ -1746,18 +1746,20 @@
     }
   else
     abort ();
+
   if (EQ (keys, new_keys))
-    sprintf (buf, GETTEXT ("can't bind %s: %s has a non-keymap binding"),
-	     (char *) XSTRING_DATA (Fkey_description (keys)),
-	     (char *) XSTRING_DATA (Fsingle_key_description
-				    (Vmeta_prefix_char)));
+    error_with_frob (mpc_binding,
+		     "can't bind %s: %s has a non-keymap binding",
+		     (char *) XSTRING_DATA (Fkey_description (keys)),
+		     (char *) XSTRING_DATA (Fsingle_key_description
+					    (Vmeta_prefix_char)));
   else
-    sprintf (buf, GETTEXT ("can't bind %s: %s %s has a non-keymap binding"),
-	     (char *) XSTRING_DATA (Fkey_description (keys)),
-	     (char *) XSTRING_DATA (Fkey_description (new_keys)),
-	     (char *) XSTRING_DATA (Fsingle_key_description
-				    (Vmeta_prefix_char)));
-  signal_simple_error (buf, mpc_binding);
+    error_with_frob (mpc_binding,
+		     "can't bind %s: %s %s has a non-keymap binding",
+		     (char *) XSTRING_DATA (Fkey_description (keys)),
+		     (char *) XSTRING_DATA (Fkey_description (new_keys)),
+		     (char *) XSTRING_DATA (Fsingle_key_description
+					    (Vmeta_prefix_char)));
 }
 
 DEFUN ("define-key", Fdefine_key, 3, 3, 0, /*
--- a/src/lisp.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/lisp.h	Mon Aug 13 10:26:29 2007 +0200
@@ -1105,6 +1105,7 @@
   struct Lisp_String *name;
   Lisp_Object value;
   Lisp_Object function;
+  /* non-nil if the symbol is interned in Vobarray */
   Lisp_Object obarray;
   Lisp_Object plist;
 };
--- a/src/lread.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/lread.c	Mon Aug 13 10:26:29 2007 +0200
@@ -1297,7 +1297,10 @@
   else if (MARKERP (readcharfun))
     b = XMARKER (readcharfun)->buffer;
 
-  specbind (Qstandard_input, readcharfun);
+  /* Don't do this.  It is not necessary, and it needlessly exposes
+     READCHARFUN (which can be a stream) to Lisp.  --hniksic */
+  /*specbind (Qstandard_input, readcharfun);*/
+
   specbind (Qcurrent_load_list, Qnil);
 
 #ifdef COMPILED_FUNCTION_ANNOTATION_HACK
@@ -1580,6 +1583,10 @@
 {
   /* This function can GC */
   Emchar c = readchar (readcharfun);
+
+  if (c < 0)
+    signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
+
   switch (c)
     {
     case 'a': return '\007';
@@ -1595,9 +1602,13 @@
 
     case 'M':
       c = readchar (readcharfun);
+      if (c < 0)
+	signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
       if (c != '-')
 	error ("Invalid escape character syntax");
       c = readchar (readcharfun);
+      if (c < 0)
+	signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
       if (c == '\\')
 	c = read_escape (readcharfun);
       return c | 0200;
@@ -1615,11 +1626,14 @@
    #define ctl_modifier   (0x400000)
    #define meta_modifier  (0x800000)
 */
-#define FSF_LOSSAGE(mask)						\
-      if (puke_on_fsf_keys || ((c = readchar (readcharfun)) != '-'))	\
-	error ("Invalid escape character syntax");			\
-      if ((c =  readchar (readcharfun)) == '\\')			\
-	c = read_escape (readcharfun);					\
+#define FSF_LOSSAGE(mask)							\
+      if (puke_on_fsf_keys || ((c = readchar (readcharfun)) != '-'))		\
+	error ("Invalid escape character syntax");				\
+      c = readchar (readcharfun);						\
+      if (c < 0)								\
+	signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));	\
+      if (c == '\\')								\
+	c = read_escape (readcharfun);						\
       return c | mask
 
     case 'S': FSF_LOSSAGE (shift_modifier);
@@ -1636,10 +1650,14 @@
 
     case 'C':
       c = readchar (readcharfun);
+      if (c < 0)
+	signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
       if (c != '-')
 	error ("Invalid escape character syntax");
     case '^':
       c = readchar (readcharfun);
+      if (c < 0)
+	signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
       if (c == '\\')
 	c = read_escape (readcharfun);
       /* FSFmacs junk for non-ASCII controls.
@@ -1730,6 +1748,8 @@
       if (c == '\\')
 	{
 	  c = readchar (readcharfun);
+	  if (c < 0)
+	    signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun)));
 	  *saw_a_backslash = 1;
 	}
       Lstream_put_emchar (XLSTREAM (Vread_buffer_stream), c);
@@ -1822,13 +1842,15 @@
 	/* intern will purecopy pname if necessary */
 	Lisp_Object name = make_string ((Bufbyte *) read_ptr, len);
 	sym = Fintern (name, Qnil);
-      }
-    if (SYMBOL_IS_KEYWORD (sym))
-      {
-	/* the LISP way is to put keywords in their own package, but we don't
-	   have packages, so we do something simpler.  Someday, maybe we'll
-	   have packages and then this will be reworked.  --Stig. */
-	XSYMBOL (sym)->value = sym;
+
+	if (SYMBOL_IS_KEYWORD (sym))
+	  {
+	    /* the LISP way is to put keywords in their own package,
+	       but we don't have packages, so we do something simpler.
+	       Someday, maybe we'll have packages and then this will
+	       be reworked.  --Stig. */
+	    XSYMBOL (sym)->value = sym;
+	  }
       }
     return sym;
   }
@@ -2259,7 +2281,7 @@
             /* purecons #[...] syntax */
 	  case '[': return read_compiled_function (readcharfun, ']'
 						   /*, purify_flag */ );
-            /* "#:"-- quasi-implemented gensym syntax */
+            /* "#:"-- gensym syntax */
 	  case ':': return read_atom (readcharfun, -1, 1);
             /* #'x => (function x) */
 	  case '\'': return list2 (Qfunction, read0 (readcharfun));
@@ -2972,57 +2994,17 @@
 void
 init_lread (void)
 {
-#ifdef PATH_LOADSEARCH
-  CONST char *normal = PATH_LOADSEARCH;
-
-/* Don't print this warning.  If the hardcoded paths don't exist, then
-   startup.el will try and deduce one.  If it fails, it knows how to
-   handle things. */
-#if 0
-#ifndef WINDOWSNT
-  /* When Emacs is invoked over network shares on NT, PATH_LOADSEARCH is
-     almost never correct, thereby causing a warning to be printed out that
-     confuses users.  Since PATH_LOADSEARCH is always overriden by the
-     EMACSLOADPATH environment variable below, disable the warning on NT.  */
-
-  /* Warn if dirs in the *standard* path don't exist.  */
-  if (!turn_off_warning)
-    {
-      Lisp_Object normal_path = decode_env_path (0, normal);
-      for (; !NILP (normal_path); normal_path = XCDR (normal_path))
-	{
-	  Lisp_Object dirfile;
-	  dirfile = Fcar (normal_path);
-	  if (!NILP (dirfile))
-	    {
-	      dirfile = Fdirectory_file_name (dirfile);
-	      if (access ((char *) XSTRING_DATA (dirfile), 0) < 0)
-		stdout_out ("Warning: lisp library (%s) does not exist.\n",
-			    XSTRING_DATA (Fcar (normal_path)));
-	    }
-	}
-    }
-#endif /* WINDOWSNT */
-#endif /* 0 */
-#else /* !PATH_LOADSEARCH */
-  CONST char *normal = 0;
-#endif /* !PATH_LOADSEARCH */
   Vvalues = Qnil;
 
-  /* further frobbed by startup.el if nil. */
-  Vload_path = decode_env_path ("EMACSLOADPATH", normal);
-
-/*  Vdump_load_path = Qnil; */
-  if (purify_flag && NILP (Vload_path))
-    {
-      /* loadup.el will frob this some more. */
-      /* #### unix-specific */
-      Vload_path = Fcons (build_string ("../lisp/"), Vload_path);
-    }
   load_in_progress = 0;
-
+  
   Vload_descriptor_list = Qnil;
 
+  /* kludge: locate-file does not work for a null load-path, even if
+     the file name is absolute. */
+
+  Vload_path = Fcons (build_string (""), Qnil);
+
   /* This used to get initialized in init_lread because all streams
      got closed when dumping occurs.  This is no longer true --
      Vread_buffer_stream is a resizing output stream, and there is no
@@ -3100,6 +3082,7 @@
 value for this variable by looking around in the file-system near the
 directory in which the XEmacs executable resides.
 */ );
+  Vload_path = Qnil;
 
 /*  xxxDEFVAR_LISP ("dump-load-path", &Vdump_load_path,
     "*Location of lisp files to be used when dumping ONLY."); */
--- a/src/m/powerpc.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/m/powerpc.h	Mon Aug 13 10:26:29 2007 +0200
@@ -160,5 +160,5 @@
 #undef NEED_PTEM_H
 
 #define ORDINARY_LINK
-#define LD_SWITCH_MACHINE -T ppc.ldscript
+#define LD_SWITCH_MACHINE -T ${srcdir}/src/ppc.ldscript
 #endif
--- a/src/minibuf.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/minibuf.c	Mon Aug 13 10:26:29 2007 +0200
@@ -214,8 +214,8 @@
     {
       while (l)
         {
-          Bufbyte c1 = DOWNCASE (current_buffer, charptr_emchar (s1));
-          Bufbyte c2 = DOWNCASE (current_buffer, charptr_emchar (s2));
+          Emchar c1 = DOWNCASE (current_buffer, charptr_emchar (s1));
+          Emchar c2 = DOWNCASE (current_buffer, charptr_emchar (s2));
 
           if (c1 == c2)
             {
@@ -289,7 +289,16 @@
 }
 
 
+/* #### Maybe we should allow ALIST to be a hashtable.  It is wrong
+   for the use of obarrays to be better-rewarded than the use of
+   hashtables.  By better-rewarded I mean that you can pass an obarray
+   to all of the completion functions, whereas you can't do anything
+   like that with a hashtable.
 
+   To do so, there should probably be a
+   map_obarray_or_alist_or_hashtable function which would be used by
+   both Ftry_completion and Fall_completions.  But would the
+   additional funcalls slow things down?  */
 
 DEFUN ("try-completion", Ftry_completion, 2, 3, 0, /*
 Return common substring of all completions of STRING in ALIST.
@@ -326,13 +335,13 @@
   CHECK_STRING (string);
 
   if (CONSP (alist))
-  {
-    Lisp_Object tem = XCAR (alist);
-    if (SYMBOLP (tem))          /* lambda, autoload, etc.  Emacs-lisp sucks */
-      return call3 (alist, string, pred, Qnil);
-    else
-      list = 1;
-  }
+    {
+      Lisp_Object tem = XCAR (alist);
+      if (SYMBOLP (tem))	/* lambda, autoload, etc.  Emacs-lisp sucks */
+	return call3 (alist, string, pred, Qnil);
+      else
+	list = 1;
+    }
   else if (VECTORP (alist))
     list = 0;
   else if (NILP (alist))
@@ -379,10 +388,11 @@
 	  if (!ZEROP (bucket))
 	    {
               struct Lisp_Symbol *next;
-	      if (!SYMBOLP (bucket)) {
-		signal_simple_error("Bad obarry passed to try-completions",
-				    bucket);
-	      }
+	      if (!SYMBOLP (bucket))
+		{
+		  signal_simple_error ("Bad obarray passed to try-completions",
+				       bucket);
+		}
 	      next = symbol_next (XSYMBOL (bucket));
 	      elt = bucket;
 	      eltstring = Fsymbol_name (elt);
@@ -529,13 +539,13 @@
   CHECK_STRING (string);
 
   if (CONSP (alist))
-  {
-    Lisp_Object tem = XCAR (alist);
-    if (SYMBOLP (tem))          /* lambda, autoload, etc.  Emacs-lisp sucks */
-      return call3 (alist, string, pred, Qt);
-    else
-      list = 1;
-  }
+    {
+      Lisp_Object tem = XCAR (alist);
+      if (SYMBOLP (tem))	/* lambda, autoload, etc.  Emacs-lisp sucks */
+	return call3 (alist, string, pred, Qt);
+      else
+	list = 1;
+    }
   else if (VECTORP (alist))
     list = 0;
   else if (NILP (alist))
--- a/src/objects-msw.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/objects-msw.c	Mon Aug 13 10:26:29 2007 +0200
@@ -732,7 +732,7 @@
     return c-'0';
 }
 
-static COLORREF
+COLORREF
 mswindows_string_to_color(CONST char *name)
 {
   int i;
--- a/src/opaque.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/opaque.c	Mon Aug 13 10:26:29 2007 +0200
@@ -91,11 +91,11 @@
 {
   char buf[200];
   if (INTP (XOPAQUE (obj)->size_or_chain))
-    sprintf (buf, "#<INTERNAL EMACS BUG (opaque, size=%ld) 0x%p>",
-	     (long) XOPAQUE_SIZE (obj), (void *) XPNTR (obj));
+    sprintf (buf, "#<INTERNAL EMACS BUG (opaque, size=%ld) 0x%lx>",
+	     (long) XOPAQUE_SIZE (obj), (unsigned long) XPNTR (obj));
   else
-    sprintf (buf, "#<INTERNAL EMACS BUG (opaque, freed) 0x%p>",
-	     (void *) XPNTR (obj));
+    sprintf (buf, "#<INTERNAL EMACS BUG (opaque, freed) 0x%lx>",
+	     (unsigned long) XPNTR (obj));
   write_c_string (buf, printcharfun);
 }
 
--- a/src/paths.h.in	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/paths.h.in	Mon Aug 13 10:26:29 2007 +0200
@@ -29,6 +29,10 @@
 
    PATH_LOADSEARCH	The default value of `load-path'.
 
+   PATH_PACKAGEPATH     The default value of `package-path'.
+
+   PATH_SITE            The default location of site-specific Lisp files.
+
    PATH_EXEC		The default value of `exec-directory' and `exec-path'.
 			(exec-path also contains the value of whatever is in
 			the PATH environment variable.)
@@ -42,9 +46,6 @@
 			Emacs.  This directory should be writable by everyone.
 			If this is specified, the string must end with a slash!
 
-   PATH_SUPERLOCK	The name of the file !!!SuperLock!!! in the lock 
-			directory.  You probably should let this default...
-
    PATH_INFO		This is where the info documentation is installed.
 
    PATH_INFOPATH	The default value of `Info-directory-list'.
--- a/src/process.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/process.c	Mon Aug 13 10:26:29 2007 +0200
@@ -1750,11 +1750,15 @@
 
   if (!MAYBE_INT_PROCMETH (process_send_eof, (proc)))
     {
-      event_stream_delete_stream_pair (Qnil, XPROCESS (proc)->pipe_outstream);
-      XPROCESS (proc)->pipe_outstream = Qnil;
+      if (!NILP (DATA_OUTSTREAM (XPROCESS (proc))))
+	{
+	  Lstream_close (XLSTREAM (DATA_OUTSTREAM (XPROCESS (proc))));
+	  event_stream_delete_stream_pair (Qnil, XPROCESS (proc)->pipe_outstream);
+	  XPROCESS (proc)->pipe_outstream = Qnil;
 #ifdef FILE_CODING
-      XPROCESS (proc)->coding_outstream = Qnil;
+	  XPROCESS (proc)->coding_outstream = Qnil;
 #endif
+	}
     }
 
   return process;
@@ -1781,6 +1785,11 @@
   /* Must call this before setting the streams to nil */
   event_stream_unselect_process (p);
 
+  if (!NILP (DATA_OUTSTREAM (p)))
+    Lstream_close (XLSTREAM (DATA_OUTSTREAM (p)));
+  if (!NILP (DATA_INSTREAM (p)))
+    Lstream_close (XLSTREAM (DATA_INSTREAM (p)));
+
   /* Provide minimal implementation for deactivate_process
      if there's no process-specific one */
   if (HAS_PROCMETH_P (deactivate_process))
--- a/src/redisplay-msw.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/redisplay-msw.c	Mon Aug 13 10:26:29 2007 +0200
@@ -40,7 +40,7 @@
 #include "events.h"
 #include "faces.h"
 #include "frame.h"
-#include "glyphs.h"	/* XXX FIXME: Should be glyphs-mswindows when we make one */
+#include "glyphs-msw.h"
 #include "redisplay.h"
 #include "sysdep.h"
 #include "window.h"
@@ -72,8 +72,6 @@
 static void mswindows_redraw_exposed_windows (Lisp_Object window, int x,
 					int y, int width, int height);
 
-
-
 typedef struct textual_run
 {
   Lisp_Object charset;
@@ -228,7 +226,7 @@
       debug_print (fg); 
 #endif
       fg = Qnil;
-      }
+    }
 
   if (!NILP (bg) && !COLOR_INSTANCEP (bg))
     {
@@ -238,7 +236,7 @@
       debug_print (bg); 
 #endif
       bg = Qnil;
-      }
+    }
 #endif
 
   if (!NILP (fg))
@@ -490,6 +488,203 @@
     }
 }
 
+void
+mswindows_output_dibitmap (struct frame *f, struct Lisp_Image_Instance *p,
+			   int x, int y, 
+			   int clip_x, int clip_y, 
+			   int clip_width, int clip_height, 
+			   int width, int height, int pixmap_offset)
+{
+  HDC hdc = FRAME_MSWINDOWS_DC (f);
+  HGDIOBJ old;
+  int need_clipping = (clip_x || clip_y);
+
+  if (need_clipping)
+    {
+#if 0
+      XRectangle clip_box[1];
+      
+      clip_box[0].x = clip_x;
+      clip_box[0].y = clip_y;
+      clip_box[0].width = clip_width;
+      clip_box[0].height = clip_height;
+      
+      XSetClipRectangles (dpy, gc, x, y, clip_box, 1, Unsorted);
+#endif
+    }
+
+  /* Select the bitmaps into the compatible DC. */
+  if ((old=SelectObject(IMAGE_INSTANCE_MSWINDOWS_DC(p),
+			IMAGE_INSTANCE_MSWINDOWS_BITMAP(p))))
+    {
+      BitBlt(hdc, 
+	     x,y,
+	     width, height, 
+	     IMAGE_INSTANCE_MSWINDOWS_DC(p),
+	     0,0, 
+	     SRCCOPY);                  
+      SelectObject(IMAGE_INSTANCE_MSWINDOWS_DC(p),old);
+    }
+  else
+    {
+      /* error */
+    }
+
+#if 0
+  if (need_clipping)
+    {
+      XSetClipMask (dpy, gc, None);
+      XSetClipOrigin (dpy, gc, 0, 0);
+    }
+#endif
+}
+
+static void
+mswindows_output_pixmap (struct window *w, struct display_line *dl,
+			 Lisp_Object image_instance, int xpos, int xoffset,
+			 int start_pixpos, int width, face_index findex,
+			 int cursor_start, int cursor_width, int cursor_height)
+{
+  struct frame *f = XFRAME (w->frame);
+  struct device *d = XDEVICE (f->device);
+  HDC hdc = FRAME_MSWINDOWS_DC (f);
+  struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object window;
+
+  int lheight = dl->ascent + dl->descent - dl->clip;
+  int pheight = ((int) IMAGE_INSTANCE_PIXMAP_HEIGHT (p) > lheight ? lheight :
+		 IMAGE_INSTANCE_PIXMAP_HEIGHT (p));
+  int pwidth = min (width + xoffset, (int) IMAGE_INSTANCE_PIXMAP_WIDTH (p));
+  int clip_x, clip_y, clip_width, clip_height;
+
+  /* The pixmap_offset is used to center the pixmap on lines which are
+     shorter than it is.  This results in odd effects when scrolling
+     pixmaps off of the bottom.  Let's try not using it. */
+#if 0
+  int pixmap_offset = (int) (IMAGE_INSTANCE_PIXMAP_HEIGHT (p) - lheight) / 2;
+#else
+  int pixmap_offset = 0;
+#endif
+
+  XSETWINDOW (window, w);
+
+  if ((start_pixpos >= 0 && start_pixpos > xpos) || xoffset)
+    {
+      if (start_pixpos > xpos && start_pixpos > xpos + width)
+	return;
+
+      clip_x = xoffset;
+      clip_width = width;
+      if (start_pixpos > xpos)
+	{
+	  clip_x += (start_pixpos - xpos);
+	  clip_width -= (start_pixpos - xpos);
+	}
+    }
+  else
+    {
+      clip_x = 0;
+      clip_width = 0;
+    }
+
+  /* Place markers for possible future functionality (clipping the top
+     half instead of the bottom half; think pixel scrolling). */
+  clip_y = 0;
+  clip_height = pheight;
+
+  /* Clear the area the pixmap is going into.  The pixmap itself will
+     always take care of the full width.  We don't want to clear where
+     it is going to go in order to avoid flicker.  So, all we have to
+     take care of is any area above or below the pixmap. */
+  /* #### We take a shortcut for now.  We know that since we have
+     pixmap_offset hardwired to 0 that the pixmap is against the top
+     edge so all we have to worry about is below it. */
+  /* #### Unless the pixmap has a mask in which case we have to clear
+     the whole damn thing since we can't yet clear just the area not
+     included in the mask. */
+  if (((int) (dl->ypos - dl->ascent + pheight) <
+       (int) (dl->ypos + dl->descent - dl->clip))
+      || IMAGE_INSTANCE_MSWINDOWS_MASK (p))
+    {
+      int clear_x, clear_y, clear_width, clear_height;
+
+      if (IMAGE_INSTANCE_MSWINDOWS_MASK (p))
+	{
+	  clear_y = dl->ypos - dl->ascent;
+	  clear_height = lheight;
+	}
+      else
+	{
+	  clear_y = dl->ypos - dl->ascent + pheight;
+	  clear_height = lheight - pheight;
+	}
+
+      if (start_pixpos >= 0 && start_pixpos > xpos)
+	{
+	  clear_x = start_pixpos;
+	  clear_width = xpos + width - start_pixpos;
+	}
+      else
+	{
+	  clear_x = xpos;
+	  clear_width = width;
+	}
+
+      mswindows_clear_region (window, findex, clear_x, clear_y,
+			      clear_width, clear_height);
+    }
+
+  /* Output the pixmap. */
+  {
+    Lisp_Object tmp_pixel;
+    COLORREF tmp_bcolor, tmp_fcolor;
+    
+    tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, findex);
+    tmp_fcolor = COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (tmp_pixel));
+    tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, findex);
+    tmp_bcolor = COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (tmp_pixel));
+#if 0
+    mswindows_update_dc (hdc, Qnil, tmp_fcolor,
+			 tmp_bcolor, Qnil);
+#endif
+    mswindows_output_dibitmap (f, p, xpos - xoffset, dl->ypos - dl->ascent,
+			       clip_x, clip_y, clip_width, clip_height,
+			       pwidth, pheight, pixmap_offset);
+  }
+
+  /* Draw a cursor over top of the pixmap. */
+  if (cursor_width && cursor_height && (cursor_start >= xpos)
+      && !NILP (w->text_cursor_visible_p)
+      && (cursor_start < xpos + pwidth))
+    {
+      int focus = EQ (w->frame, DEVICE_FRAME_WITH_FOCUS_REAL (d));
+      int y = dl->ypos - dl->ascent;
+      struct face_cachel *cursor_cachel =
+	WINDOW_FACE_CACHEL (w,
+			    get_builtin_face_cache_index
+			    (w, Vtext_cursor_face));
+      
+      mswindows_update_dc(hdc, Qnil, cursor_cachel->background, Qnil, 
+			  Qnil);
+
+      if (cursor_width > xpos + pwidth - cursor_start)
+	cursor_width = xpos + pwidth - cursor_start;
+
+      if (focus)
+	{
+	  RECT rect={cursor_start, y + cursor_height,
+		     cursor_start + cursor_width, y};
+	  FrameRect(hdc, &rect, 
+		    COLOR_INSTANCE_MSWINDOWS_BRUSH 
+		    (XCOLOR_INSTANCE(cursor_cachel->background)));
+	}
+      else
+	{
+	  Rectangle (hdc, cursor_start, y, cursor_width,
+		     cursor_height);
+	}
+    }
+}
 
 #ifdef HAVE_SCROLLBARS
 /*
@@ -941,12 +1136,10 @@
 
 		  case IMAGE_MONO_PIXMAP:
 		  case IMAGE_COLOR_PIXMAP:
-#if 0
 		    mswindows_output_pixmap (w, dl, instance, xpos,
 				     rb->object.dglyph.xoffset, start_pixpos,
 				     rb->width, findex, cursor_start,
 				     cursor_width, cursor_height);
-#endif
 		    break;
 
 		  case IMAGE_POINTER:
@@ -1216,7 +1409,6 @@
 }
 
 
-
 
 /************************************************************************/
 /*                            initialization                            */
--- a/src/redisplay-output.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/redisplay-output.c	Mon Aug 13 10:26:29 2007 +0200
@@ -983,12 +983,16 @@
   extern int cursor_in_echo_area; 
  
   if (cursor_in_echo_area)
+    {
     if (FRAME_HAS_MINIBUF_P (f)) 
       { 
 	w = XWINDOW (FRAME_MINIBUF_WINDOW (f)); 
       }
     else
+      {
       return;
+      }
+    }
   redraw_cursor_in_window (w, run_end_begin_meths);
 }
 
--- a/src/redisplay.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/redisplay.c	Mon Aug 13 10:26:29 2007 +0200
@@ -6259,7 +6259,7 @@
 }
 
 
-static char window_line_number_buf[16];
+static char window_line_number_buf[32];
 
 /* Efficiently determine the window line number, and return a pointer
    to its printed representation.  Do this regardless of whether
@@ -7089,10 +7089,7 @@
      fail. */
   if (startp < BUF_BEGV (b) || startp > BUF_ZV (b)
       || point < BUF_BEGV (b) || point > BUF_ZV (b))
-    {
-      w->line_cache_validation_override--;
-      return 0;
-    }
+    return 0;
 
   validate_line_start_cache (w);
   w->line_cache_validation_override++;
@@ -7278,7 +7275,10 @@
   cur_elt = point_in_line_start_cache (w, point, 0);
   /* #### See comment in update_line_start_cache about big minibuffers. */
   if (cur_elt < 0)
-    return point;
+    {
+      w->line_cache_validation_override--;
+      return point;
+    }
 
   point_line_height = Dynarr_atp (w->line_start_cache, cur_elt)->height;
 
--- a/src/s/cygwin32.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/s/cygwin32.h	Mon Aug 13 10:26:29 2007 +0200
@@ -194,12 +194,6 @@
 
 #define NO_MATHERR
 
-/* NOMULTIPLEJOBS should be defined if your system's shell
- does not have "job control" (the ability to stop a program,
- run some other program, then continue the first one).  */
-
-#define NOMULTIPLEJOBS
-
 /* define MAIL_USE_FLOCK if the mailer uses flock
    to interlock access to /usr/spool/mail/$USER.
    The alternative is that a lock file named
--- a/src/sheap.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/sheap.c	Mon Aug 13 10:26:29 2007 +0200
@@ -18,9 +18,9 @@
 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.*/
 
-#include "config.h"
+#include <config.h>
 #include <stdio.h>
-#include <lisp.h>
+#include "lisp.h"
 #include <stddef.h>
 #include "sheap-adjust.h"
 
--- a/src/symbols.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/symbols.c	Mon Aug 13 10:26:29 2007 +0200
@@ -199,8 +199,13 @@
      not mark through this slot, so it is not usable later (because
      the obarray might have been collected).  Marking through the
      ->obarray slot is an even worse idea, because it would keep
-     obarrays from being collected because of symbols pointed to them.  */
-  XSYMBOL (sym)->obarray = Qt;
+     obarrays from being collected because of symbols pointed to them.
+
+     NOTE: We place Qt here only if OBARRAY is actually Vobarray.  It
+     is safer to do it this way, to avoid hosing with symbols within
+     pure objects.  */
+  if (EQ (obarray, Vobarray))
+    XSYMBOL (sym)->obarray = Qt;
 
   if (SYMBOLP (*ptr))
     symbol_next (XSYMBOL (sym)) = XSYMBOL (*ptr);
@@ -531,19 +536,15 @@
       XSYMBOL_VALUE_MAGIC_TYPE (val) == SYMVAL_CONST_BOOLEAN_FORWARD ||
       XSYMBOL_VALUE_MAGIC_TYPE (val) == SYMVAL_CONST_CURRENT_BUFFER_FORWARD ||
       XSYMBOL_VALUE_MAGIC_TYPE (val) == SYMVAL_CONST_SELECTED_CONSOLE_FORWARD))
-#if 0
-    /* #### - This is disabled until a new magic symbol_value for
-       constants is added */
-    || SYMBOL_IS_KEYWORD (sym)
-#endif
+    /* We don't return true for keywords here because they are handled
+       specially by reject_constant_symbols().  */
     ;
 }
 
 /* We are setting SYM's value slot (or function slot, if FUNCTION_P is
-   non-zero) to NEWVAL.  Make sure this is allowed.  NEWVAL is only
-   used in the error message.  FOLLOW_PAST_LISP_MAGIC specifies
-   whether we delve past symbol-value-lisp-magic objects.
-   */
+   non-zero) to NEWVAL.  Make sure this is allowed.
+   FOLLOW_PAST_LISP_MAGIC specifies whether we delve past
+   symbol-value-lisp-magic objects.  */
 
 static void
 reject_constant_symbols (Lisp_Object sym, Lisp_Object newval, int function_p,
@@ -558,7 +559,9 @@
     signal_simple_error ("Use `set-specifier' to change a specifier's value",
 			 sym);
 
-  if (symbol_is_constant (sym, val))
+  if (symbol_is_constant (sym, val)
+      || (SYMBOL_IS_KEYWORD (sym) && !EQ (newval, sym)
+	  && !NILP (XSYMBOL (sym)->obarray)))
     signal_error (Qsetting_constant,
 		  UNBOUNDP (newval) ? list1 (sym) : list2 (sym, newval));
 }
@@ -1617,7 +1620,8 @@
 
  retry:
   valcontents = XSYMBOL (sym)->value;
-  if (NILP (sym) || EQ (sym, Qt) || SYMBOL_VALUE_MAGIC_P (valcontents))
+  if (NILP (sym) || EQ (sym, Qt) || SYMBOL_VALUE_MAGIC_P (valcontents)
+      || SYMBOL_IS_KEYWORD (sym))
     reject_constant_symbols (sym, newval, 0,
 			     UNBOUNDP (newval) ? Qmakunbound : Qset);
   else
--- a/src/symsinit.h	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/symsinit.h	Mon Aug 13 10:26:29 2007 +0200
@@ -90,6 +90,7 @@
 void syms_of_free_hook (void);
 void syms_of_general (void);
 void syms_of_glyphs_x (void);
+void syms_of_glyphs_mswindows (void);
 void syms_of_glyphs (void);
 void syms_of_gui_x (void);
 void syms_of_gui (void);
@@ -163,6 +164,7 @@
 void console_type_create_redisplay_mswindows (void);
 void console_type_create_scrollbar_mswindows (void);
 void console_type_create_toolbar_mswindows (void);
+void console_type_create_glyphs_mswindows (void);
 
 /* Initialize the specifier types (dump-time only). */
 
@@ -183,6 +185,7 @@
 
 void image_instantiator_format_create (void);
 void image_instantiator_format_create_glyphs_x (void);
+void image_instantiator_format_create_glyphs_mswindows (void);
 
 /* Initialize the lstream types (dump-time only). */
 
@@ -244,6 +247,7 @@
 void vars_of_frame_x (void);
 void vars_of_frame (void);
 void vars_of_glyphs_x (void);
+void vars_of_glyphs_mswindows (void);
 void vars_of_glyphs (void);
 void vars_of_gui_x (void);
 void vars_of_gui (void);
@@ -315,6 +319,7 @@
 void complex_vars_of_mule_coding (void);
 void complex_vars_of_glyphs (void);
 void complex_vars_of_glyphs_x (void);
+void complex_vars_of_glyphs_mswindows (void);
 void complex_vars_of_alloc (void);
 void complex_vars_of_menubar (void);
 void complex_vars_of_scrollbar (void);
@@ -324,6 +329,7 @@
 void complex_vars_of_chartab (void);
 void complex_vars_of_buffer (void);
 void complex_vars_of_console (void);
+void complex_vars_of_emacs (void);
 void complex_vars_of_minibuf (void);
 void complex_vars_of_callproc (void);
 void complex_vars_of_filelock (void);
--- a/src/sysdll.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/sysdll.c	Mon Aug 13 10:26:29 2007 +0200
@@ -93,17 +93,30 @@
 }
 
 dll_handle dll_open(CONST char *fname) {
-  return((dll_handle)shl_load(fname,BIND_DEFERRED,0L));
+  shl_t h = shl_load(fname,BIND_DEFERRED,0L);
+  shl_t *hp = NULL;
+
+  if (h) {
+    hp = (shl_t *)malloc(sizeof(shl_t));
+    if (!hp) {
+      shl_unload(h);
+    } else {
+      *hp = h;
+    }
+  }
+  return((dll_handle)hp);
 }
 
 int dll_close(dll_handle h) {
-  return (shl_unload((shl_t)h));
+  shl_t h = *((shl_t *)hp);
+  free(hp);
+  return (shl_unload(h));
 }
 
 dll_func dll_function(dll_handle h,CONST char *n) {
   long handle = 0L;
 
-  if (shl_findsym(&(shl_t)h,n,TYPE_PROCEDURE,&handle))
+  if (shl_findsym((shl_t *)h,n,TYPE_PROCEDURE,&handle))
     return(NULL);
 
   return((dll_func)handle);
@@ -112,7 +125,7 @@
 dll_var dll_variable(dll_handle h,CONST char *n) {
   long handle = 0L;
 
-  if (shl_findsym(&(shl_t)h,n,TYPE_DATA,&handle))
+  if (shl_findsym((shl_t *)h,n,TYPE_DATA,&handle))
     return(NULL);
 
   return((dll_var)handle);
--- a/src/window.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/window.c	Mon Aug 13 10:26:29 2007 +0200
@@ -1366,6 +1366,7 @@
   return make_int (decode_window (window)->hscroll);
 }
 
+#ifdef MODELINE_IS_SCROLLABLE
 DEFUN ("modeline-hscroll", Fmodeline_hscroll, 0, 1, 0, /*
 Return the number of columns by which WINDOW's modeline is scrolled from 
 left margin. If the window has no modeline, return nil.
@@ -1377,6 +1378,7 @@
   w = decode_window (window);
   return (WINDOW_HAS_MODELINE_P (w)) ? make_int (w->modeline_hscroll) : Qnil;
 }
+#endif
 
 DEFUN ("set-window-hscroll", Fset_window_hscroll, 2, 2, 0, /*
 Set number of columns WINDOW is scrolled from left margin to NCOL.
@@ -1397,6 +1399,7 @@
   return ncol;
 }
 
+#ifdef MODELINE_IS_SCROLLABLE
 DEFUN ("set-modeline-hscroll", Fset_modeline_hscroll, 2, 2, 0, /*
 Set number of columns WINDOW's modeline is scrolled from left margin to NCOL.
 NCOL should be zero or positive. If NCOL is negative, it will be forced to 0.
@@ -1420,6 +1423,7 @@
     }
   return Qnil;
 }
+#endif
 
 #if 0 /* bogus crock */
 
--- a/version.sh	Mon Aug 13 10:25:39 2007 +0200
+++ b/version.sh	Mon Aug 13 10:26:29 2007 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
 emacs_major_version=21
 emacs_minor_version=0
-emacs_beta_version=31
-xemacs_codename="Myotonic"
+emacs_beta_version=32
+xemacs_codename="Nachi"