changeset 438:84b14dcb0985 r21-2-27

Import from CVS: tag r21-2-27
author cvs
date Mon, 13 Aug 2007 11:32:25 +0200
parents e2a4e8b94b82
children 357dd071b03c
files CHANGES-beta ChangeLog README.packages config.guess config.sub configure configure.in configure.usage etc/NEWS etc/TUTORIAL.de lib-src/ChangeLog lib-src/Makefile.in.in lib-src/b2m.c lib-src/cvtmail.c lib-src/digest-doc.c lib-src/ellcc.c lib-src/etags.c lib-src/fakemail.c lib-src/getopt.c lib-src/getopt1.c lib-src/gnuserv.h lib-src/hexl.c lib-src/make-docfile.c lib-src/make-path.c lib-src/movemail.c lib-src/ootags.c lib-src/pop.c lib-src/profile.c lib-src/sorted-doc.c lib-src/wakeup.c lib-src/yow.c lisp/ChangeLog lisp/about.el lisp/autoload.el lisp/cus-edit.el lisp/dumped-lisp.el lisp/files.el lisp/gutter-items.el lisp/hyper-apropos.el lisp/info.el lisp/menubar-items.el lisp/minibuf.el lisp/modeline.el lisp/movemail.el lisp/mule/mule-cmds.el lisp/mule/mule-misc.el lisp/process.el lisp/startup.el lwlib/ChangeLog lwlib/config.h.in lwlib/lwlib-Xaw.c lwlib/lwlib-Xlw.c lwlib/lwlib-Xm.c lwlib/lwlib.c man/ChangeLog man/info.texi man/internals/internals.texi man/lispref/control.texi man/lispref/debugging.texi man/new-users-guide/new-users-guide.texi man/xemacs-faq.texi man/xemacs/custom.texi man/xemacs/mini.texi man/xemacs/regs.texi man/xemacs/xemacs.texi nt/ChangeLog nt/config.h nt/minitar.c nt/minitar.mak nt/xemacs.mak src/.dbxrc src/.gdbinit src/ChangeLog src/ChangeLog.2 src/Makefile.in.in src/alloc.c src/bytecode.c src/config.h.in src/console-tty.c src/dbxrc src/depend src/elhash.c src/emacs.c src/eval.c src/event-Xt.c src/event-msw.c src/events.c src/extents.c src/extents.h src/file-coding.c src/file-coding.h src/fns.c src/frame.c src/frame.h src/gdbinit src/glyphs-eimage.c src/glyphs-msw.c src/glyphs-widget.c src/glyphs-x.c src/glyphs.c src/glyphs.h src/gpmevent.c src/gui.c src/gutter.c src/input-method-motif.c src/insdel.c src/keymap.c src/libsst.c src/lisp.h src/md5.c src/menubar-x.c src/menubar.c src/mule-ccl.c src/mule-charset.c src/mule-charset.h src/ntheap.c src/print.c src/redisplay-output.c src/redisplay.c src/redisplay.h src/s/aix3-2.h src/s/cygwin32.h src/s/windowsnt.h src/scrollbar.c src/specifier.h src/symsinit.h src/sysdep.c src/sysfile.h src/termcap.c src/toolbar-x.c src/toolbar.c src/unexaix.c src/unexalpha.c src/unexec.c src/unexfreebsd.c src/unexhp9k3.c src/unexmips.c src/window.c src/window.h tests/ChangeLog tests/automated/mule-tests.el tests/automated/syntax-tests.el tests/glyph-test.el version.sh
diffstat 144 files changed, 15493 insertions(+), 12749 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 11:31:26 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,22 @@
+to 21.2.27 "Hera"
+-- Dynamic layout for widgets from Andy Piper
+-- config.sub, config.guess major upgrade, Marcus Thiessel
+-- gdbinit renamed to .gdbinit
+-- dbxrc renamed to .dbxrc
+-- Mail locking overhaul, Michael Sperber
+-- Info-visit-file can now be used non-interactively, Martin Buchholz
+-- FAQ updates, Sandra Wambold
+-- Document lisp-level error handling, Hrvoje Niksic
+-- Windows changes, Kirill Katsnelson
+-- Portable dumper ported to Windows, Kirill Katsnelson
+-- idlwave-mode added, Carsten Dominik
+-- Info changes, Yoshiki Hayashi and Didier Verna.
+-- Again support BSD/OS 2.0
+-- minibuf.* changes, Yoshiki Hayashi
+-- hyper-apropos changes, Yoshiki Hayashi
+-- buffers tab has its own face, Andy Piper
+-- modeline scrolling changes, Didier Verna
+
 to 21.2.26 "Millenium"
 -- Fix unpredictable results, perhaps even crashes, if using the
    `return from debugger feature' and errors in `eval' or `funcall'.
--- a/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,48 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-15  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+	* etc/TUTORIAL.de: Update copyright and fix typo.
+
+2000-01-14  Martin Buchholz  <martin@xemacs.org>
+
+	* configure.in: Create a .dbxrc in the src directory, like .gdbinit.
+
+	* configure.in: Add `tests' symlink to make it easier to find
+	automated tests directory.
+
+2000-01-14  Andy Piper  <andy@xemacs.org>
+
+	* configure.in: for cygwin 1.0 we must pick up the mingw32 headers
+	before the cygwin headers.
+
+2000-01-08  Martin Buchholz  <martin@xemacs.org>
+
+	* configure.in: 
+	- Allow find-tag to work in the build directory.
+	- rename src/gdbinit to src/.gdbinit, so that gdb can find it.
+	- Less verbose messages when creating .sbinit, .gdbinit, TAGS.
+
+2000-01-07  Marcus Thiessel <marcus@xemacs.org>
+
+	* config.sub: Upgrade to 1.169, imported from autoconf's CVS
+	* config.guess: Upgrade to 1.158, imported from autoconf's CVS
+
+2000-01-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* etc/NEWS: Document mail spool locking overhaul.
+
+	* configure.usage (--mail-locking):
+	* configure.in: Handle --mail-locking option correctly in
+	preparation for the movemail locking overhaul.
+
+2000-01-05  Daniel Pittman  <daniel@danann.net>
+
+	* configure.in (Installation): Report which Athena header/library
+	combo is being used.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/README.packages	Mon Aug 13 11:31:26 2007 +0200
+++ b/README.packages	Mon Aug 13 11:32:25 2007 +0200
@@ -9,8 +9,10 @@
 ------------------------
 
 Q. Do I need to have the packages to compile XEmacs?
-A. If you want to compile with MULE, you need the mule-base package installed.
-   Otherwise, no package is required before compilation.
+A. No, XEmacs will build and install just fine without any packages
+   installed.  However, only the most basic editing functions will be
+   available with no packages installed, so installing packages is an
+   essential part of making your installed XEmacs _useful_.
 
 Q. I really liked the old way that packages were bundled and do not
    want to mess with packages at all.
@@ -20,11 +22,11 @@
 A note of caution
 -----------------
 
-The XEmacs package system is still in its infancy. Please expect a few 
-minor hurdles on the way. Also neither the interface nor the structure is 
+The XEmacs package system is still in its infancy. Please expect a few
+minor hurdles on the way. Also neither the interface nor the structure is
 set in stone. The XEmacs maintainers reserve the right to sacrifice
 backwards compatibility as quirks are worked out over the coming
-releases. 
+releases.
 
 Some Package Theory
 -------------------
@@ -35,7 +37,7 @@
 Each elisp add-on (or groups of them when they are small) now comes
 in its own tarball that contains a small search hierarchy.
 
-You select just the ones you need. Install them by untarring them into 
+You select just the ones you need. Install them by untarring them into
 the right place. On startup XEmacs will find them, set up the load
 path correctly, install autoloads, etc, etc.
 
@@ -60,7 +62,7 @@
 -------------------------
 
 Packages are available from ftp://ftp.xemacs.org/pub/xemacs/packages
-and its mirror.
+and its mirrors.
 
 How to install the packages
 ---------------------------
@@ -73,14 +75,14 @@
 ----------------
 
 Those with little time, cheap connections and plenty of disk space can
-install all packages at once using the sumo tarballs.
+install all the packages at once using the sumo tarballs.
 Download the file
 
-xemacs-sumo-<date>.tar.gz 
+xemacs-sumo.tar.gz
 
 For an XEmacs compiled with Mule you also need
 
-xemacs-mule-sumo-<date>.tar.gz
+xemacs-mule-sumo.tar.gz
 
 N.B. They are called 'Sumo Tarballs' for good reason. They are
 currently about 15MB and 2.3MB (gzipped) respectively.
@@ -120,8 +122,8 @@
 installing easier. It will notice if new packages or versions are
 available and will fetch them from the ftp site.
 
-Unfortunately this requires that a few packages are already in place. 
-You will have to install them by hand as above or use a SUMO tarball. 
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
 This requirement will hopefully go away in the future. The packages
 you need are:
 
@@ -132,7 +134,7 @@
 
    mailcrypt    - If you have PGP installed and want to verify the
                   signature of the index file.
-   mule-base    - Needed if you want to compile XEmacs with MULE.
+   mule-base    - Needed if you want to use XEmacs with MULE.
 
 After installing these by hand, you can start XEmacs. (It is a good
 idea to use 'xemacs -vanilla' here as your startup files might need
@@ -164,7 +166,7 @@
 -  When you are finished choosing packages, invoke
    'Packages->Install/Remove Select' from the menu or type 'x' to
    begin installing packages.
-    
+
 After Installation
 ------------------
 
@@ -173,7 +175,7 @@
 Note to MULE users
 ------------------
 
-Unlike all other packages the mule-base package is used at build/dump 
+Unlike all other packages the mule-base package is used at build/dump
 time. This means that you need this available before compiling XEmacs
 with MULE. Also it is a good idea to keep packages that are
 MULE-only separate by putting them in the mule-packages hierarchy.
@@ -200,7 +202,7 @@
 ---------------------------
 
 As the exact files and their locations contained in a package may
-change it is recommend to remove a package first before installing a
+change it is recommended to remove a package first before installing a
 new version. In order to facilitate removal each package contains an
 pgkinfo/MANIFEST.pkgname file which list all the files belong to the
 package. M-x package-admin-delete-binary-package RET can be used to
@@ -230,7 +232,7 @@
 
 If you want to find out which package contains the functionality you
 are looking for, use M-x package-get-package-provider, and give it a
-symbol that is likely to be in that package.  eg, if some code you
-want to use has a (require 'thingatpt) in it, try doing
+symbol that is likely to be in that package.  For example, if some
+code you want to use has a (require 'thingatpt) in it, try doing
 M-x package-get-package-provider RET thingatpt , which will return
 something like: (fsf-compat "1.06").
--- a/config.guess	Mon Aug 13 11:31:26 2007 +0200
+++ b/config.guess	Mon Aug 13 11:32:25 2007 +0200
@@ -1,6 +1,7 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
+#   Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -23,6 +24,7 @@
 
 # Written by Per Bothner <bothner@cygnus.com>.
 # The master version of this file is at the FSF in /home/gd/gnu/lib.
+# Please send patches to <autoconf-patches@gnu.org>.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
@@ -35,6 +37,20 @@
 # (but try to keep the structure clean).
 #
 
+# Use $HOST_CC if defined. $CC may point to a cross-compiler
+if test x"$CC_FOR_BUILD" = x; then
+  if test x"$HOST_CC" != x; then
+    CC_FOR_BUILD="$HOST_CC"
+  else
+    if test x"$CC" != x; then
+      CC_FOR_BUILD="$CC"
+    else
+      CC_FOR_BUILD=cc
+    fi
+  fi
+fi
+
+
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 8/24/94.)
 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
@@ -46,7 +62,8 @@
 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
 
 # Note: order is significant - the case branches are not exclusive.
 
@@ -59,7 +76,7 @@
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	cat <<EOF >dummy.s
+	cat <<EOF >$dummy.s
 	.globl main
 	.ent main
 main:
@@ -76,9 +93,9 @@
 	ret \$31,(\$26),1
 	.end main
 EOF
-	${CC-cc} dummy.s -o dummy 2>/dev/null
+	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
 	if test "$?" = 0 ; then
-		./dummy
+		./$dummy
 		case "$?" in
 			7)
 				UNAME_MACHINE="alpha"
@@ -97,8 +114,14 @@
 				;;
 		esac
 	fi
-	rm -f dummy.s dummy
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+	rm -f $dummy.s $dummy
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
 	exit 0 ;;
     21064:Windows_NT:50:3)
 	echo alpha-dec-winnt3.5
@@ -133,6 +156,9 @@
     wgrisc:OpenBSD:*:*)
 	echo mipsel-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
 	exit 0;;
@@ -142,7 +168,7 @@
     SR2?01:HI-UX/MPP:*:*)
 	echo hppa1.1-hitachi-hiuxmpp
 	exit 0;;
-    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
 		echo pyramid-pyramid-sysv3
@@ -150,7 +176,7 @@
 		echo pyramid-pyramid-bsd
 	fi
 	exit 0 ;;
-    NILE:*:*:dcosx)
+    NILE*:*:*:dcosx)
 	echo pyramid-pyramid-svr4
 	exit 0 ;;
     sun4H:SunOS:5.*:*)
@@ -201,6 +227,32 @@
     atari*:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor 
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
     sun3*:NetBSD:*:*)
 	echo m68k-sun-netbsd${UNAME_RELEASE}
 	exit 0 ;;
@@ -234,12 +286,16 @@
     VAX*:ULTRIX*:*:*)
 	echo vax-dec-ultrix${UNAME_RELEASE}
 	exit 0 ;;
-    2020:CLIX:*:*)
+    2020:CLIX:*:* | 2430:CLIX:*:*)
 	echo clipper-intergraph-clix${UNAME_RELEASE}
 	exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-	sed 's/^	//' << EOF >dummy.c
-	int main (argc, argv) int argc; char **argv; {
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
 	#if defined (host_mips) && defined (MIPSEB)
 	#if defined (SYSTYPE_SYSV)
 	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
@@ -254,10 +310,10 @@
 	  exit (-1);
 	}
 EOF
-	${CC-cc} dummy.c -o dummy \
-	  && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-	  && rm dummy.c dummy && exit 0
-	rm -f dummy.c dummy
+	$CC_FOR_BUILD $dummy.c -o $dummy \
+	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm $dummy.c $dummy && exit 0
+	rm -f $dummy.c $dummy
 	echo mips-mips-riscos${UNAME_RELEASE}
 	exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
@@ -275,15 +331,18 @@
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-	if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-	     -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
 		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
 	else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
  	exit 0 ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
@@ -309,7 +368,7 @@
 	exit 0 ;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		sed 's/^		//' << EOF >dummy.c
+		sed 's/^		//' << EOF >$dummy.c
 		#include <sys/systemcfg.h>
 
 		main()
@@ -320,8 +379,8 @@
 			exit(0);
 			}
 EOF
-		${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-		rm -f dummy.c dummy
+		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+		rm -f $dummy.c $dummy
 		echo rs6000-ibm-aix3.2.5
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
 		echo rs6000-ibm-aix3.2.4
@@ -369,24 +428,24 @@
 	    9000/31? )            HP_ARCH=m68000 ;;
 	    9000/[34]?? )         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
-              sed 's/^              //' << EOF >dummy.c
+              sed 's/^              //' << EOF >$dummy.c
               #include <stdlib.h>
               #include <unistd.h>
-              
+
               int main ()
               {
               #if defined(_SC_KERNEL_BITS)
                   long bits = sysconf(_SC_KERNEL_BITS);
-              #endif 
+              #endif
                   long cpu  = sysconf (_SC_CPU_VERSION);
-              
-                  switch (cpu) 
+
+                  switch (cpu)
               	{
               	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
               	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0: 
+              	case CPU_PA_RISC2_0:
               #if defined(_SC_KERNEL_BITS)
-              	    switch (bits) 
+              	    switch (bits)
               		{
               		case 64: puts ("hppa2.0w"); break;
               		case 32: puts ("hppa2.0n"); break;
@@ -394,20 +453,20 @@
               		} break;
               #else  /* !defined(_SC_KERNEL_BITS) */
               	    puts ("hppa2.0"); break;
-              #endif 
+              #endif
               	default: puts ("hppa1.0"); break;
               	}
                   exit (0);
               }
 EOF
-	${CC-cc} dummy.c -o dummy && HP_ARCH=`./dummy`
-	rm -f dummy.c dummy
+	(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+	rm -f $dummy.c $dummy
 	esac
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
 	exit 0 ;;
     3050*:HI-UX:*:*)
-	sed 's/^	//' << EOF >dummy.c
+	sed 's/^	//' << EOF >$dummy.c
 	#include <unistd.h>
 	int
 	main ()
@@ -432,8 +491,8 @@
 	  exit (0);
 	}
 EOF
-	${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-	rm -f dummy.c dummy
+	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+	rm -f $dummy.c $dummy
 	echo unknown-hitachi-hiuxwe2
 	exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -442,6 +501,9 @@
     9000/8??:4.3bsd:*:*)
 	echo hppa1.0-hp-bsd
 	exit 0 ;;
+    *9??*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
 	echo hppa1.1-hp-osf
 	exit 0 ;;
@@ -458,6 +520,9 @@
     parisc*:Lites*:*:*)
 	echo hppa1.1-hp-lites
 	exit 0 ;;
+    hppa*:OpenBSD:*:*)
+	echo hppa-unknown-openbsd
+	exit 0 ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
         exit 0 ;;
@@ -490,11 +555,14 @@
     CRAY*TS:*:*:*)
 	echo t90-cray-unicos${UNAME_RELEASE}
 	exit 0 ;;
+    CRAY*T3E:*:*:*)
+	echo alpha-cray-unicosmk${UNAME_RELEASE}
+	exit 0 ;;
     CRAY-2:*:*:*)
 	echo cray2-cray-unicos
         exit 0 ;;
     F300:UNIX_System_V:*:*)
-        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
         echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
@@ -507,29 +575,47 @@
     hp300:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
     sparc*:BSD/OS:*:*)
 	echo sparc-unknown-bsdi${UNAME_RELEASE}
 	exit 0 ;;
-    i?86:BSD/386:*:* | *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit 0 ;;
     *:FreeBSD:*:*)
+	if test -x /usr/bin/objformat; then
+	    if test "elf" = "`/usr/bin/objformat`"; then
+		echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
+		exit 0
+	    fi
+	fi
 	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit 0 ;;
     *:NetBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
 	exit 0 ;;
     *:OpenBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
 	exit 0 ;;
     i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin32
+	echo ${UNAME_MACHINE}-pc-cygwin
 	exit 0 ;;
     i*:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i386-pc-interix
+	exit 0 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit 0 ;;
     p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin32
+	echo powerpcle-unknown-cygwin
 	exit 0 ;;
     prep*:SunOS:5.*:*)
 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -538,15 +624,11 @@
 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit 0 ;;
     *:Linux:*:*)
-	# uname on the ARM produces all sorts of strangeness, and we need to
-	# filter it out.
-	case "$UNAME_MACHINE" in
-	  arm* | sa110*)	      UNAME_MACHINE="arm" ;;
-	esac
 
 	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us.
-	ld_help_string=`ld --help 2>&1`
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	ld_help_string=`cd /; ld --help 2>&1`
 	ld_supported_emulations=`echo $ld_help_string \
 			 | sed -ne '/supported emulations:/!d
 				    s/[ 	][ 	]*/ /g
@@ -554,16 +636,74 @@
 				    s/ .*//
 				    p'`
         case "$ld_supported_emulations" in
-	  i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
-	  i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
-	  sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-	  armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-	  m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-	  elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
+	  *ia64)
+		echo "${UNAME_MACHINE}-unknown-linux"
+		exit 0
+		;;
+	  i?86linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0
+		;;
+	  i?86coff)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0
+		;;
+	  sparclinux)
+		echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+		exit 0
+		;;
+	  armlinux)
+		echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+		exit 0
+		;;
+	  elf32arm*)
+		echo "${UNAME_MACHINE}-unknown-linux-gnu"
+		exit 0
+		;;
+	  armelf_linux*)
+		echo "${UNAME_MACHINE}-unknown-linux-gnu"
+		exit 0
+		;;
+	  m68klinux)
+		echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+		exit 0
+		;;
+	  elf32ppc)
+		# Determine Lib Version
+		cat >$dummy.c <<EOF
+#include <features.h>
+#if defined(__GLIBC__)
+extern char __libc_version[];
+extern char __libc_release[];
+#endif
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#if defined(__GLIBC__)
+  printf("%s %s\n", __libc_version, __libc_release);
+#else
+  printf("unkown\n");
+#endif
+  return 0;
+}
+EOF
+		LIBC=""
+		$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+		if test "$?" = 0 ; then
+			./$dummy | grep 1\.99 > /dev/null
+			if test "$?" = 0 ; then
+				LIBC="libc1"
+			fi
+		fi	
+		rm -f $dummy.c $dummy
+		echo powerpc-unknown-linux-gnu${LIBC}
+		exit 0
+		;;
 	esac
 
 	if test "${UNAME_MACHINE}" = "alpha" ; then
-		sed 's/^	//'  <<EOF >dummy.s
+		sed 's/^	//'  <<EOF >$dummy.s
 		.globl main
 		.ent main
 	main:
@@ -581,9 +721,9 @@
 		.end main
 EOF
 		LIBC=""
-		${CC-cc} dummy.s -o dummy 2>/dev/null
+		$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
 		if test "$?" = 0 ; then
-			./dummy
+			./$dummy
 			case "$?" in
 			7)
 				UNAME_MACHINE="alpha"
@@ -600,22 +740,23 @@
 			16)
 				UNAME_MACHINE="alphaev6"
 				;;
-			esac	
+			esac
 
-			objdump --private-headers dummy | \
+			objdump --private-headers $dummy | \
 			  grep ld.so.1 > /dev/null
 			if test "$?" = 0 ; then
 				LIBC="libc1"
 			fi
-		fi	
-		rm -f dummy.s dummy
+		fi
+		rm -f $dummy.s $dummy
 		echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
 	elif test "${UNAME_MACHINE}" = "mips" ; then
-	  cat >dummy.c <<EOF
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
+	  cat >$dummy.c <<EOF
+#ifdef __cplusplus
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
 #ifdef __MIPSEB__
   printf ("%s-unknown-linux-gnu\n", argv[1]);
 #endif
@@ -625,8 +766,8 @@
   return 0;
 }
 EOF
-	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-	  rm -f dummy.c dummy
+	  $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+	  rm -f $dummy.c $dummy
 	else
 	  # Either a pre-BFD a.out linker (linux-gnuoldld)
 	  # or one that does not give us useful --help.
@@ -645,12 +786,13 @@
 	    ;;
 	  esac
 	  # Determine whether the default compiler is a.out or elf
-	  cat >dummy.c <<EOF
+	  cat >$dummy.c <<EOF
 #include <features.h>
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
+#ifdef __cplusplus
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
 #ifdef __ELF__
 # ifdef __GLIBC__
 #  if __GLIBC__ >= 2
@@ -667,8 +809,8 @@
   return 0;
 }
 EOF
-	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-	  rm -f dummy.c dummy
+	  $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+	  rm -f $dummy.c $dummy
 	fi ;;
 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
 # are messed up and put the nodename in both sysname and nodename.
@@ -684,10 +826,20 @@
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit 0 ;;
     i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
 	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit 0 ;;
+    i?86:*:5:7*)
+        # Fixed at (any) Pentium or better
+        UNAME_MACHINE=i586
+        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+	    echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
+	else
+	    echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
 	fi
 	exit 0 ;;
     i?86:*:3.2:*)
@@ -699,18 +851,15 @@
 		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
 		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
 			&& UNAME_MACHINE=i586
+		(/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
 		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
 	else
 		echo ${UNAME_MACHINE}-pc-sysv32
 	fi
 	exit 0 ;;
-    i?86:UnixWare:*:*)
-	if /bin/uname -X 2>/dev/null >/dev/null ; then
-	  (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-	    && UNAME_MACHINE=i586
-	fi
-	echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
-	exit 0 ;;
     pc:*:*:*)
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
         # the processor, so we play safe by assuming i386.
@@ -752,7 +901,7 @@
     mc68030:UNIX_System_V:4.*:*)
 	echo m68k-atari-sysv4
 	exit 0 ;;
-    i?86:LynxOS:2.*:*)
+    i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
 	exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
@@ -764,6 +913,9 @@
     SM[BE]S:UNIX_SV:*:*)
 	echo mips-dde-sysv${UNAME_RELEASE}
 	exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
     RM*:SINIX-*:*:*)
 	echo mips-sni-sysv4
 	exit 0 ;;
@@ -794,7 +946,7 @@
     news*:NEWS-OS:*:6*)
 	echo mips-sony-newsos6
 	exit 0 ;;
-    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
 	        echo mips-nec-sysv${UNAME_RELEASE}
 	else
@@ -810,12 +962,27 @@
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
 	exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:QNX:*:4*)
+	echo i386-qnx-qnx${UNAME_VERSION}
+	exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
 
-cat >dummy.c <<EOF
+cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
 # include <sys/types.h>
 # include <sys/utsname.h>
@@ -853,7 +1020,10 @@
 #endif
   int version;
   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
   exit (0);
 #endif
 
@@ -913,8 +1083,8 @@
 }
 EOF
 
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
 
 # Apollos put the system type in the environment.
 
--- a/config.sub	Mon Aug 13 11:31:26 2007 +0200
+++ b/config.sub	Mon Aug 13 11:32:25 2007 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
+#   Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc.
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -98,11 +98,21 @@
 		os=
 		basic_machine=$1
 		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
 	-sco5)
-		os=sco3.2v5
+		os=-sco3.2v5
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
 	-sco4)
@@ -121,6 +131,9 @@
 		os=-sco3.2v2
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
 	-isc)
 		os=-isc2.2
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -143,22 +156,33 @@
 	-psos*)
 		os=-psos
 		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
 esac
 
 # Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
 	# Recognize the basic CPU types without company name.
 	# Some are omitted here because they have special meanings below.
-	tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+	tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
 		| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
-		| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
-		| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
-		| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
-		| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
-		| mipstx39 | mipstx39el \
-		| sparc | sparclet | sparclite | sparc64 | v850)
+		| 580 | i960 | h8300 \
+		| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+		| alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \
+		| we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
+		| 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
+		| mips64orion | mips64orionel | mipstx39 | mipstx39el \
+		| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+		| mips64vr5000 | miprs64vr5000el | mcore \
+		| sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
+		| thumb | d10v | fr30)
 		basic_machine=$basic_machine-unknown
 		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+		;;
+
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
@@ -171,27 +195,45 @@
 		exit 1
 		;;
 	# Recognize the basic CPU types with company name.
-	vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+	# FIXME: clean up the formatting here.
+	vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
 	      | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
 	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-	      | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
-	      | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
-	      | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
-	      | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+	      | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
+	      | xmp-* | ymp-* \
+	      | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
+	      | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \
+	      | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+	      | clipper-* | orion-* \
 	      | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-	      | sparc64-* | mips64-* | mipsel-* \
-	      | mips64el-* | mips64orion-* | mips64orionel-*  \
-	      | mipstx39-* | mipstx39el-* \
-	      | f301-*)
+	      | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
+	      | mips64el-* | mips64orion-* | mips64orionel-* \
+	      | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+	      | mipstx39-* | mipstx39el-* | mcore-* \
+	      | f301-* | armv*-* | t3e-* \
+	      | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+	      | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* )
 		;;
 	# Recognize the various machine names and aliases which stand
 	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
 	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
 		basic_machine=m68000-att
 		;;
 	3b*)
 		basic_machine=we32k-att
 		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
 	alliant | fx80)
 		basic_machine=fx80-alliant
 		;;
@@ -221,6 +263,10 @@
 		basic_machine=m68k-apollo
 		os=-sysv
 		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -297,6 +343,10 @@
 	encore | umax | mmax)
 		basic_machine=ns32k-encore
 		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
 	fx2800)
 		basic_machine=i860-alliant
 		;;
@@ -315,6 +365,14 @@
 		basic_machine=h8300-hitachi
 		os=-hms
 		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
 	harris)
 		basic_machine=m88k-harris
 		os=-sysv3
@@ -330,13 +388,30 @@
 		basic_machine=m68k-hp
 		os=-hpux
 		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
 	hp9k2[0-9][0-9] | hp9k31[0-9])
 		basic_machine=m68000-hp
 		;;
 	hp9k3[2-9][0-9])
 		basic_machine=m68k-hp
 		;;
-	hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
 		basic_machine=hppa1.1-hp
 		;;
 	hp9k8[0-9][0-9] | hp8[0-9][0-9])
@@ -345,9 +420,16 @@
 	hppa-next)
 		os=-nextstep3
 		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
-		os=-mvs
 		;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i[34567]86v32)
@@ -366,6 +448,25 @@
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-solaris2
 		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	i386-go32 | go32)
+		basic_machine=i386-unknown
+		os=-go32
+		;;
+	i386-mingw32 | mingw32)
+		basic_machine=i386-unknown
+		os=-mingw32
+		;;
+	i386-qnx | qnx)
+		basic_machine=i386-qnx
+		;;
 	iris | iris4d)
 		basic_machine=mips-sgi
 		case $os in
@@ -394,6 +495,10 @@
 	miniframe)
 		basic_machine=m68000-convergent
 		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
 	mipsel*-linux*)
 		basic_machine=mipsel-unknown
 		os=-linux-gnu
@@ -408,10 +513,30 @@
 	mips3*)
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
 		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	msdos)
+		basic_machine=i386-unknown
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
 		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
 	news | news700 | news800 | news900)
 		basic_machine=m68k-sony
 		os=-newsos
@@ -424,6 +549,10 @@
 		basic_machine=mips-sony
 		os=-newsos
 		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
 	next | m*-next )
 		basic_machine=m68k-next
 		case $os in
@@ -449,9 +578,25 @@
 		basic_machine=i960-intel
 		os=-nindy
 		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
 	np1)
 		basic_machine=np1-gould
 		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
 	pa-hitachi)
 		basic_machine=hppa1.1-hitachi
 		os=-hiuxwe2
@@ -469,19 +614,19 @@
         pc532 | pc532-*)
 		basic_machine=ns32k-pc532
 		;;
-	pentium | p5 | k5 | nexen)
+	pentium | p5 | k5 | k6 | nexen)
 		basic_machine=i586-pc
 		;;
-	pentiumpro | p6 | k6 | 6x86)
+	pentiumpro | p6 | 6x86)
 		basic_machine=i686-pc
 		;;
 	pentiumii | pentium2)
 		basic_machine=i786-pc
 		;;
-	pentium-* | p5-* | k5-* | nexen-*)
+	pentium-* | p5-* | k5-* | k6-* | nexen-*)
 		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	pentiumpro-* | p6-* | k6-* | 6x86-*)
+	pentiumpro-* | p6-* | 6x86-*)
 		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	pentiumii-* | pentium2-*)
@@ -505,12 +650,20 @@
 	ps2)
 		basic_machine=i386-ibm
 		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
 	rm[46]00)
 		basic_machine=mips-siemens
 		;;
 	rtpc | rtpc-*)
 		basic_machine=romp-ibm
 		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
 	sequent)
 		basic_machine=i386-sequent
 		;;
@@ -518,6 +671,10 @@
 		basic_machine=sh-hitachi
 		os=-hms
 		;;
+	sparclite-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
 	sps7)
 		basic_machine=m68k-bull
 		os=-sysv2
@@ -525,6 +682,13 @@
 	spur)
 		basic_machine=spur-unknown
 		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
 	sun2)
 		basic_machine=m68000-sun
 		;;
@@ -569,6 +733,10 @@
 		basic_machine=i386-sequent
 		os=-dynix
 		;;
+	t3e)
+		basic_machine=t3e-cray
+		os=-unicos
+		;;
 	tx39)
 		basic_machine=mipstx39-unknown
 		;;
@@ -586,6 +754,10 @@
 		basic_machine=a29k-nyu
 		os=-sym1
 		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
 	vaxv)
 		basic_machine=vax-dec
 		os=-sysv
@@ -609,6 +781,14 @@
 		basic_machine=a29k-wrs
 		os=-vxworks
 		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
 	xmp)
 		basic_machine=xmp-cray
 		os=-unicos
@@ -616,6 +796,10 @@
         xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
 	none)
 		basic_machine=none-none
 		os=-none
@@ -623,6 +807,15 @@
 
 # Here we handle the default manufacturer of certain CPU types.  It is in
 # some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
 	mips)
 		if [ x$os = x-linux-gnu ]; then
 			basic_machine=mips-unknown
@@ -645,7 +838,7 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sparc)
+	sparc | sparcv9)
 		basic_machine=sparc-sun
 		;;
         cydra)
@@ -657,6 +850,16 @@
 	orion105)
 		basic_machine=clipper-highlevel
 		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	c4x*)
+		basic_machine=c4x-none
+		os=-coff
+		;;
 	*)
 		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
 		exit 1
@@ -710,13 +913,21 @@
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
-	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -uxpv* | -beos*)
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
 	-linux*)
 		os=`echo $os | sed -e 's|linux|linux-gnu|'`
 		;;
@@ -726,6 +937,9 @@
 	-sunos6*)
 		os=`echo $os | sed -e 's|sunos6|solaris3|'`
 		;;
+	-opened*)
+		os=-openedition
+		;;
 	-osfrose*)
 		os=-osfrose
 		;;
@@ -741,6 +955,9 @@
 	-acis*)
 		os=-aos
 		;;
+	-386bsd)
+		os=-bsd
+		;;
 	-ctix* | -uts*)
 		os=-sysv
 		;;
@@ -760,6 +977,9 @@
 	-oss*)
 		os=-sysv3
 		;;
+        -qnx)
+		os=-qnx4
+		;;
 	-svr4)
 		os=-sysv4
 		;;
@@ -772,9 +992,18 @@
 	# This must come after -sysvr4.
 	-sysv*)
 		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
 	-xenix)
 		os=-xenix
 		;;
+        -*mint | -*MiNT)
+	        os=-mint
+		;;
 	-none)
 		;;
 	*)
@@ -800,6 +1029,9 @@
 	*-acorn)
 		os=-riscix1.2
 		;;
+	arm*-rebel)
+		os=-linux
+		;;
 	arm*-semi)
 		os=-aout
 		;;
@@ -821,6 +1053,15 @@
 		# default.
 		# os=-sunos4
 		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
 	*-tti)	# must be before sparc entry or we get the wrong os.
 		os=-sysv3
 		;;
@@ -833,6 +1074,15 @@
 	*-ibm)
 		os=-aix
 		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
 	*-hp)
 		os=-hpux
 		;;
@@ -896,6 +1146,18 @@
 	f301-fujitsu)
 		os=-uxpv
 		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
 	*)
 		os=-none
 		;;
@@ -917,9 +1179,15 @@
 			-aix*)
 				vendor=ibm
 				;;
+			-beos*)
+				vendor=be
+				;;
 			-hpux*)
 				vendor=hp
 				;;
+			-mpeix*)
+				vendor=hp
+				;;
 			-hiux*)
 				vendor=hitachi
 				;;
@@ -935,7 +1203,7 @@
 			-genix*)
 				vendor=ns
 				;;
-			-mvs*)
+			-mvs* | -opened*)
 				vendor=ibm
 				;;
 			-ptx*)
@@ -947,6 +1215,15 @@
 			-aux*)
 				vendor=apple
 				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -*MiNT)
+				vendor=atari
+				;;
 		esac
 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
 		;;
--- a/configure	Mon Aug 13 11:31:26 2007 +0200
+++ b/configure	Mon Aug 13 11:32:25 2007 +0200
@@ -515,10 +515,11 @@
 	  case "$val" in
 	    lockf )	val=lockf ;;
 	    flock )	val=flock ;;
-	    file )	val=file  ;;
+	    file | dot ) val=file  ;;
+	    locking )	val=locking  ;;
 	    * ) (echo "$progname: Usage error:"
 echo " " "The \`--$optname' option must have one of these values:
-  \`lockf', \`flock', or \`file'."
+  \`lockf', \`flock', \`file', \`locking', or \`mmdf'."
 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1 ;;
 	  esac
           eval "$opt=\"$val\""
@@ -830,7 +831,7 @@
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:834: checking whether ln -s works" >&5
+echo "configure:835: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -848,7 +849,7 @@
 fi
 
 
-for dir in lisp etc man info; do
+for dir in lisp etc man info tests; do
   if test ! -d "$dir" ; then
     echo Making symbolic link to "$srcdir/$dir"
     ${LN_S} "$srcdir/$dir" "$dir"
@@ -1075,7 +1076,7 @@
 
 
 echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1079: checking "host system type"" >&5
+echo "configure:1080: checking "host system type"" >&5
 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
 configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'`
@@ -1569,7 +1570,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:1573: checking for $ac_word" >&5
+echo "configure:1574: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1596,7 +1597,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:1600: checking for $ac_word" >&5
+echo "configure:1601: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1644,7 +1645,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1648: 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.
@@ -1673,7 +1674,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1677: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1678: 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'
@@ -1686,12 +1687,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 1690 "configure"
+#line 1691 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1719,19 +1720,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:1723: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1724: 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:1728: checking whether we are using GNU C" >&5
+echo "configure:1729: 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:1735: \"$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:1736: \"$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
@@ -1749,7 +1750,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1753: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1754: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1782,7 +1783,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:1786: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1809,7 +1810,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:1813: checking for $ac_word" >&5
+echo "configure:1814: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1857,7 +1858,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1861: checking for $ac_word" >&5
+echo "configure:1862: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1886,7 +1887,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1890: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1891: 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'
@@ -1899,12 +1900,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 1903 "configure"
+#line 1904 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1932,19 +1933,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:1936: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1937: 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:1941: checking whether we are using GNU C" >&5
+echo "configure:1942: 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:1948: \"$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:1949: \"$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
@@ -1962,7 +1963,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1966: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1967: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1995,7 +1996,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:1999: checking for $ac_word" >&5
+echo "configure:2000: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2022,7 +2023,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:2026: checking for $ac_word" >&5
+echo "configure:2027: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2070,7 +2071,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2074: checking for $ac_word" >&5
+echo "configure:2075: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2099,7 +2100,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2103: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2104: 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'
@@ -2112,12 +2113,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 2116 "configure"
+#line 2117 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -2145,19 +2146,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:2149: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2150: 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:2154: checking whether we are using GNU C" >&5
+echo "configure:2155: 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:2161: \"$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:2162: \"$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
@@ -2175,7 +2176,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2179: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2180: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2212,7 +2213,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:2216: checking how to run the C preprocessor" >&5
+echo "configure:2217: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2225,13 +2226,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2229 "configure"
+#line 2230 "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:2235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2242,13 +2243,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2246 "configure"
+#line 2247 "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:2252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2259,13 +2260,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2263 "configure"
+#line 2264 "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:2269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2290,9 +2291,9 @@
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2294: checking for AIX" >&5
-cat > conftest.$ac_ext <<EOF
-#line 2296 "configure"
+echo "configure:2295: checking for AIX" >&5
+cat > conftest.$ac_ext <<EOF
+#line 2297 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2319,9 +2320,9 @@
 
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2323: checking for GNU libc" >&5
-cat > conftest.$ac_ext <<EOF
-#line 2325 "configure"
+echo "configure:2324: checking for GNU libc" >&5
+cat > conftest.$ac_ext <<EOF
+#line 2326 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2333,7 +2334,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2355,7 +2356,7 @@
 
 
 cat > conftest.$ac_ext <<EOF
-#line 2359 "configure"
+#line 2360 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2367,7 +2368,7 @@
 #endif
 }
 EOF
-if { (eval echo configure:2371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2540,6 +2541,12 @@
 configure___ mail_use_lockf=no
 #endif
 
+#ifdef MAIL_USE_LOCKING
+configure___ mail_use_locking=yes
+#else
+configure___ mail_use_locking=no
+#endif
+
 #ifdef HAVE_WIN32_PROCESSES
 configure___ win32_processes=yes
 #else
@@ -2557,6 +2564,12 @@
 test "$extra_verbose" = "yes" && \
   for var in libs_machine libs_system libs_termcap libs_standard   objects_machine objects_system c_switch_machine c_switch_system   ld_switch_machine ld_switch_system unexec ld_switch_shared   ld lib_gcc ld_text_start_addr start_files ordinary_link   have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo ""
 
+case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ;
+	mingw_include=`eval "dirname $mingw_include"` ;
+	mingw_include="-I$mingw_include/../include/mingw32" ;
+	c_switch_system="$c_switch_system $mingw_include" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"$mingw_include\" to \$c_switch_system"; fi ;;
+esac
+
 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
 
 test "$__DECC" = "yes" && c_switch_site="$c_switch_site -std" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"-std\" to \$c_switch_site"; fi
@@ -2641,7 +2654,7 @@
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2645: checking for dynodump" >&5
+echo "configure:2658: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2679,12 +2692,12 @@
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2683: checking for terminateAndUnload in -lC" >&5
+echo "configure:2696: checking for terminateAndUnload in -lC" >&5
 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lC "
 cat > conftest.$ac_ext <<EOF
-#line 2688 "configure"
+#line 2701 "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
@@ -2695,7 +2708,7 @@
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2799,7 +2812,7 @@
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2803: checking "for runtime libraries flag"" >&5
+echo "configure:2816: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -2821,14 +2834,14 @@
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 2825 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:2832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+#line 2838 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -2930,10 +2943,10 @@
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:2934: checking for malloc_get_state" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2937 "configure"
+echo "configure:2947: checking for malloc_get_state" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2950 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -2956,7 +2969,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_get_state=yes"
 else
@@ -2976,10 +2989,10 @@
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:2980: checking for malloc_set_state" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 2983 "configure"
+echo "configure:2993: checking for malloc_set_state" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 2996 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3002,7 +3015,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_set_state=yes"
 else
@@ -3022,16 +3035,16 @@
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3026: checking whether __after_morecore_hook exists" >&5
-cat > conftest.$ac_ext <<EOF
-#line 3028 "configure"
+echo "configure:3039: checking whether __after_morecore_hook exists" >&5
+cat > conftest.$ac_ext <<EOF
+#line 3041 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -3090,7 +3103,7 @@
 # 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:3094: checking for $ac_word" >&5
+echo "configure:3107: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3145,7 +3158,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:3149: checking for a BSD compatible install" >&5
+echo "configure:3162: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS=":"
@@ -3199,7 +3212,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:3203: checking for $ac_word" >&5
+echo "configure:3216: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3231,15 +3244,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3235: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3238 "configure"
+echo "configure:3248: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3251 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3272,15 +3285,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3276: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3279 "configure"
+echo "configure:3289: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3292 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3313,15 +3326,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3317: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3320 "configure"
+echo "configure:3330: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3333 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3351,10 +3364,10 @@
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3355: checking for sys/wait.h that is POSIX.1 compatible" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3358 "configure"
+echo "configure:3368: checking for sys/wait.h that is POSIX.1 compatible" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3371 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3370,7 +3383,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3394,10 +3407,10 @@
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3398: checking for ANSI C header files" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3401 "configure"
+echo "configure:3411: checking for ANSI C header files" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3414 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3405,7 +3418,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3422,7 +3435,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 3426 "configure"
+#line 3439 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3440,7 +3453,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 3444 "configure"
+#line 3457 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3458,7 +3471,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 3462 "configure"
+#line 3475 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3469,7 +3482,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:3473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3495,10 +3508,10 @@
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3499: checking whether time.h and sys/time.h may both be included" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3502 "configure"
+echo "configure:3512: checking whether time.h and sys/time.h may both be included" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3515 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3507,7 +3520,7 @@
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3531,10 +3544,10 @@
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3535: checking for sys_siglist declaration in signal.h or unistd.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3538 "configure"
+echo "configure:3548: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3551 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3546,7 +3559,7 @@
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3571,9 +3584,9 @@
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3575: checking for struct utimbuf" >&5
-cat > conftest.$ac_ext <<EOF
-#line 3577 "configure"
+echo "configure:3588: checking for struct utimbuf" >&5
+cat > conftest.$ac_ext <<EOF
+#line 3590 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3592,7 +3605,7 @@
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3609: \"$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
@@ -3612,10 +3625,10 @@
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3616: checking return type of signal handlers" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3619 "configure"
+echo "configure:3629: checking return type of signal handlers" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3632 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3632,7 +3645,7 @@
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3654,10 +3667,10 @@
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3658: checking for size_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3661 "configure"
+echo "configure:3671: checking for size_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3674 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3688,10 +3701,10 @@
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3692: checking for pid_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3695 "configure"
+echo "configure:3705: checking for pid_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3708 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3722,10 +3735,10 @@
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3726: checking for uid_t in sys/types.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3729 "configure"
+echo "configure:3739: checking for uid_t in sys/types.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3742 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3761,10 +3774,10 @@
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3765: checking for mode_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3768 "configure"
+echo "configure:3778: checking for mode_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3781 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3795,10 +3808,10 @@
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3799: checking for off_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3802 "configure"
+echo "configure:3812: checking for off_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3815 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3829,10 +3842,10 @@
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3833: checking for ssize_t" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3836 "configure"
+echo "configure:3846: checking for ssize_t" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3849 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3864,9 +3877,9 @@
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3868: checking for struct timeval" >&5
-cat > conftest.$ac_ext <<EOF
-#line 3870 "configure"
+echo "configure:3881: checking for struct timeval" >&5
+cat > conftest.$ac_ext <<EOF
+#line 3883 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3882,7 +3895,7 @@
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3904,10 +3917,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:3908: checking whether struct tm is in sys/time.h or time.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3911 "configure"
+echo "configure:3921: checking whether struct tm is in sys/time.h or time.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3924 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3915,7 +3928,7 @@
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -3939,10 +3952,10 @@
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3943: checking for tm_zone in struct tm" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3946 "configure"
+echo "configure:3956: checking for tm_zone in struct tm" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3959 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -3950,7 +3963,7 @@
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:3954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -3973,10 +3986,10 @@
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3977: checking for tzname" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3980 "configure"
+echo "configure:3990: checking for tzname" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 3993 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -3986,7 +3999,7 @@
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:3990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4012,10 +4025,10 @@
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4016: checking for working const" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4019 "configure"
+echo "configure:4029: checking for working const" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4032 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4064,7 +4077,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4089,7 +4102,7 @@
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4093: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4106: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4114,12 +4127,12 @@
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4118: checking whether byte ordering is bigendian" >&5
+echo "configure:4131: 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 4123 "configure"
+#line 4136 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4130,11 +4143,11 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4147: \"$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 4138 "configure"
+#line 4151 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4145,7 +4158,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4162,7 +4175,7 @@
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4166 "configure"
+#line 4179 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4175,7 +4188,7 @@
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4202,10 +4215,10 @@
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4206: checking size of short" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4209 "configure"
+echo "configure:4219: checking size of short" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4222 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4216,7 +4229,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:4220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4244,10 +4257,10 @@
   exit 1
 fi
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:4248: checking size of int" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4251 "configure"
+echo "configure:4261: checking size of int" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4264 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4258,7 +4271,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:4262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4280,10 +4293,10 @@
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4284: checking size of long" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4287 "configure"
+echo "configure:4297: checking size of long" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4300 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4294,7 +4307,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:4298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4316,10 +4329,10 @@
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4320: checking size of long long" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4323 "configure"
+echo "configure:4333: checking size of long long" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4336 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4330,7 +4343,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4347: \"$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
@@ -4352,10 +4365,10 @@
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4356: checking size of void *" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4359 "configure"
+echo "configure:4369: checking size of void *" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4372 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4366,7 +4379,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:4370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4383: \"$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
@@ -4389,7 +4402,7 @@
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4393: checking for long file names" >&5
+echo "configure:4406: 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:
@@ -4435,10 +4448,10 @@
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4439: checking for sin" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 4442 "configure"
+echo "configure:4452: checking for sin" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4455 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4461,7 +4474,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_sin=yes"
 else
@@ -4479,12 +4492,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4483: checking for sin in -lm" >&5
+echo "configure:4496: 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 4488 "configure"
+#line 4501 "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
@@ -4495,7 +4508,7 @@
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4539,14 +4552,14 @@
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4543 "configure"
+#line 4556 "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:4550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_INVERSE_HYPERBOLIC
@@ -4563,37 +4576,115 @@
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4567: checking type of mail spool file locking" >&5
+echo "configure:4580: checking type of mail spool file locking" >&5
+for ac_func in lockf flock
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:4584: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 4587 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  { test "$extra_verbose" = "yes" && cat << EOF
+    Defining $ac_tr_func
+EOF
+cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+}
+ 
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
+test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
 if   test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF
-    Defining REAL_MAIL_USE_LOCKF
-EOF
-cat >> confdefs.h <<\EOF
-#define REAL_MAIL_USE_LOCKF 1
+    Defining MAIL_LOCK_LOCKF
+EOF
+cat >> confdefs.h <<\EOF
+#define MAIL_LOCK_LOCKF 1
 EOF
 }
 
 elif test "$mail_locking" = "flock"; then { test "$extra_verbose" = "yes" && cat << \EOF
-    Defining REAL_MAIL_USE_FLOCK
-EOF
-cat >> confdefs.h <<\EOF
-#define REAL_MAIL_USE_FLOCK 1
-EOF
-}
-
-else mail_locking="dot-locking"
-fi
+    Defining MAIL_LOCK_FLOCK
+EOF
+cat >> confdefs.h <<\EOF
+#define MAIL_LOCK_FLOCK 1
+EOF
+}
+
+elif test "$mail_locking" = "locking"; then { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining MAIL_LOCK_LOCKING
+EOF
+cat >> confdefs.h <<\EOF
+#define MAIL_LOCK_LOCKING 1
+EOF
+}
+
+else mail_locking="dot-locking"; { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining MAIL_LOCK_DOT
+EOF
+cat >> confdefs.h <<\EOF
+#define MAIL_LOCK_DOT 1
+EOF
+}
+
+fi
+test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
+  { echo "Error:" "lockf mail locking requested but not available." >&2; exit 1; }
+test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
+  { echo "Error:" "flock mail locking requested but not available." >&2; exit 1; }
+test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
+  { echo "Error:" "locking mail locking requested but not available." >&2; exit 1; }
 
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4592: checking for cma_open in -lpthreads" >&5
+echo "configure:4683: 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 4597 "configure"
+#line 4688 "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
@@ -4604,7 +4695,7 @@
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4640,7 +4731,7 @@
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4644: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4735: 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;
@@ -4651,7 +4742,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:4655: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4746: 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 ;;
@@ -4661,7 +4752,7 @@
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4665: checking "for specified window system"" >&5
+echo "configure:4756: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4694,7 +4785,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:4698: checking for X" >&5
+echo "configure:4789: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4754,12 +4845,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4758 "configure"
+#line 4849 "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:4763: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4828,14 +4919,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4832 "configure"
+#line 4923 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -4944,17 +5035,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:4948: checking whether -R must be followed by a space" >&5
+echo "configure:5039: 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 4951 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:4958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+#line 5042 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:5049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -4970,14 +5061,14 @@
       else
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
 	cat > conftest.$ac_ext <<EOF
-#line 4974 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:4981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+#line 5065 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5013,12 +5104,12 @@
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5017: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5108: 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 5022 "configure"
+#line 5113 "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
@@ -5029,7 +5120,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5053,12 +5144,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:5057: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5148: 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 5062 "configure"
+#line 5153 "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
@@ -5069,7 +5160,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5098,10 +5189,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:5102: checking for gethostbyname" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5105 "configure"
+echo "configure:5193: checking for gethostbyname" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5196 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5124,7 +5215,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -5145,12 +5236,12 @@
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5149: checking for gethostbyname in -lnsl" >&5
+echo "configure:5240: 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 5154 "configure"
+#line 5245 "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
@@ -5161,7 +5252,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5191,10 +5282,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:5195: checking for connect" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5198 "configure"
+echo "configure:5286: checking for connect" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5289 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5217,7 +5308,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -5240,12 +5331,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:5244: checking "$xe_msg_checking"" >&5
+echo "configure:5335: 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 5249 "configure"
+#line 5340 "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
@@ -5256,7 +5347,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5280,10 +5371,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:5284: checking for remove" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5287 "configure"
+echo "configure:5375: checking for remove" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5378 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5306,7 +5397,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -5327,12 +5418,12 @@
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5331: checking for remove in -lposix" >&5
+echo "configure:5422: 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 5336 "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
@@ -5343,7 +5434,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5367,10 +5458,10 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5371: checking for shmat" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5374 "configure"
+echo "configure:5462: checking for shmat" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5465 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5393,7 +5484,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -5414,12 +5505,12 @@
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5418: checking for shmat in -lipc" >&5
+echo "configure:5509: 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 5423 "configure"
+#line 5514 "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
@@ -5430,7 +5521,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5466,12 +5557,12 @@
 xe_msg_checking="for IceConnectionNumber in -lICE"
 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:5470: checking "$xe_msg_checking"" >&5
+echo "configure:5561: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lICE $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5475 "configure"
+#line 5566 "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
@@ -5482,7 +5573,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5651,7 +5742,7 @@
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5655: checking for X defines extracted by xmkmf" >&5
+echo "configure:5746: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5683,15 +5774,15 @@
 
     ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:5687: checking for X11/Intrinsic.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5690 "configure"
+echo "configure:5778: checking for X11/Intrinsic.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5781 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5715,12 +5806,12 @@
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5719: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5810: 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 5724 "configure"
+#line 5815 "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
@@ -5731,7 +5822,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5756,12 +5847,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:5760: checking "$xe_msg_checking"" >&5
+echo "configure:5851: 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 5765 "configure"
+#line 5856 "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
@@ -5772,7 +5863,7 @@
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5799,12 +5890,12 @@
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5803: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5894: 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 5808 "configure"
+#line 5899 "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
@@ -5815,7 +5906,7 @@
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5838,12 +5929,12 @@
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5842: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5933: 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 5847 "configure"
+#line 5938 "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
@@ -5854,7 +5945,7 @@
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5877,14 +5968,14 @@
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:5881: checking the version of X11 being used" >&5
+echo "configure:5972: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 5883 "configure"
+#line 5974 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:5888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:5979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -5909,15 +6000,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5913: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 5916 "configure"
+echo "configure:6004: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6007 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6012: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5948,7 +6039,7 @@
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:5952: checking for XFree86" >&5
+echo "configure:6043: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
 	  -f "/etc/X11/XF86Config" -o \
@@ -5968,12 +6059,12 @@
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:5972: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:6063: 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 5977 "configure"
+#line 6068 "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
@@ -5984,7 +6075,7 @@
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:5988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6023,19 +6114,19 @@
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6027: checking for main in -lXbsd" >&5
+echo "configure:6118: 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 6032 "configure"
+#line 6123 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6072,22 +6163,22 @@
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6076: checking for MS-Windows" >&5
+echo "configure:6167: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6079: checking for main in -lgdi32" >&5
+echo "configure:6170: 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 6084 "configure"
+#line 6175 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6153,12 +6244,12 @@
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6157 "configure"
+#line 6248 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MSG_SELECT
@@ -6234,7 +6325,7 @@
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6238: checking for WM_COMMAND option" >&5;
+echo "configure:6329: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6249,15 +6340,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:6253: checking for X11/Xauth.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6256 "configure"
+echo "configure:6344: checking for X11/Xauth.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6347 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6280,12 +6371,12 @@
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6284: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6375: 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 6289 "configure"
+#line 6380 "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
@@ -6296,7 +6387,7 @@
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6341,15 +6432,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:6345: checking for ${dir}tt_c.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6348 "configure"
+echo "configure:6436: checking for ${dir}tt_c.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6439 "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:6353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6385,12 +6476,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:6389: checking "$xe_msg_checking"" >&5
+echo "configure:6480: 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 6394 "configure"
+#line 6485 "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
@@ -6401,7 +6492,7 @@
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6458,15 +6549,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:6462: checking for Dt/Dt.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6465 "configure"
+echo "configure:6553: checking for Dt/Dt.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6556 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6489,12 +6580,12 @@
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6493: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6584: 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 6498 "configure"
+#line 6589 "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
@@ -6505,7 +6596,7 @@
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:6509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6574,7 +6665,7 @@
 fi
 
 echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6578: checking if drag and drop API is needed" >&5
+echo "configure:6669: checking if drag and drop API is needed" >&5
 if test "$with_dragndrop" != "no" ; then
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
@@ -6595,18 +6686,18 @@
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:6599: checking for LDAP" >&5
+echo "configure:6690: 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:6602: checking for ldap.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6605 "configure"
+echo "configure:6693: checking for ldap.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6696 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6629,15 +6720,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:6633: checking for lber.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6636 "configure"
+echo "configure:6724: checking for lber.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6727 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6732: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6661,12 +6752,12 @@
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6665: checking for ldap_search in -lldap" >&5
+echo "configure:6756: checking for ldap_search in -lldap" >&5
 ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap "
 cat > conftest.$ac_ext <<EOF
-#line 6670 "configure"
+#line 6761 "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
@@ -6677,7 +6768,7 @@
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:6681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6702,12 +6793,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:6706: checking "$xe_msg_checking"" >&5
+echo "configure:6797: 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 6711 "configure"
+#line 6802 "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
@@ -6718,7 +6809,7 @@
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6743,12 +6834,12 @@
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6747: checking "$xe_msg_checking"" >&5
+echo "configure:6838: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb"
 cat > conftest.$ac_ext <<EOF
-#line 6752 "configure"
+#line 6843 "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
@@ -6759,7 +6850,7 @@
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6784,12 +6875,12 @@
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6788: checking "$xe_msg_checking"" >&5
+echo "configure:6879: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb -ldes"
 cat > conftest.$ac_ext <<EOF
-#line 6793 "configure"
+#line 6884 "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
@@ -6800,7 +6891,7 @@
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6851,10 +6942,10 @@
   for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6855: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 6858 "configure"
+echo "configure:6946: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 6949 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6877,7 +6968,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:6881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6909,15 +7000,15 @@
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:6913: checking for graphics libraries" >&5
+echo "configure:7004: checking for graphics libraries" >&5
 
     xpm_problem=""
   if test -z "$with_xpm"; then
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:6918: checking for Xpm - no older than 3.4f" >&5
+echo "configure:7009: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6921 "configure"
+#line 7012 "configure"
 #include "confdefs.h"
 #include <X11/xpm.h>
     int main(int c, char **v) {
@@ -6925,7 +7016,7 @@
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:6929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; xpm_status=$?;
       if test "$xpm_status" = "0"; then
@@ -6967,17 +7058,17 @@
 
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:6971: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:7062: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6974 "configure"
+#line 7065 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:6981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -7003,15 +7094,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:7007: checking for compface.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7010 "configure"
+echo "configure:7098: checking for compface.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7101 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7015: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7034,12 +7125,12 @@
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7038: checking for UnGenFace in -lcompface" >&5
+echo "configure:7129: 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 7043 "configure"
+#line 7134 "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
@@ -7050,7 +7141,7 @@
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:7054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7102,12 +7193,12 @@
       if test "$with_png $with_tiff" != "no no"; then
     
 echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:7106: checking for inflate in -lc" >&5
+echo "configure:7197: checking for inflate in -lc" >&5
 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 7111 "configure"
+#line 7202 "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
@@ -7118,7 +7209,7 @@
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7137,12 +7228,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7141: checking for inflate in -lz" >&5
+echo "configure:7232: checking for inflate in -lz" >&5
 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lz "
 cat > conftest.$ac_ext <<EOF
-#line 7146 "configure"
+#line 7237 "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
@@ -7153,7 +7244,7 @@
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7172,12 +7263,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7176: checking for inflate in -lgz" >&5
+echo "configure:7267: checking for inflate in -lgz" >&5
 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgz "
 cat > conftest.$ac_ext <<EOF
-#line 7181 "configure"
+#line 7272 "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
@@ -7188,7 +7279,7 @@
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7218,15 +7309,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:7222: checking for jpeglib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7225 "configure"
+echo "configure:7313: checking for jpeglib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7316 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7249,12 +7340,12 @@
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7253: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7344: 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 7258 "configure"
+#line 7349 "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
@@ -7265,7 +7356,7 @@
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7301,10 +7392,10 @@
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7305: checking for pow" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7308 "configure"
+echo "configure:7396: checking for pow" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7399 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -7327,7 +7418,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_pow=yes"
 else
@@ -7348,15 +7439,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:7352: checking for png.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7355 "configure"
+echo "configure:7443: checking for png.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7446 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7379,12 +7470,12 @@
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7383: checking for png_read_image in -lpng" >&5
+echo "configure:7474: checking for png_read_image in -lpng" >&5
 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng "
 cat > conftest.$ac_ext <<EOF
-#line 7388 "configure"
+#line 7479 "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
@@ -7395,7 +7486,7 @@
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:7399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7418,10 +7509,10 @@
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7422: checking for workable png version information" >&5
+echo "configure:7513: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 7425 "configure"
+#line 7516 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -7429,7 +7520,7 @@
     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; png_status=$?;
       if test "$png_status" = "0"; then
@@ -7472,15 +7563,15 @@
 
     test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6
-echo "configure:7476: checking for tiffio.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7479 "configure"
+echo "configure:7567: checking for tiffio.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7570 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7503,12 +7594,12 @@
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7507: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:7598: checking for TIFFClientOpen in -ltiff" >&5
 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff "
 cat > conftest.$ac_ext <<EOF
-#line 7512 "configure"
+#line 7603 "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
@@ -7519,7 +7610,7 @@
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7558,10 +7649,10 @@
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7562: checking for X11 graphics libraries" >&5
+echo "configure:7653: checking for X11 graphics libraries" >&5
 
   echo "checking for the Athena widgets" 1>&6
-echo "configure:7565: checking for the Athena widgets" >&5
+echo "configure:7656: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")	athena_variant=Xaw	athena_3d=no  ;;
@@ -7575,12 +7666,12 @@
     if test "$athena_3d" = "no"; then
     
 echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7579: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:7670: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 7584 "configure"
+#line 7675 "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
@@ -7591,7 +7682,7 @@
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:7595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7607,12 +7698,12 @@
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7611: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:7702: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 7616 "configure"
+#line 7707 "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
@@ -7623,7 +7714,7 @@
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7654,12 +7745,12 @@
   else
         
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7658: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:7749: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 7663 "configure"
+#line 7754 "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
@@ -7670,7 +7761,7 @@
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7688,12 +7779,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6
-echo "configure:7692: checking for threeDClassRec in -lXaw" >&5
+echo "configure:7783: checking for threeDClassRec in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 7697 "configure"
+#line 7788 "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
@@ -7704,7 +7795,7 @@
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7718,7 +7809,7 @@
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  athena_lib=Xaw; 
+  athena_lib=Xaw;
           echo "configure: warning: "Assuming that libXaw is actually $athena_variant."" 1>&2;
         
 else
@@ -7735,15 +7826,15 @@
     if test "$athena_3d" = "no"; then
     ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:7739: checking for X11/Xaw/ThreeD.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7742 "configure"
+echo "configure:7830: checking for X11/Xaw/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7833 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7763,15 +7854,15 @@
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6
-echo "configure:7767: checking for X11/Xaw/XawInit.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7770 "configure"
+echo "configure:7858: checking for X11/Xaw/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7861 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7797,15 +7888,15 @@
   else
             ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:7801: checking for X11/$athena_variant/XawInit.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7804 "configure"
+echo "configure:7892: checking for X11/$athena_variant/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7895 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7822,15 +7913,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:7826: checking for X11/$athena_variant/ThreeD.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7829 "configure"
+echo "configure:7917: checking for X11/$athena_variant/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7920 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7925: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7858,15 +7949,15 @@
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:7862: checking for X11/Xaw3d/XawInit.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7865 "configure"
+echo "configure:7953: checking for X11/Xaw3d/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7956 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7870: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7883,15 +7974,15 @@
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:7887: checking for X11/Xaw3d/ThreeD.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7890 "configure"
+echo "configure:7978: checking for X11/Xaw3d/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7981 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7923,15 +8014,15 @@
             if test -z "$athena_h_path"; then
       ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:7927: checking for X11/Xaw/ThreeD.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7930 "configure"
+echo "configure:8018: checking for X11/Xaw/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8021 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7966,15 +8057,15 @@
 
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:7970: checking for Xm/Xm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 7973 "configure"
+echo "configure:8061: checking for Xm/Xm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8064 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8069: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7991,12 +8082,12 @@
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:7995: checking for XmStringFree in -lXm" >&5
+echo "configure:8086: 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 8000 "configure"
+#line 8091 "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
@@ -8007,7 +8098,7 @@
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:8011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8036,9 +8127,9 @@
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:8040: checking for Lesstif" >&5
+echo "configure:8131: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 8042 "configure"
+#line 8133 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -8371,7 +8462,7 @@
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:8375: checking for Mule-related features" >&5
+echo "configure:8466: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -8396,15 +8487,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8400: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8403 "configure"
+echo "configure:8491: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8494 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8435,12 +8526,12 @@
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:8439: checking for strerror in -lintl" >&5
+echo "configure:8530: 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 8444 "configure"
+#line 8535 "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
@@ -8451,7 +8542,7 @@
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:8455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8484,18 +8575,18 @@
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:8488: checking for Mule input methods" >&5
+echo "configure:8579: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:8491: checking for XIM" >&5
+echo "configure:8582: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:8494: checking for XOpenIM in -lX11" >&5
+echo "configure:8585: checking for XOpenIM in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 8499 "configure"
+#line 8590 "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
@@ -8506,7 +8597,7 @@
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:8510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8530,12 +8621,12 @@
         if test "$have_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:8534: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:8625: 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 8539 "configure"
+#line 8630 "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
@@ -8546,7 +8637,7 @@
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:8550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8611,15 +8702,15 @@
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:8615: checking for XFontSet" >&5
+echo "configure:8706: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:8618: checking for XmbDrawString in -lX11" >&5
+echo "configure:8709: 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 8623 "configure"
+#line 8714 "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
@@ -8630,7 +8721,7 @@
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:8634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8670,15 +8761,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:8674: checking for wnn/jllib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8677 "configure"
+echo "configure:8765: checking for wnn/jllib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8768 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8703,10 +8794,10 @@
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8707: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 8710 "configure"
+echo "configure:8798: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8801 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8729,7 +8820,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:8733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8758,12 +8849,12 @@
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:8762: checking for crypt in -lcrypt" >&5
+echo "configure:8853: 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 8767 "configure"
+#line 8858 "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
@@ -8774,7 +8865,7 @@
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:8778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8809,12 +8900,12 @@
     if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
     
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:8813: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:8904: 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 8818 "configure"
+#line 8909 "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
@@ -8825,7 +8916,7 @@
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8843,12 +8934,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:8847: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:8938: checking for jl_dic_list_e in -lwnn4" >&5
 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn4 "
 cat > conftest.$ac_ext <<EOF
-#line 8852 "configure"
+#line 8943 "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
@@ -8859,7 +8950,7 @@
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8877,12 +8968,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:8881: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:8972: checking for jl_dic_list_e in -lwnn6" >&5
 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6 "
 cat > conftest.$ac_ext <<EOF
-#line 8886 "configure"
+#line 8977 "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
@@ -8893,7 +8984,7 @@
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8911,12 +9002,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:8915: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:9006: checking for dic_list_e in -lwnn6_fromsrc" >&5
 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6_fromsrc "
 cat > conftest.$ac_ext <<EOF
-#line 8920 "configure"
+#line 9011 "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
@@ -8927,7 +9018,7 @@
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8975,12 +9066,12 @@
     if test "$with_wnn6" != "no"; then
       
 echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:8979: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:9070: checking for jl_fi_dic_list in -l$libwnn" >&5
 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$libwnn "
 cat > conftest.$ac_ext <<EOF
-#line 8984 "configure"
+#line 9075 "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
@@ -8991,7 +9082,7 @@
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:8995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9026,15 +9117,15 @@
   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:9030: checking for canna/jrkanji.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9033 "configure"
+echo "configure:9121: checking for canna/jrkanji.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9124 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9061,15 +9152,15 @@
     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:9065: checking for canna/jrkanji.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9068 "configure"
+echo "configure:9156: checking for canna/jrkanji.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9159 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9097,15 +9188,15 @@
 
   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:9101: checking for canna/RK.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9104 "configure"
+echo "configure:9192: checking for canna/RK.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9195 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9128,12 +9219,12 @@
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:9132: checking for RkBgnBun in -lRKC" >&5
+echo "configure:9223: 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 9137 "configure"
+#line 9228 "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
@@ -9144,7 +9235,7 @@
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:9148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9167,12 +9258,12 @@
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:9171: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:9262: 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 9176 "configure"
+#line 9267 "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
@@ -9183,7 +9274,7 @@
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:9187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9232,12 +9323,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:9236: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:9327: 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 9241 "configure"
+#line 9332 "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
@@ -9248,7 +9339,7 @@
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:9252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9331,13 +9422,13 @@
 
 fi
 
-for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf
+for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9338: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9341 "configure"
+echo "configure:9429: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9432 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9360,7 +9451,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9401,10 +9492,10 @@
       * ) for ac_func in realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9405: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9408 "configure"
+echo "configure:9496: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9499 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9427,7 +9518,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9463,10 +9554,10 @@
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9467: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9470 "configure"
+echo "configure:9558: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9561 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9489,7 +9580,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9525,12 +9616,12 @@
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:9529: checking for kstat_open in -lkstat" >&5
+echo "configure:9620: 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 9534 "configure"
+#line 9625 "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
@@ -9541,7 +9632,7 @@
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:9545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9575,12 +9666,12 @@
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:9579: checking for kvm_read in -lkvm" >&5
+echo "configure:9670: 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 9584 "configure"
+#line 9675 "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
@@ -9591,7 +9682,7 @@
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:9595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9625,16 +9716,16 @@
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:9629: checking whether netdb declares h_errno" >&5
-cat > conftest.$ac_ext <<EOF
-#line 9631 "configure"
+echo "configure:9720: checking whether netdb declares h_errno" >&5
+cat > conftest.$ac_ext <<EOF
+#line 9722 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:9638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -9654,16 +9745,16 @@
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:9658: checking for sigsetjmp" >&5
-cat > conftest.$ac_ext <<EOF
-#line 9660 "configure"
+echo "configure:9749: checking for sigsetjmp" >&5
+cat > conftest.$ac_ext <<EOF
+#line 9751 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:9667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9758: \"$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
@@ -9683,11 +9774,11 @@
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:9687: checking whether localtime caches TZ" >&5
+echo "configure:9778: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 9691 "configure"
+#line 9782 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -9722,7 +9813,7 @@
   exit (0);
 }
 EOF
-if { (eval echo configure:9726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -9752,9 +9843,9 @@
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:9756: checking whether gettimeofday accepts one or two arguments" >&5
-cat > conftest.$ac_ext <<EOF
-#line 9758 "configure"
+echo "configure:9847: checking whether gettimeofday accepts one or two arguments" >&5
+cat > conftest.$ac_ext <<EOF
+#line 9849 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -9776,7 +9867,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""two" 1>&6
 else
@@ -9798,19 +9889,19 @@
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:9802: checking for inline" >&5
+echo "configure:9893: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 9807 "configure"
+#line 9898 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:9814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -9860,17 +9951,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:9864: checking for working alloca.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9867 "configure"
+echo "configure:9955: checking for working alloca.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9958 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:9874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -9894,10 +9985,10 @@
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:9898: checking for alloca" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9901 "configure"
+echo "configure:9989: checking for alloca" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9992 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -9925,7 +10016,7 @@
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:9929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -9964,10 +10055,10 @@
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:9968: checking whether alloca needs Cray hooks" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9971 "configure"
+echo "configure:10059: checking whether alloca needs Cray hooks" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10062 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -9991,10 +10082,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:9995: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9998 "configure"
+echo "configure:10086: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10089 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10017,7 +10108,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -10047,10 +10138,10 @@
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:10051: checking stack direction for C alloca" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10054 "configure"
+echo "configure:10142: checking stack direction for C alloca" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10145 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -10069,7 +10160,7 @@
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:10073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -10098,15 +10189,15 @@
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:10102: checking for vfork.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10105 "configure"
+echo "configure:10193: checking for vfork.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10196 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10110: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10134,10 +10225,10 @@
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:10138: checking for working vfork" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10141 "configure"
+echo "configure:10229: checking for working vfork" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10232 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -10232,7 +10323,7 @@
   }
 }
 EOF
-if { (eval echo configure:10236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
@@ -10258,10 +10349,10 @@
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:10262: checking for working strcoll" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10265 "configure"
+echo "configure:10353: checking for working strcoll" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10356 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -10271,7 +10362,7 @@
 	strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:10275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
@@ -10299,10 +10390,10 @@
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10303: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10306 "configure"
+echo "configure:10394: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10397 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10325,7 +10416,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -10353,10 +10444,10 @@
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:10357: checking whether getpgrp takes no argument" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10360 "configure"
+echo "configure:10448: checking whether getpgrp takes no argument" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10451 "configure"
 #include "confdefs.h"
 
 /*
@@ -10411,7 +10502,7 @@
 }
 
 EOF
-if { (eval echo configure:10415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
@@ -10438,10 +10529,10 @@
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10442: checking for working mmap" >&5
+echo "configure:10533: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 10445 "configure"
+#line 10536 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -10474,7 +10565,7 @@
   return 1;
 }
 EOF
-if { (eval echo configure:10478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -10509,15 +10600,15 @@
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:10513: checking for termios.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10516 "configure"
+echo "configure:10604: checking for termios.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10607 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10612: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10560,15 +10651,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:10564: checking for termio.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10567 "configure"
+echo "configure:10655: checking for termio.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10658 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10600,10 +10691,10 @@
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:10604: checking for socket" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10607 "configure"
+echo "configure:10695: checking for socket" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10698 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -10626,7 +10717,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -10641,15 +10732,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:10645: checking for netinet/in.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10648 "configure"
+echo "configure:10736: checking for netinet/in.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10739 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10666,15 +10757,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:10670: checking for arpa/inet.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10673 "configure"
+echo "configure:10761: checking for arpa/inet.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10764 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10699,9 +10790,9 @@
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:10703: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:10794: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10705 "configure"
+#line 10796 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10712,7 +10803,7 @@
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:10716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -10730,9 +10821,9 @@
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:10734: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:10825: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10736 "configure"
+#line 10827 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10742,7 +10833,7 @@
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:10746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
@@ -10773,10 +10864,10 @@
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:10777: checking for msgget" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10780 "configure"
+echo "configure:10868: checking for msgget" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10871 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -10799,7 +10890,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_msgget=yes"
 else
@@ -10814,15 +10905,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:10818: checking for sys/ipc.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10821 "configure"
+echo "configure:10909: checking for sys/ipc.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10912 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10917: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10839,15 +10930,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:10843: checking for sys/msg.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10846 "configure"
+echo "configure:10934: checking for sys/msg.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10937 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10885,15 +10976,15 @@
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:10889: checking for dirent.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10892 "configure"
+echo "configure:10980: checking for dirent.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10983 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10920,15 +11011,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:10924: checking for sys/dir.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10927 "configure"
+echo "configure:11015: checking for sys/dir.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11018 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10961,15 +11052,15 @@
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:10965: checking for nlist.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10968 "configure"
+echo "configure:11056: checking for nlist.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11059 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10999,22 +11090,22 @@
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:11003: checking "for sound support"" >&5
+echo "configure:11094: checking "for sound support"" >&5
 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
 
 if test "$with_native_sound" != "no"; then
     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:11010: checking for multimedia/audio_device.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11013 "configure"
+echo "configure:11101: checking for multimedia/audio_device.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11104 "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:11018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11062,12 +11153,12 @@
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:11066: checking for ALopenport in -laudio" >&5
+echo "configure:11157: 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 11071 "configure"
+#line 11162 "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
@@ -11078,7 +11169,7 @@
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:11082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11109,12 +11200,12 @@
       if test -z "$native_sound_lib"; then
 	
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:11113: checking for AOpenAudio in -lAlib" >&5
+echo "configure:11204: 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 11118 "configure"
+#line 11209 "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
@@ -11125,7 +11216,7 @@
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:11129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11163,15 +11254,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:11167: checking for ${dir}/soundcard.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11170 "configure"
+echo "configure:11258: checking for ${dir}/soundcard.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11261 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11225,15 +11316,15 @@
 if test "$with_nas_sound" != "no"; then
   ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:11229: checking for audio/audiolib.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11232 "configure"
+echo "configure:11320: checking for audio/audiolib.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11323 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11251,12 +11342,12 @@
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:11255: checking for AuOpenServer in -laudio" >&5
+echo "configure:11346: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 11260 "configure"
+#line 11351 "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
@@ -11267,7 +11358,7 @@
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:11271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11306,7 +11397,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 11310 "configure"
+#line 11401 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -11337,7 +11428,7 @@
   # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:11341: checking for $ac_word" >&5
+echo "configure:11432: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
@@ -11366,10 +11457,10 @@
     c_switch_site="$c_switch_site `esd-config --cflags`" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
     LIBS="`esd-config --libs` $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"`esd-config --libs`\" to \$LIBS"; fi
     echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:11370: checking for esd_play_stream" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11373 "configure"
+echo "configure:11461: checking for esd_play_stream" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11464 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -11392,7 +11483,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:11396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_esd_play_stream=yes"
 else
@@ -11443,7 +11534,7 @@
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:11447: checking for TTY-related features" >&5
+echo "configure:11538: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -11459,12 +11550,12 @@
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:11463: checking for tgetent in -lncurses" >&5
+echo "configure:11554: 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 11468 "configure"
+#line 11559 "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
@@ -11475,7 +11566,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11508,15 +11599,15 @@
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11512: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11515 "configure"
+echo "configure:11603: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11606 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11538,15 +11629,15 @@
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:11542: checking for ncurses/term.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11545 "configure"
+echo "configure:11633: checking for ncurses/term.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11636 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11576,15 +11667,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:11580: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11583 "configure"
+echo "configure:11671: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11674 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11619,12 +11710,12 @@
 	for lib in curses termlib termcap; do
 	  
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:11623: checking for tgetent in -l$lib" >&5
+echo "configure:11714: 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 11628 "configure"
+#line 11719 "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
@@ -11635,7 +11726,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11666,12 +11757,12 @@
       else
 	
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:11670: checking for tgetent in -lcurses" >&5
+echo "configure:11761: 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 11675 "configure"
+#line 11766 "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
@@ -11682,7 +11773,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11700,12 +11791,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:11704: checking for tgetent in -ltermcap" >&5
+echo "configure:11795: 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 11709 "configure"
+#line 11800 "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
@@ -11716,7 +11807,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11764,15 +11855,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:11768: checking for gpm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11771 "configure"
+echo "configure:11859: checking for gpm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11862 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11795,12 +11886,12 @@
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:11799: checking for Gpm_Open in -lgpm" >&5
+echo "configure:11890: 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 11804 "configure"
+#line 11895 "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
@@ -11811,7 +11902,7 @@
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:11815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11861,20 +11952,20 @@
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:11865: checking for database support" >&5
+echo "configure:11956: checking for database support" >&5
 
 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
   ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:11870: checking for ndbm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11873 "configure"
+echo "configure:11961: checking for ndbm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11964 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11904,12 +11995,12 @@
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:11908: checking for dbm_open in -lgdbm" >&5
+echo "configure:11999: 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 11913 "configure"
+#line 12004 "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
@@ -11920,7 +12011,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11948,10 +12039,10 @@
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:11952: checking for dbm_open" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11955 "configure"
+echo "configure:12043: checking for dbm_open" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 12046 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -11974,7 +12065,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:11978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -11993,12 +12084,12 @@
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:11997: checking for dbm_open in -ldbm" >&5
+echo "configure:12088: 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 12002 "configure"
+#line 12093 "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
@@ -12009,7 +12100,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:12013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12050,10 +12141,10 @@
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:12054: checking for Berkeley db.h" >&5
+echo "configure:12145: checking for Berkeley db.h" >&5
   for path in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 12057 "configure"
+#line 12148 "configure"
 #include "confdefs.h"
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
@@ -12071,7 +12162,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:12075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -12087,9 +12178,9 @@
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:12091: checking for Berkeley DB version" >&5
+echo "configure:12182: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12093 "configure"
+#line 12184 "configure"
 #include "confdefs.h"
 #include <$db_h_path>
 #if DB_VERSION_MAJOR > 1
@@ -12108,10 +12199,10 @@
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:12112: checking for $dbfunc" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 12115 "configure"
+echo "configure:12203: checking for $dbfunc" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 12206 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -12134,7 +12225,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:12138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$dbfunc=yes"
 else
@@ -12153,12 +12244,12 @@
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:12157: checking for $dbfunc in -ldb" >&5
+echo "configure:12248: checking for $dbfunc in -ldb" >&5
 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<EOF
-#line 12162 "configure"
+#line 12253 "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
@@ -12169,7 +12260,7 @@
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:12173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12233,12 +12324,12 @@
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:12237: checking for SOCKSinit in -lsocks" >&5
+echo "configure:12328: 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 12242 "configure"
+#line 12333 "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
@@ -12249,7 +12340,7 @@
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:12253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12304,19 +12395,19 @@
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:12308: checking for module support" >&5
+echo "configure:12399: checking for module support" >&5
 
     ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:12312: checking for dlfcn.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 12315 "configure"
+echo "configure:12403: checking for dlfcn.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 12406 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12334,12 +12425,12 @@
   
     
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:12338: checking for dlopen in -ldl" >&5
+echo "configure:12429: 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 12343 "configure"
+#line 12434 "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
@@ -12350,7 +12441,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12369,12 +12460,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:12373: checking for dlopen in -lc" >&5
+echo "configure:12464: 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 12378 "configure"
+#line 12469 "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
@@ -12385,7 +12476,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12424,12 +12515,12 @@
   else
     
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:12428: checking for shl_load in -ldld" >&5
+echo "configure:12519: 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 12433 "configure"
+#line 12524 "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
@@ -12440,7 +12531,7 @@
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:12444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12467,12 +12558,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12471: checking for dld_init in -ldld" >&5
+echo "configure:12562: 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 12476 "configure"
+#line 12567 "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
@@ -12483,7 +12574,7 @@
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:12487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12528,7 +12619,7 @@
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:12532: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:12623: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -12556,9 +12647,9 @@
   XEGCC=yes
 else
   echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:12560: checking checking whether we are using GNU C" >&5
+echo "configure:12651: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 12562 "configure"
+#line 12653 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12580,7 +12671,7 @@
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:12584: checking how to produce PIC code" >&5
+echo "configure:12675: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -12673,18 +12764,18 @@
   
   # Check to make sure the dll_cflags actually works.
   echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:12677: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:12768: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 12681 "configure"
+#line 12772 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
     # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also
@@ -12715,7 +12806,7 @@
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:12719: checking if C compiler can produce shared libraries" >&5
+echo "configure:12810: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -12766,14 +12857,14 @@
   xe_libs=
   ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
   cat > conftest.$ac_ext <<EOF
-#line 12770 "configure"
+#line 12861 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -12798,7 +12889,7 @@
   if test "$XEGCC" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:12802: checking for ld used by GCC" >&5
+echo "configure:12893: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -12823,7 +12914,7 @@
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:12827: checking for GNU ld" >&5
+echo "configure:12918: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -12861,7 +12952,7 @@
 
 # Check to see if it really is or isn't GNU ld.
 echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:12865: checking if the linker is GNU ld" >&5
+echo "configure:12956: checking if the linker is GNU ld" >&5
 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   xe_gnu_ld=yes
@@ -12888,7 +12979,7 @@
   # OK - only NOW do we futz about with ld.
   # See if the linker supports building shared libraries.
   echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:12892: checking whether the linker supports shared libraries" >&5
+echo "configure:12983: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -13103,10 +13194,10 @@
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13107: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 13110 "configure"
+echo "configure:13198: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 13201 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -13129,7 +13220,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:13133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -13168,11 +13259,11 @@
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 13172 "configure"
+#line 13263 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:13176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:13267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -13313,13 +13404,25 @@
   echo ""
 fi
 
-if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
-  echo "creating src/gdbinit"; echo ""
-  echo "source $srcdir/src/gdbinit" > src/gdbinit
+
+if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
+  test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
+  echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
+fi
+
+if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
+  test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
+  echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
+fi
+
+if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
+  test "$extra_verbose" = "yes" && echo "creating TAGS"
+  echo "
+$srcdir/TAGS,include" > "TAGS"
 fi
 
 if test "$__SUNPRO_C" = "yes"; then
-  echo "creating .sbinit"; echo ""
+  test "$extra_verbose" = "yes" && echo "creating .sbinit"
   ( echo "# For use with Sun WorkShop's Source browser."
     echo "# See sbquery(1) and sbinit(4) for more information"
     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
@@ -13801,6 +13904,10 @@
 if test -n "$runpath"; then
   echo "  Runtime library search path:                            $runpath"
 fi
+if test "$have_xaw" = "yes"; then
+  echo "  Athena library to link:                                 $athena_lib"
+  echo "  Athena header include path:                             $athena_h_path"
+fi
 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
@@ -13884,13 +13991,11 @@
   lucid    ) echo "  Using Lucid scrollbars."     ;;
   motif    ) echo "  Using Motif scrollbars."     ;;
   athena   ) echo "  Using Athena scrollbars."    ;;
-  athena3d ) echo "  Using Athena-3d scrollbars." ;;
   msw ) echo "  Using MS-Windows scrollbars." ;;
 esac
 case "$with_widgets" in
   motif    ) echo "  Using Motif native widgets."     ;;
   athena   ) echo "  Using Athena native widgets."    ;;
-  athena3d ) echo "  Using Athena-3d native widgets." ;;
   msw ) echo "  Using MS-Windows native widgets." ;;
 esac
 case "$with_dialogs" in
@@ -13904,7 +14009,6 @@
     fi; fi
     ;;
   athena   ) echo "  Using Athena dialog boxes."    ;;
-  athena3d ) echo "  Using Athena-3d dialog boxes." ;;
   msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
 test "$with_modules" = "yes" && echo "  Compiling in dynamic shared object module support."
--- a/configure.in	Mon Aug 13 11:31:26 2007 +0200
+++ b/configure.in	Mon Aug 13 11:32:25 2007 +0200
@@ -673,9 +673,10 @@
 	  case "$val" in
 	    lockf )	val=lockf ;;
 	    flock )	val=flock ;;
-	    file )	val=file  ;;
+	    file | dot ) val=file  ;;
+	    locking )	val=locking  ;;
 	    * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
-  \`lockf', \`flock', or \`file'."]) ;;
+  \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;;
 	  esac
           eval "$opt=\"$val\""
         ;;
@@ -906,7 +907,7 @@
 dnl have stuck the source on a read-only partition.  Instead we
 dnl create it as an actual directory later on if it does not already
 dnl exist.
-for dir in lisp etc man info; do
+for dir in lisp etc man info tests; do
   if test ! -d "$dir" ; then
     echo Making symbolic link to "$srcdir/$dir"
     ${LN_S} "$srcdir/$dir" "$dir"
@@ -1769,8 +1770,10 @@
 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
 CPP_boolean_to_sh(TERMINFO, have_terminfo)
+dnl The MAIL_USE_xxx variables come from the s&m headers
 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
+CPP_boolean_to_sh(MAIL_USE_LOCKING, mail_use_locking)
 CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
 EOF
 
@@ -1793,6 +1796,13 @@
   ld lib_gcc ld_text_start_addr start_files ordinary_link
   have_terminfo mail_use_flock mail_use_lockf) && echo ""
 
+dnl Pick up mingw32 include path
+case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ;
+	mingw_include=`eval "dirname $mingw_include"` ;
+	mingw_include="-I$mingw_include/../include/mingw32" ;
+	XE_APPEND($mingw_include, c_switch_system) ;;
+esac
+
 dnl Non-ordinary link usually requires -lc
 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
 
@@ -2255,12 +2265,22 @@
 
 dnl Determine type of mail locking from configure args and s&m headers
 AC_CHECKING(type of mail spool file locking)
+AC_CHECK_FUNCS(lockf flock)
+dnl The mail_use_xxx variables are set according to the s&m headers.
 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 AC_DEFINE(REAL_MAIL_USE_LOCKF)
-elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK)
-else mail_locking="dot-locking"
+test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
+if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
+elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
+elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
+else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
 fi
+test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
+  XE_DIE("lockf mail locking requested but not available.")
+test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
+  XE_DIE("flock mail locking requested but not available.")
+test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
+  XE_DIE("locking mail locking requested but not available.")
 
 case "$opsys" in decosf*)
   AC_CHECK_LIB(pthreads, cma_open)
@@ -2899,7 +2919,7 @@
 
   dnl What in heck did the user actually want?
   case "$with_athena" in
-    dnl This is the default, old fashioned flat Athena. 
+    dnl This is the default, old fashioned flat Athena.
     "xaw" | "")	athena_variant=Xaw	athena_3d=no  ;;
     "3d")	athena_variant=Xaw3d	athena_3d=yes ;;
     "next")	athena_variant=neXtaw	athena_3d=yes ;;
@@ -2910,22 +2930,22 @@
 
   dnl Search for the Athena library...
   if test "$athena_3d" = "no"; then
-    AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb, 
+    AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
       [
         dnl Must not be a 3d library...
-        AC_CHECK_LIB($athena_variant, threeDClassRec, 
+        AC_CHECK_LIB($athena_variant, threeDClassRec,
           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
           athena_lib=$athena_variant)
-      ], 
+      ],
       AC_MSG_WARN("Could not find an Athena widget library."))
   else
     dnl The real configuration, need 3d library
     AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant,
       dnl OK, couldn't find it with a proper name, try the standard Athena lib
       dnl If that is 3d, presume the user asked for what they have installed.
-      AC_CHECK_LIB(Xaw, threeDClassRec, 
+      AC_CHECK_LIB(Xaw, threeDClassRec,
         [
-          athena_lib=Xaw; 
+          athena_lib=Xaw;
           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
         ],
         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
@@ -3243,7 +3263,7 @@
   XE_COMPUTE_RUNPATH()
 fi
 
-AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf)
+AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask)
 
 dnl realpath is buggy on linux, decosf and aix4
 
@@ -3914,15 +3934,32 @@
   echo ""
 fi
 
-dnl Create some auxiliary files
-if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
-  echo "creating src/gdbinit"; echo ""
-  echo "source $srcdir/src/gdbinit" > src/gdbinit
+dnl ----------------------------------------------
+dnl Create some auxiliary files for developers.
+dnl ----------------------------------------------
+
+dnl Create a .gdbinit useful for debugging XEmacs
+if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
+  test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
+  echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
+fi
+
+dnl Create a .dbxrc useful for debugging XEmacs
+if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
+  test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
+  echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
+fi
+
+dnl Create a useful TAGS file
+if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
+  test "$extra_verbose" = "yes" && echo "creating TAGS"
+  echo "
+$srcdir/TAGS,include" > "TAGS"
 fi
 
 dnl Create top level .sbinit for Sun compilers
 if test "$__SUNPRO_C" = "yes"; then
-  echo "creating .sbinit"; echo ""
+  test "$extra_verbose" = "yes" && echo "creating .sbinit"
   ( echo "# For use with Sun WorkShop's Source browser."
     echo "# See sbquery(1) and sbinit(4) for more information"
     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
@@ -4241,6 +4278,10 @@
 if test -n "$runpath"; then
   echo "  Runtime library search path:                            $runpath"
 fi
+if test "$have_xaw" = "yes"; then
+  echo "  Athena library to link:                                 $athena_lib"
+  echo "  Athena header include path:                             $athena_h_path"
+fi
 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
@@ -4324,13 +4365,11 @@
   lucid    ) echo "  Using Lucid scrollbars."     ;;
   motif    ) echo "  Using Motif scrollbars."     ;;
   athena   ) echo "  Using Athena scrollbars."    ;;
-  athena3d ) echo "  Using Athena-3d scrollbars." ;;
   msw ) echo "  Using MS-Windows scrollbars." ;;
 esac
 case "$with_widgets" in
   motif    ) echo "  Using Motif native widgets."     ;;
   athena   ) echo "  Using Athena native widgets."    ;;
-  athena3d ) echo "  Using Athena-3d native widgets." ;;
   msw ) echo "  Using MS-Windows native widgets." ;;
 esac
 case "$with_dialogs" in
@@ -4344,7 +4383,6 @@
     fi; fi
     ;;
   athena   ) echo "  Using Athena dialog boxes."    ;;
-  athena3d ) echo "  Using Athena-3d dialog boxes." ;;
   msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
 test "$with_modules" = "yes" && echo "  Compiling in dynamic shared object module support."
--- a/configure.usage	Mon Aug 13 11:31:26 2007 +0200
+++ b/configure.usage	Mon Aug 13 11:32:25 2007 +0200
@@ -141,7 +141,7 @@
                         installed LDAP libraries on the system).
 --mail-locking=TYPE (*) Specify the locking to be used by movemail to prevent
                         concurrent updates of mail spool files. Valid types
-                        are `lockf', `flock', and `file'.
+                        are `lockf', `flock', and `dot'.
 --with-modules		Compile in experimental support for dynamically
 			loaded libraries (Dynamic Shared Objects).
 --with-site-lisp=yes    Allow for a site-lisp directory in the XEmacs hierarchy
--- a/etc/NEWS	Mon Aug 13 11:31:26 2007 +0200
+++ b/etc/NEWS	Mon Aug 13 11:32:25 2007 +0200
@@ -136,6 +136,21 @@
 as this would break the MS-Windows model.  If you want this behaviour
 then set `selection-sets-clipboard' to t
 
+** Mail spool locking now works correctly.
+XEmacs has always come with a little auxiliary program, movemail,
+which moves mail out of the system's spool area into user storage.  To
+coordinate between XEmacs, the mail delivery agent, and other mail
+user agents, movemail needs to properly lock the spool file before
+moving it.  Movemail now correctly respects the --mail-locking option
+to configure.  Moreover, movemail's locking behavior can be specified
+at run-time, via a new command-line option -m to movemail, or through
+the environment variable EMACSLOCKMETHOD.
+
+When installing XEmacs, make sure you configure it according to your
+environment's mail spool locking conventions.  When you're using a
+binary kit, set the `mail-lock-method' variable at startup, or the
+EMACSLOCKMETHOD environment variable.
+
 ** New command-line switches -user-init-file and -user-init-directory.
 These can be used to specify alternate locations for what is normally
 ~/.emacs and ~/.xemacs.
@@ -144,6 +159,10 @@
 is now equivalent to
 -user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs.
 
+** New variable `mswindows-meta-activates-menu'.
+If you set this variable to nil then pressing the Alt key under
+MS-Windows will no longer activate the menubar. The default is t.
+
 ** Etags changes.
 
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
--- a/etc/TUTORIAL.de	Mon Aug 13 11:31:26 2007 +0200
+++ b/etc/TUTORIAL.de	Mon Aug 13 11:32:25 2007 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 1997, Adrian Aichner <adrian@xemacs.org>.
+Copyright (c) 1997-2000, Adrian Aichner <adrian@xemacs.org>.
 
 Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions.
 
@@ -39,7 +39,7 @@
 META-Taste gedrückt und tippe v oder tippe <ESC>v wenn Deine Tastatur
 keine META-, EDIT- oder ALT-Taste besitzt).
 
->>  Versuche ein paar Mal M-v und C-v zu tippen.
+>>  Versuche ein paarmal M-v und C-v zu tippen.
 
 
 * ZUSAMMENFASSUNG
@@ -1137,7 +1137,7 @@
 urheberrechtlich geschützt und erlaubt die Verteilung von Kopien unter
 bestimmten Voraussetzungen:
 
-Copyright (c) 1997, Adrian Aichner <adrian@xemacs.org>.
+Copyright (c) 1997-2000, Adrian Aichner <adrian@xemacs.org>.
 
 Copyright (c) 1985, 1996 Free Software Foundation
 
--- a/lib-src/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,47 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-18  Martin Buchholz  <martin@xemacs.org>
+
+	* ootags.c: Ansify.
+	* etags.c:
+	* getopt.c:
+	* cvtmail.c:
+	Remove declarations of ANSI errno, getenv(), malloc().
+
+2000-01-13  Martin Buchholz  <martin@xemacs.org>
+
+	* movemail.c (main): 
+	* make-docfile.c (write_c_args): 
+	Simple compiler warning fixes.
+
+2000-01-09  Martin Buchholz  <martin@xemacs.org>
+
+	* *.[ch]: Change <../src/config.h> to <config.h>
+	* ellcc.c: Always use <...> to #include files not in `.'
+	* Makefile.in.in: Use safer -I paths.
+	Use $(top_srcdir) instead of $(srcdir)/../src
+	Add warning comment.
+
+2000-01-08  Martin Buchholz  <martin@xemacs.org>
+
+	* movemail.c: Warning removal.
+
+2000-01-06  Norbert Koch  <norbert@s.netic.de>
+
+	* movemail.c: Typo fix.
+
+2000-01-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* movemail.c: Overhaul of the locking code.
+
+2000-01-03  Martin Buchholz  <martin@xemacs.org>
+
+	* etags.c (etags_strrchr): Ansify.
+	(etags_strchr): Ansify.
+	(get_compressor_from_suffix): Remove warning, make code cleaner.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/lib-src/Makefile.in.in	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/Makefile.in.in	Mon Aug 13 11:32:25 2007 +0200
@@ -91,7 +91,7 @@
 #ifdef HAVE_MS_WINDOWS
 INSTALLABLES = $(INSTALLABLES_BASE) runxemacs rungnuclient
 #else
-INSTALLABLES = $(INSTALLABLES_BASE) 
+INSTALLABLES = $(INSTALLABLES_BASE)
 #endif
 #endif
 
@@ -162,7 +162,13 @@
 
 ## We need to #define emacs to get the right versions of some files.
 
-cppflags = -Demacs -I$(top_srcdir)/src -I../src $(CPPFLAGS)
+## To understand the order of -I flags, consider what happens if you run
+## ./configure in the source tree, and then run
+## $(srcdir).2.26/configure in some other build tree.
+## Where will the generated files like config.h be included from?
+## This is also why you _must_ use <...> instead of "..." 
+## when #include'ing generated files.
+cppflags = -Demacs -I. -I../src -I$(srcdir) -I$(top_srcdir)/src $(CPPFLAGS)
 cflags   = $(CFLAGS) $(cppflags) $(c_switch_general)
 ldflags  = $(LDFLAGS) $(ld_switch_general) $(ld_libs_general)
 
@@ -279,32 +285,29 @@
 	${CC} -c $(cflags) ${srcdir}/getopt.c
 getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h
 	${CC} -c $(cflags) ${srcdir}/getopt1.c
-alloca.o: ${srcdir}/../src/alloca.c
+alloca.o: ${top_srcdir}/src/alloca.c
 	${CC} -c $(cflags) ${srcdir}/../src/alloca.c
 
-regex.o: ${srcdir}/../src/regex.c ${srcdir}/../src/regex.h
+regex.o: ${srcdir}/../src/regex.c ${top_srcdir}/src/regex.h
 	$(CC) -c `echo $(cflags) | sed 's/-Demacs/ /'` \
-		-DINHIBIT_STRING_HEADER ${srcdir}/../src/regex.c
+		-DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c
 
-etags_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \
-	-DVERSION='"${version}"' ${srcdir}/etags.c \
+etags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/etags.c \
 	$(GETOPTOBJS) regex.o $(ldflags)
-etags_deps   = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
+etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
 
 etags: ${etags_deps}
 	$(CC) ${etags_args} -o $@
 
-ellcc_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \
-    ${srcdir}/ellcc.c $(ldflags)
+ellcc_args = $(cflags) ${srcdir}/ellcc.c $(ldflags)
 ellcc_deps = ${srcdir}/ellcc.c ellcc.h ../src/config.h
 
 ellcc: ${ellcc_deps}
 	$(CC) ${ellcc_args} -o $@
 
-run_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \
-	-DVERSION='"${version}"' ${srcdir}/run.c \
+run_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/run.c \
 	$(ldflags) -Wl,--subsystem,windows -e _mainCRTStartup
-run_deps   = ${srcdir}/run.c ${srcdir}/run.h ${srcdir}/run.rc \
+run_deps = ${srcdir}/run.c ${srcdir}/run.h ${srcdir}/run.rc \
 	${srcdir}/../nt/xemacs.ico ${srcdir}/../nt/file.ico \
 	${srcdir}/../nt/lisp.ico
 
@@ -319,10 +322,9 @@
 rungnuclient: run
 	cp run.exe $@.exe
 
-ootags_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \
-	-DVERSION='"${version}"' ${srcdir}/ootags.c \
+ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \
 	$(GETOPTOBJS) regex.o $(ldflags)
-ootags_deps   = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
+ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
 
 ootags: ${ootags_deps}
 	$(CC) ${ootags_args} -o $@
--- a/lib-src/b2m.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/b2m.c	Mon Aug 13 11:32:25 2007 +0200
@@ -19,7 +19,7 @@
    by Francesco Potorti` <pot@cnuce.cnr.it>. */
 
 #ifdef HAVE_CONFIG_H
-#include <../src/config.h>
+#include <config.h>
 /* On some systems, Emacs defines static as nothing for the sake
    of unexec.  We don't want that here since we don't use unexec. */
 #undef static
--- a/lib-src/cvtmail.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/cvtmail.c	Mon Aug 13 11:32:25 2007 +0200
@@ -35,17 +35,12 @@
  */
 
 
-#include <../src/config.h>
+#include <config.h>
 
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
-#if __STDC__ || defined(STDC_HEADERS)
-# include <stdlib.h>
-#else
-char *malloc ();
-char *getenv ();
-#endif
 static void *xmalloc (unsigned int);
 static void *xrealloc (char *ptr, unsigned int);
 static void skip_to_lf (FILE *stream);
@@ -68,7 +63,7 @@
   char name[14];
   int c;
 
-  hd = (char *) getenv ("HOME");
+  hd = getenv ("HOME");
 
   md = (char *) xmalloc (strlen (hd) + 10);
   strcpy (md, hd);
--- a/lib-src/digest-doc.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/digest-doc.c	Mon Aug 13 11:32:25 2007 +0200
@@ -6,7 +6,7 @@
    but in texinfo format and sorted by function/variable name.  */
 
 #ifdef emacs
-#include <../src/config.h>
+#include <config.h>
 #endif
 #include <stdio.h>
 
--- a/lib-src/ellcc.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/ellcc.c	Mon Aug 13 11:32:25 2007 +0200
@@ -58,7 +58,7 @@
 See the samples for more details.
 */
 
-#include <../src/config.h>
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -71,8 +71,9 @@
 #endif /* HAVE_UNISTD_H */
 
 #define EMODULES_GATHER_VERSION
-#include "emodules.h"
-#include "ellcc.h"
+
+#include <emodules.h>
+#include <ellcc.h> /* Generated files must be included using <...> */
 
 #define DEBUG
 
--- a/lib-src/etags.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/etags.c	Mon Aug 13 11:32:25 2007 +0200
@@ -96,9 +96,6 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
-#ifndef errno
-  extern int errno;
-#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 
@@ -194,8 +191,6 @@
   char **interpreters;
 } language;
 
-extern char *getenv ();
-
 typedef struct node_st
 {				/* sorting structure		*/
   char *name;			/* function or type name	*/
@@ -282,8 +277,8 @@
 char *skip_non_spaces (char *cp);
 char *savenstr (char *cp, int len);
 char *savestr (char *cp);
-char *etags_strchr (char *sp, char c);
-char *etags_strrchr (char *sp, char c);
+char *etags_strchr (const char *sp, int c);
+char *etags_strrchr (const char *sp, int c);
 char *etags_getcwd (void);
 char *relative_filename (char *file, char *dir);
 char *absolute_filename (char *file, char *dir);
@@ -1208,17 +1203,21 @@
   /* Let those poor souls who live with DOS 8+3 file name limits get
      some solace by treating foo.cgz as if it were foo.c.gz, etc.
      Only the first do loop is run if not MSDOS */
+#ifdef MSDOS
   do
     {
       for (compr = compressors; compr->suffix != NULL; compr++)
 	if (streq (compr->suffix, suffix))
 	  return compr;
-#ifndef MSDOS
-      break;
-#endif
       if (extptr != NULL)
 	*extptr = ++suffix;
     } while (*suffix != '\0');
+#else
+  for (compr = compressors; compr->suffix != NULL; compr++)
+    if (streq (compr->suffix, suffix))
+      return compr;
+#endif
+
   return NULL;
 }
 
@@ -5112,14 +5111,13 @@
 /*
  * Return the ptr in sp at which the character c last
  * appears; NULL if not found
- *
- * Identical to System V strrchr, included for portability.
  */
 char *
 etags_strrchr (sp, c)
-     register char *sp, c;
+     const char *sp;
+     int c;
 {
-  register char *r;
+  register const char *r;
 
   r = NULL;
   do
@@ -5127,24 +5125,23 @@
       if (*sp == c)
 	r = sp;
   } while (*sp++);
-  return r;
+  return (char *) r;
 }
 
 
 /*
  * Return the ptr in sp at which the character c first
  * appears; NULL if not found
- *
- * Identical to System V strchr, included for portability.
  */
 char *
 etags_strchr (sp, c)
-     register char *sp, c;
+     const char *sp;
+     int c;
 {
   do
     {
       if (*sp == c)
-	return sp;
+	return (char *) sp;
     } while (*sp++);
   return NULL;
 }
--- a/lib-src/fakemail.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/fakemail.c	Mon Aug 13 11:32:25 2007 +0200
@@ -21,7 +21,7 @@
 /* Synched up with: FSF 19.28. */
 
 #define NO_SHORTNAMES
-#include <../src/config.h>
+#include <config.h>
 
 #if defined (BSD) && !defined (BSD4_1) && !defined (USE_FAKEMAIL)
 /* This program is not used in BSD, so just avoid loader complaints.  */
@@ -638,10 +638,6 @@
   register int size;
   FILE *the_pipe;
 
-#if !(__STDC__ || defined(STDC_HEADERS))
-  extern char *getenv ();
-#endif
-
   mail_program_name = getenv ("FAKEMAILER");
   if (!(mail_program_name && *mail_program_name))
     mail_program_name = (char *) MAIL_PROGRAM_NAME;
--- a/lib-src/getopt.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/getopt.c	Mon Aug 13 11:32:25 2007 +0200
@@ -31,7 +31,7 @@
 #endif
 
 #ifdef HAVE_CONFIG_H
-#include <../src/config.h>
+#include <config.h>
 #endif
 
 #include <stdio.h>
@@ -202,11 +202,6 @@
 #define	my_index	strchr
 #else
 
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-char *getenv ();
-
 static char *
 my_index (const char *str, int chr)
 {
--- a/lib-src/getopt1.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/getopt1.c	Mon Aug 13 11:32:25 2007 +0200
@@ -20,7 +20,7 @@
 USA.  */
 
 #ifdef HAVE_CONFIG_H
-#include <../src/config.h>
+#include <config.h>
 #endif
 
 #include "getopt.h"
--- a/lib-src/gnuserv.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/gnuserv.h	Mon Aug 13 11:32:25 2007 +0200
@@ -43,7 +43,7 @@
 #define NO_SHORTNAMES
 /* gnuserv should not be compiled using SOCKS */
 #define DO_NOT_SOCKSIFY
-#include <../src/config.h>
+#include <config.h>
 #undef read
 #undef write
 #undef open
--- a/lib-src/hexl.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/hexl.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1,6 +1,6 @@
 /* Synched up with: FSF 19.28. */
 
-#include <../src/config.h>
+#include <config.h>
 
 #include <stdio.h>
 #include <ctype.h>
--- a/lib-src/make-docfile.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/make-docfile.c	Mon Aug 13 11:32:25 2007 +0200
@@ -40,7 +40,7 @@
  */
 
 #define NO_SHORTNAMES   /* Tell config not to load remap.h */
-#include <../src/config.h>
+#include <config.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -429,10 +429,10 @@
       static char lo[] = "Lisp_Object";
       if ((C_IDENTIFIER_CHAR_P (c) != in_ident) && !in_ident &&
 	  (strncmp (p, lo, sizeof (lo) - 1) == 0) &&
-	  isspace(*(p + sizeof (lo) - 1)))
+	  isspace((unsigned char) (* (p + sizeof (lo) - 1))))
 	{
 	  p += (sizeof (lo) - 1);
-	  while (isspace (*p))
+	  while (isspace ((unsigned char) (*p)))
 	    p++;
 	  c = *p;
 	}
--- a/lib-src/make-path.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/make-path.c	Mon Aug 13 11:32:25 2007 +0200
@@ -27,7 +27,7 @@
    that option. */
 
 #ifdef emacs
-#include <../src/config.h>
+#include <config.h>
 #endif
 
 #include <sys/types.h>
--- a/lib-src/movemail.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/movemail.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1,35 +1,41 @@
 /* movemail foo bar -- move file foo to file bar,
-   locking file foo the way /bin/mail respects.
+   locking file foo.
    Copyright (C) 1986, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
 
-This file is part of GNU Emacs.
+This file is part of XEmacs.
 
-GNU Emacs 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 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.
 
-GNU Emacs 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.
+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 GNU Emacs; see the file COPYING.  If not, write to
+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.  */
+Boston, MA 02111-1307, USA.
+
+ Please mail bugs and suggestions to the XEmacs maintainer.
+*/
 
-/* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will
-   cause loss of mail* if you do it on a system that does not normally
-   use flock as its way of interlocking access to inbox files.  The
-   setting of MAIL_USE_FLOCK and MAIL_USE_LOCKF *must agree* with the
-   system's own conventions.  It is not a choice that is up to you.
+/* Important notice:
+ *
+ *  You *must* coordinate the locking method used by movemail with that
+ *  used by your mail delivery agent, as well as that of the other mail
+ *  user agents on your system.  movemail allows you to do this at run
+ *  time via the -m flag.  Moreover, it uses a default determined by
+ *  the MAIL_LOCK_DOT, MAIL_LOCK_LOCKF, MAIL_LOCK_FLOCK,
+ *  MAIL_LOCK_LOCKING, and MAIL_LOCK_MMDF preprocessor settings.
+ */
 
-   So, if your system uses lock files rather than flock, then the only way
-   you can get proper operation is to enable movemail to write lockfiles there.
-   This means you must either give that directory access modes
-   that permit everyone to write lockfiles in it, or you must make movemail
-   a setuid or setgid program.  */
+/*
+ * Mike Sperber <sperber@informatik.uni-tuebingen.de> reorganized
+ * everything that has to with locking in December 1999.
+ */
 
 /*
  * Modified January, 1986 by Michael R. Gretzinger (Project Athena)
@@ -56,7 +62,7 @@
 
 #define NO_SHORTNAMES   /* Tell config not to load remap.h */
 #define DONT_ENCAPSULATE
-#include <../src/config.h>
+#include <config.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
@@ -106,7 +112,7 @@
 #include <io.h>
 #endif /* WINDOWSNT */
 
-#if defined (HAVE_UNISTD_H) || defined (USG)
+#if defined (HAVE_UNISTD_H)
 #include <unistd.h>
 #endif /* unistd.h */
 #ifndef F_OK
@@ -116,23 +122,15 @@
 #define R_OK 4
 #endif /* No F_OK */
 
-#if defined (HAVE_FCNTL_H) || defined (USG)
+#if defined (HAVE_FCNTL_H)
 #include <fcntl.h>
 #endif /* fcntl.h */
 
-#if defined (XENIX) || defined (WINDOWSNT)
+#ifdef HAVE_LOCKING
 #include <sys/locking.h>
 #endif
 
-#ifdef MAIL_USE_LOCKF
-#define MAIL_USE_SYSTEM_LOCK
-#endif
-
-#ifdef MAIL_USE_FLOCK
-#define MAIL_USE_SYSTEM_LOCK
-#endif
-
-#ifdef MAIL_USE_MMDF
+#ifdef HAVE_MMDF
 extern int lk_open (), lk_close ();
 #endif
 
@@ -144,6 +142,7 @@
 
 static void fatal (char *, char*);
 static void error (char *, char *, char *);
+static void usage(int);
 static void pfatal_with_name (char *);
 static void pfatal_and_delete (char *);
 static char *concat (char *, char *, char *);
@@ -160,9 +159,6 @@
 			   struct re_pattern_buffer* regexp);
 #endif
 
-/* Nonzero means this is name of a lock file to delete on fatal error.  */
-char *delete_lockname;
-
 int verbose=0;
 #ifdef MAIL_USE_POP
 int reverse=0;
@@ -184,10 +180,35 @@
   { "regex",			required_argument,	   NULL,	'r' 	},
   { "match-lines",		required_argument,	   NULL,	'l' 	},
 #endif
+  { "lock-method",		required_argument,	   NULL,	'm' 	},
+  { "help",			no_argument,	   	   NULL,	'h' 	},
   { "verbose", 			no_argument,		   NULL,	'v'	},
   { 0 }
 };
 
+#define DOTLOCKING	0
+#define FLOCKING 	1
+#define LOCKFING	2
+#define MMDF   		3
+#define LOCKING         4
+
+#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK)
+#define DEFAULT_LOCKING FLOCKING
+#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF)
+#define DEFAULT_LOCKING LOCKFING
+#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF)
+#define DEFAULT_LOCKING MMDF
+#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING)
+#define DEFAULT_LOCKING LOCKING
+#else
+#define DEFAULT_LOCKING DOTLOCKING
+#endif
+
+static void lock_dot(char *);
+static void unlock_dot(char *);
+static int parse_lock_method(char *);
+static char *unparse_lock_method(int);
+
 int
 main (int argc, char *argv[])
 {
@@ -198,23 +219,23 @@
   int status;
 #endif
 
-#ifndef MAIL_USE_SYSTEM_LOCK
-  struct stat st;
-  long now;
-  int tem;
-  char *lockname, *p;
-  char *tempname;
-  int desc;
-#endif /* not MAIL_USE_SYSTEM_LOCK */
+  int lock_method = DEFAULT_LOCKING;
+
+  char *maybe_lock_env;
 
-  delete_lockname = 0;
+  maybe_lock_env = getenv("EMACSLOCKMETHOD");
+  if (maybe_lock_env)
+    {
+      printf("maybe-lock_env: %s\n", maybe_lock_env);
+      lock_method = parse_lock_method(maybe_lock_env);
+    }
 
-  while (1)
+  for (;;)
     {
 #ifdef MAIL_USE_POP
-      char* optstring = "i:o:p:l:r:xvk";
+      char* optstring = "i:o:m:p:l:r:xvhk";
 #else
-      char* optstring = "i:o:v";
+      char* optstring = "i:o:m:vh";
 #endif
       int opt = getopt_long (argc, argv, optstring, longopts, 0);
   
@@ -255,7 +276,16 @@
 	  regexp_pattern = compile_regex (optarg);
 	  break;
 #endif
-	case 'v':		verbose = 1;	break;
+
+	case 'm':
+	  lock_method = parse_lock_method(optarg);
+	  break;
+	case 'h':
+	  usage(lock_method);
+	  exit(0);
+	case 'v':
+	  verbose = 1;
+	  break;
 	}
     }
 
@@ -272,17 +302,19 @@
     
   if (!inname || !outname)
     {
-      fprintf (stderr, "Usage: movemail [-rvxk] [-l lines ] [-i] inbox [-o] destfile [[-p] POP-password]\n");
+      usage(lock_method);
       exit(1);
     }
 
-#ifdef MAIL_USE_MMDF
-  mmdf_init (argv[0]);
+#ifdef HAVE_MMDF
+  if (lock_method == MMDF)
+    mmdf_init (argv[0]);
 #endif
 
   if (*outname == 0)
     fatal ("Destination file name is empty", 0);
 
+  VERBOSE(("checking access to output file\n"));
   /* Check access to output file.  */
   if (access (outname, F_OK) == 0 && access (outname, W_OK) != 0)
     pfatal_with_name (outname);
@@ -320,34 +352,238 @@
   if (access (inname, R_OK | W_OK) != 0)
     pfatal_with_name (inname);
 
-#ifndef MAIL_USE_MMDF
-#ifndef MAIL_USE_SYSTEM_LOCK
-  /* Use a lock file named after our first argument with .lock appended:
-     If it exists, the mail file is locked.  */
-  /* Note: this locking mechanism is *required* by the mailer
-     (on systems which use it) to prevent loss of mail.
+
+  if (fork () == 0)
+    {
+      setuid (getuid ());
+
+      VERBOSE(("opening input file\n"));
+
+      switch (lock_method)
+	{
+	case DOTLOCKING:
+	  indesc = open (inname, O_RDONLY);
+	  break;
+#ifdef HAVE_LOCKF
+	case LOCKFING:
+	  indesc = open (inname, O_RDWR);
+	  break;
+#endif
+#ifdef HAVE_FLOCK
+	case FLOCKING:
+	  indesc = open (inname, O_RDWR);
+	  break;
+#endif
+#ifdef HAVE_LOCKING
+	case LOCKING:
+	  indesc = open (inname, O_RDWR);
+	  break;
+#endif
+#ifdef HAVE_MMDF
+	case MMDF:
+	  indesc = lk_open (inname, O_RDONLY, 0, 0, 10);
+	  break;
+#endif
+	default: abort();
+	}
+
+      if (indesc < 0)
+	pfatal_with_name (inname);
+
+#ifdef HAVE_UMASK      
+      /* In case movemail is setuid to root, make sure the user can
+	 read the output file.  */
+      umask (umask (0) & 0333);
+#endif
+
+      outdesc = open (outname, O_WRONLY | O_CREAT | O_EXCL, 0666);
+      if (outdesc < 0)
+	pfatal_with_name (outname);
+
+      VERBOSE(("locking input file\n"));
 
-     On systems that use a lock file, extracting the mail without locking
-     WILL occasionally cause loss of mail due to timing errors!
+      switch (lock_method)
+	{
+#ifdef HAVE_LOCKF
+	case LOCKFING:
+	  if (lockf (indesc, F_LOCK, 0) < 0)
+	    pfatal_with_name (inname);
+	  break;
+#endif
+#ifdef HAVE_FLOCK
+	case FLOCKING:
+	  if (flock (indesc, LOCK_EX) < 0)
+	    pfatal_with_name (inname);
+	  break;
+#endif
+#ifdef HAVE_LOCKING
+	case LOCKING:
+	  if (locking (indesc, LK_RLCK, -1L) < 0)
+	    pfatal_with_name (inname);
+	  break;
+#endif
+	case DOTLOCKING:
+	  lock_dot(inname);
+	  break;
+	}
+
+      VERBOSE(("copying input file to output file\n"));
+	    
+      {
+	char buf[1024];
+
+	while (1)
+	  {
+	    nread = read (indesc, buf, sizeof buf);
+	    if (nread != write (outdesc, buf, nread))
+	      {
+		int saved_errno = errno;
+		unlink (outname);
+		errno = saved_errno;
+		pfatal_with_name (outname);
+	      }
+	    if (nread < sizeof buf)
+	      break;
+	  }
+      }
+
+#ifdef HAVE_FSYNC
+      if (fsync (outdesc) < 0)
+	pfatal_and_delete (outname);
+#endif
+
+      /* Check to make sure no errors before we zap the inbox.  */
+      if (close (outdesc) != 0)
+	pfatal_and_delete (outname);
+
+      VERBOSE(("deleting or truncating input file\n"));
 
-     So, if creation of the lock file fails
-     due to access permission on the mail spool directory,
-     you simply MUST change the permission
-     and/or make movemail a setgid program
-     so it can create lock files properly.
+      switch (lock_method)
+	{
+	case LOCKFING:
+	case FLOCKING:
+	case LOCKING:
+#ifdef HAVE_FTRUNCATE
+	  ftruncate (indesc, 0L);
+#else
+	  close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666));
+#endif
+	  close (indesc);
+	  break;
+#ifdef HAVE_MMDF
+	case MMDF:
+	  lk_close (indesc, 0, 0, 0);
+	  break;
+#endif
+	case DOTLOCKING:
+	  creat (inname, 0600);
+	  break;
+	}
+
+      exit (0);
+    }
 
-     You might also wish to verify that your system is one
-     which uses lock files for this purpose.  Some systems use other methods.
+  wait (&status);
+  if (!WIFEXITED (status))
+    exit (1);
+  else if (WEXITSTATUS (status) != 0)
+    exit (WEXITSTATUS (status));
+
+  if (lock_method == DOTLOCKING)
+    unlock_dot(inname);
+
+#endif /* not DISABLE_DIRECT_ACCESS */
+
+  return 0;
+}
+
+static void
+usage(int lock_method)
+{
+  printf ("Usage: movemail [-rvxkh] [-l lines ] [-m method ] [-i] inbox [-o] destfile [[-p] POP-password]\n");
+  printf("where method is one of: dot");
+#ifdef HAVE_LOCKF
+  printf(", lockf");
+#endif
+#ifdef HAVE_FLOCK
+  printf(", flock");
+#endif
+#ifdef HAVE_MMDF
+  printf(", mmdf");
+#endif
+#ifdef HAVE_LOCKING
+  printf(", locking");
+#endif
+  printf("\nDefault is: %s\n", unparse_lock_method(lock_method));
+  
+}
 
-     If your system uses the `flock' system call for mail locking,
-     define MAIL_USE_SYSTEM_LOCK in config.h or the s-*.h file
-     and recompile movemail.  If the s- file for your system
-     should define MAIL_USE_SYSTEM_LOCK but does not, send a bug report
-     to bug-gnu-emacs@prep.ai.mit.edu so we can fix it.  */
+static char *
+unparse_lock_method(int lock_method)
+{
+  switch (lock_method)
+    {
+    case DOTLOCKING: return "dot";
+    case FLOCKING:   return "flock";
+    case LOCKFING:   return "lockf";
+    case LOCKING:    return "locking";
+    case MMDF:       return "mmdf";
+    default: abort();return 0;
+    }
+}
 
-  lockname = concat (inname, ".lock", "");
-  tempname = (char *) xmalloc (strlen (inname) + strlen ("EXXXXXX") + 1);
-  strcpy (tempname, inname);
+static int
+parse_lock_method(char *method_name)
+{
+  if (!strcmp("dot", method_name) || !strcmp("file", method_name))
+    return DOTLOCKING;
+#ifdef HAVE_LOCKF
+  else if (!strcmp("lockf", method_name))
+    return LOCKFING;
+#endif
+#ifdef HAVE_FLOCK
+  else if (!strcmp("flock", method_name))
+    return FLOCKING;
+#endif
+#ifdef HAVE_MMDF
+  else if (!strcmp("mmdf", method_name))
+    return MMDF;
+#endif
+#ifdef HAVE_LOCKING
+  else if (!strcmp("locking", method_name))
+    return LOCKING;
+#endif
+  else
+    fatal("invalid lock method: %s", method_name);
+  return 0; /* unreached */
+}
+
+static char *
+dot_filename(char *filename)
+{
+  return concat (filename, ".lock", "");
+}
+
+static char *dotlock_filename = NULL;
+
+static void
+lock_dot(char *filename)
+{
+  struct stat st;
+  long now;
+  int tem;
+  char *lockname, *p;
+  char *tempname;
+  int desc;
+
+  dotlock_filename = (char *) xmalloc(strlen(filename) + 1);
+
+  /* Use a lock file named after our first argument with .lock appended:
+     If it exists, the mail file is locked. */
+
+  lockname = dot_filename(filename);
+  tempname = (char *) xmalloc (strlen (filename) + strlen ("EXXXXXX") + 1);
+  strcpy (tempname, filename);
   p = tempname + strlen (tempname);
   while (p != tempname && !IS_DIRECTORY_SEP (p[-1]))
     p--;
@@ -356,7 +592,7 @@
   mktemp (tempname);
   unlink (tempname);
 
-  while (1)
+  for (;;)
     {
       /* Create the lock file, but not under the lock file name.  */
       /* Give up if cannot do that.  */
@@ -387,132 +623,28 @@
 	    unlink (lockname);
 	}
     }
-
-  delete_lockname = lockname;
-#endif /* not MAIL_USE_SYSTEM_LOCK */
-#endif /* not MAIL_USE_MMDF */
-
-  if (fork () == 0)
-    {
-      setuid (getuid ());
-
-#ifndef MAIL_USE_MMDF
-#ifdef MAIL_USE_SYSTEM_LOCK
-      indesc = open (inname, O_RDWR);
-#else  /* if not MAIL_USE_SYSTEM_LOCK */
-      indesc = open (inname, O_RDONLY);
-#endif /* not MAIL_USE_SYSTEM_LOCK */
-#else  /* MAIL_USE_MMDF */
-      indesc = lk_open (inname, O_RDONLY, 0, 0, 10);
-#endif /* MAIL_USE_MMDF */
-
-      if (indesc < 0)
-	pfatal_with_name (inname);
-
-#if defined (BSD) || defined (XENIX)
-      /* In case movemail is setuid to root, make sure the user can
-	 read the output file.  */
-      /* This is desirable for all systems
-	 but I don't want to assume all have the umask system call */
-      umask (umask (0) & 0333);
-#endif /* BSD or Xenix */
-      outdesc = open (outname, O_WRONLY | O_CREAT | O_EXCL, 0666);
-      if (outdesc < 0)
-	pfatal_with_name (outname);
-#ifdef MAIL_USE_SYSTEM_LOCK
-#ifdef MAIL_USE_LOCKF
-      if (lockf (indesc, F_LOCK, 0) < 0) pfatal_with_name (inname);
-#else /* not MAIL_USE_LOCKF */
-#ifdef XENIX
-      if (locking (indesc, LK_RLCK, 0L) < 0) pfatal_with_name (inname);
-#else
-#ifdef WINDOWSNT
-      if (locking (indesc, LK_RLCK, -1L) < 0) pfatal_with_name (inname);
-#else
-      if (flock (indesc, LOCK_EX) < 0) pfatal_with_name (inname);
-#endif
-#endif
-#endif /* not MAIL_USE_LOCKF */
-#endif /* MAIL_USE_SYSTEM_LOCK */
-
-      {
-	char buf[1024];
+  strcpy(dotlock_filename, filename);
+}
 
-	while (1)
-	  {
-	    nread = read (indesc, buf, sizeof buf);
-	    if (nread != write (outdesc, buf, nread))
-	      {
-		int saved_errno = errno;
-		unlink (outname);
-		errno = saved_errno;
-		pfatal_with_name (outname);
-	      }
-	    if (nread < sizeof buf)
-	      break;
-	  }
-      }
-
-#ifdef BSD
-      if (fsync (outdesc) < 0)
-	pfatal_and_delete (outname);
-#endif
-
-      /* Check to make sure no errors before we zap the inbox.  */
-      if (close (outdesc) != 0)
-	pfatal_and_delete (outname);
-
-#ifdef MAIL_USE_SYSTEM_LOCK
-#if defined (STRIDE) || defined (XENIX) || defined (WINDOWSNT)
-      /* Stride, xenix have file locking, but no ftruncate.  This mess will do. */
-      close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666));
-#else
-      ftruncate (indesc, 0L);
-#endif /* STRIDE or XENIX */
-#endif /* MAIL_USE_SYSTEM_LOCK */
+static void
+unlock_dot(char *filename)
+{
+  unlink(dot_filename(filename));
+}
 
-#ifdef MAIL_USE_MMDF
-      lk_close (indesc, 0, 0, 0);
-#else
-      close (indesc);
-#endif
-
-#ifndef MAIL_USE_SYSTEM_LOCK
-      /* Delete the input file; if we can't, at least get rid of its
-	 contents.  */
-#ifdef MAIL_UNLINK_SPOOL
-      /* This is generally bad to do, because it destroys the permissions
-	 that were set on the file.  Better to just empty the file.  */
-      if (unlink (inname) < 0 && errno != ENOENT)
-#endif /* MAIL_UNLINK_SPOOL */
-	creat (inname, 0600);
-#endif /* not MAIL_USE_SYSTEM_LOCK */
+static void
+maybe_unlock_dot(void)
+{
+  if (dotlock_filename)
+    unlock_dot(dotlock_filename);
+}
 
-      exit (0);
-    }
-
-  wait (&status);
-  if (!WIFEXITED (status))
-    exit (1);
-  else if (WEXITSTATUS (status) != 0)
-    exit (WEXITSTATUS (status));
-
-#if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
-  unlink (lockname);
-#endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */
-
-#endif /* ! DISABLE_DIRECT_ACCESS */
-
-  return 0;
-}
-
 /* Print error message and exit.  */
 
 static void
 fatal (char *s1, char *s2)
 {
-  if (delete_lockname)
-    unlink (delete_lockname);
+  maybe_unlock_dot();
   error (s1, s2, NULL);
   exit (1);
 }
@@ -568,7 +700,7 @@
     fatal ("virtual memory exhausted", 0);
   return result;
 }
-
+
 /* This is the guts of the interface to the Post Office Protocol.  */
 
 #ifdef MAIL_USE_POP
@@ -605,7 +737,7 @@
   FILE *mbf;
   popserver server;
 
-  VERBOSE(("opening server\r"));
+  VERBOSE(("opening server\n"));
   server = pop_open (0, user, password, POP_NO_GETPASS);
   if (! server)
     {
@@ -613,7 +745,7 @@
       return (1);
     }
 
-  VERBOSE(("stat'ing messages\r"));
+  VERBOSE(("stat'ing messages\n"));
   if (pop_stat (server, &nmsgs, &nbytes))
     {
       error (pop_error, NULL, NULL);
@@ -654,13 +786,13 @@
   for (idx = 0; idx < nmsgs; idx++)
     {
       i = reverse ? nmsgs - idx : idx + 1;
-      VERBOSE(("checking message %d     \r", i));
+      VERBOSE(("checking message %d     \n", i));
       
       if (!regexp_pattern 
 	  || 
 	  pop_search_top (server, i, match_lines, regexp_pattern) == POP_RETRIEVED)
 	{
-	  VERBOSE(("retrieving message %d     \r", i));
+	  VERBOSE(("retrieving message %d     \n", i));
           mbx_delimit_begin (mbf);
 	  if (pop_retr (server, i, mbx_write, mbf) != POP_RETRIEVED)
 	    {
@@ -689,7 +821,7 @@
    *      directories have lost mail when over quota because these checks were
    *      not made in previous versions of movemail. */
 
-#ifdef BSD
+#ifdef HAVE_FSYNC
   if (fsync (mbfi) < 0)
     {
       error ("Error in fsync: %s", strerror (errno), NULL);
@@ -709,7 +841,7 @@
 	{
 	  if (retrieved_list[i] == 1)
 	    {
-	      VERBOSE(("deleting message %d     \r", i));
+	      VERBOSE(("deleting message %d     \n", i));
 	      if (pop_delete (server, i))
 		{
 		  error (pop_error, NULL, NULL);
@@ -877,7 +1009,7 @@
 
 
 #endif /* MAIL_USE_POP */
-
+
 #ifndef HAVE_STRERROR
 char *
 strerror (int errnum)
--- a/lib-src/ootags.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/ootags.c	Mon Aug 13 11:32:25 2007 +0200
@@ -104,9 +104,6 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
-#ifndef errno
-  extern int errno;
-#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 
@@ -176,9 +173,9 @@
 #ifdef OO_BROWSER
 #define set_construct(construct) \
   if (!oo_browser_construct) oo_browser_construct = construct
-void oo_browser_clear_all_globals();
-void oo_browser_clear_some_globals();
-void oo_browser_check_and_clear_structtype();
+void oo_browser_clear_all_globals(void);
+void oo_browser_clear_some_globals(void);
+void oo_browser_check_and_clear_structtype(void);
 #endif
 
 /*
@@ -200,7 +197,7 @@
 
 typedef int bool;
 
-typedef void Lang_function ();
+typedef void Lang_function (FILE *);
 
 typedef struct
 {
@@ -860,9 +857,7 @@
 
 
 int
-main (argc, argv)
-     int argc;
-     char *argv[];
+main (int argc, char *argv[])
 {
   int i;
   unsigned int nincluded_files;
@@ -1654,8 +1649,7 @@
 #endif
 
 void
-put_entries (np)
-     register node *np;
+put_entries (node *np)
 {
   register char *sp;
 
@@ -1889,9 +1883,7 @@
 /* maximum key range = 117, duplicates = 0 */
 
 static unsigned int
-hash (str, len)
-     register char *str;
-     register int unsigned len;
+hash (char *str, unsigned int len)
 {
   static unsigned char asso_values[] =
     {
@@ -1909,13 +1901,13 @@
       10,  62,  59, 130,  28,  27,  50,  19,   3, 130,
      130, 130, 130, 130, 130, 130, 130, 130,
     };
-  return len + asso_values[str[2]] + asso_values[str[0]];
+  return len +
+    asso_values[(unsigned char) str[2]] +
+    asso_values[(unsigned char) str[0]];
 }
 
-struct C_stab_entry *
-in_word_set (str, len)
-     register char *str;
-     register unsigned int len;
+static struct C_stab_entry *
+in_word_set (char *str, unsigned int len)
 {
   static struct C_stab_entry wordlist[] =
     {
@@ -2077,7 +2069,7 @@
 
 #ifdef OO_BROWSER
 void
-oo_browser_check_and_clear_structtype()
+oo_browser_check_and_clear_structtype(void)
 {
   /* Allow for multiple enum_label tags. */
   if (structtype != st_C_enum)
@@ -2156,7 +2148,7 @@
 
 #ifdef OO_BROWSER
 void
-oo_browser_clear_all_globals()
+oo_browser_clear_all_globals(void)
 {
   /* Initialize globals so there is no carry over between files. */
   oo_browser_construct = C_NULL;
@@ -2167,7 +2159,7 @@
 }
 
 void
-oo_browser_clear_some_globals()
+oo_browser_clear_some_globals(void)
 {
   oo_browser_construct = C_NULL;
   structtype = st_none;
@@ -3638,8 +3630,7 @@
  * look for '^[a-zA-Z_.$][a-zA_Z0-9_.$]*[: ^I^J]'
  */
 void
-Asm_labels (inf)
-     FILE *inf;
+Asm_labels (FILE *inf)
 {
   register char *cp;
 
--- a/lib-src/pop.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/pop.c	Mon Aug 13 11:32:25 2007 +0200
@@ -21,7 +21,7 @@
 
 #ifdef HAVE_CONFIG_H
 #define NO_SHORTNAMES	/* Tell config not to load remap.h */
-#include <../src/config.h>
+#include <config.h>
 #else
 #define MAIL_USE_POP
 #endif
--- a/lib-src/profile.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/profile.c	Mon Aug 13 11:32:25 2007 +0200
@@ -32,7 +32,7 @@
  **  abstraction : a stopwatch
  **  operations: reset_watch, get_time
  */
-#include <../src/config.h>
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "../src/systime.h"
--- a/lib-src/sorted-doc.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/sorted-doc.c	Mon Aug 13 11:32:25 2007 +0200
@@ -7,7 +7,7 @@
 
 /* Synched up with: FSF 19.28. */
 
-#include <../src/config.h>
+#include <config.h>
 
 #include <stdio.h>
 #include <ctype.h>
--- a/lib-src/wakeup.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/wakeup.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1,6 +1,6 @@
 /* Program to produce output at regular intervals.  */
 
-#include <../src/config.h>
+#include <config.h>
 
 #if __STDC__ || defined(STDC_HEADERS)
 #include <stdlib.h>
--- a/lib-src/yow.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lib-src/yow.c	Mon Aug 13 11:32:25 2007 +0200
@@ -10,7 +10,7 @@
 /* Synched up with: FSF 19.28. */
 
 #define DONT_ENCAPSULATE
-#include <../src/config.h>
+#include <config.h>
 
 #include <stdio.h>
 #include <ctype.h>
--- a/lisp/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,148 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-18  Martin Buchholz  <martin@xemacs.org>
+
+	* process.el (shell-command-to-string): Use the FSF docstring.
+	Make shell-command-to-string the standard function, and
+	exec-to-string the (deprecated) alias.
+
+	* startup.el: typo fix.
+
+2000-01-16  Martin Buchholz  <martin@xemacs.org>
+
+	* mule/mule-misc.el (char-octet): Move back into mule-charset.c.
+
+2000-01-14  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* menubar-items.el (sort-buffers-menu-alphabetically): Put invisible
+	buffers	after visible buffers.
+	(sort-buffers-menu-by-mode-then-alphabetically): Ditto.
+
+2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* info.el (Info-extract-menu-node-name): Stop at a dot
+	followed by whitespace or right parenthesis.
+
+2000-01-15  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* info.el (Info-directory-list): Warn against using Customize with
+	Info-directory-list.
+
+2000-01-15  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+	* minibuf.el (read-file-name): doc fix.
+
+	* autoload.el (update-file-autoloads): doc fix.
+
+	* about.el (about-hackers): Change my E-mail address.
+
+2000-01-13  Martin Buchholz  <martin@xemacs.org>
+
+	* info.el (Info-visit-file): Just use the `f' interactive spec to
+	read a filename in the standard way.
+
+2000-01-13  Andy Piper  <andy@xemacs.org>
+
+	* gutter-items.el (gutter-buffers-tab-orientation): new variable.
+	(gutter-buffers-tab-extent): new variable.
+	(update-tab-in-gutter): call add-tab-to-gutter again if the
+	orientation has changed.
+	(add-tab-to-gutter): cope with different orientations.
+
+2000-01-11  Didier Verna  <didier@xemacs.org>
+
+	* info.el (Info-following-node-name): backward-skip dots as well
+	as spaces (dots at the end of a node name aren't part of it).
+	(Info-extract-menu-node-name): don't skip dots. There could be
+	some in the node name.
+	(Info-index): allow dots to be part of a node name.
+
+2000-01-12  Andreas Jaeger  <aj@suse.de>
+
+	* files.el (auto-mode-alist): Added idlwave-mode.
+	Patch by Carsten Dominik <dominik@astro.uva.nl>.
+
+1999-12-22  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* info.el (Info-search): Show default value.
+
+1999-12-20  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* info.el (Info-read-node-completion-table): New variable.
+	(Info-read-node-name-1): New function.
+	(Info-read-node-name): Use it.
+	(Info-follow-reference): Use DEFAULT argument of completing-read.
+	(Info-menu): Ditto.
+
+1999-12-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* hyper-apropos.el (hyper-describe-key-briefly): Save
+	window configuration.
+	(hyper-describe-face): Use DEFAULT of completing-read.
+	(hyper-apropos-read-variable-symbol): Ditto.
+	(hyper-apropos-read-function-symbol): Ditto.
+
+1999-12-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* mule/mule-cmds.el (set-default-coding-system): Set
+	comint-exec-hook to use coding-system-for-read and
+	coding-system-for-write so that C-x RET c works.
+
+1999-12-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* minibuf.el (minibuffer-confirm-incomplete): Customize.
+	(previous-matching-history-element): Increment
+	minibuffer-max-depth by 1.
+	(next-matching-history-element): Ditto.
+
+2000-01-11  Andy Piper  <andy@xemacs.org>
+
+	* gutter-items.el (buffers-tab): Create a new face for the buffers
+	tab.
+	(buffers-tab-face): use it.
+
+2000-01-10  Didier Verna  <didier@xemacs.org>
+
+	* modeline.el (modeline-scrolling-method): change modeline X
+	cursor appearance according to the value.
+
+2000-01-07  Andreas Jaeger  <aj@suse.de>
+
+	* about.el (about-hackers): Moved my entry to contributor list.
+	(xemacs-hackers): Added myself.
+	(about-maintainer-info): Added description of myself.
+
+
+2000-01-07  Didier Verna  <didier@xemacs.org>
+
+	* modeline.el (modeline-scrolling-method): new variable.
+	(mouse-drag-modeline): add reference to it in the docstring.
+	(mouse-drag-modeline): handle it.
+
+2000-01-08  Andy Piper  <andy@xemacs.org>
+
+	* gutter-items.el (update-tab-in-gutter): remove resize-subwindow
+	calls.
+	(remove-buffer-from-gutter-tab): ditto.
+
+2000-01-06  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+	* cus-edit.el (custom-hook-convert-widget): Fix comment.
+	(custom-face-edit): Fix grammatical error in help message.
+
+2000-01-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* movemail.el: Added.
+
+	* dumped-lisp.el (preloaded-file-list): Added movemail.el.
+
+2000-01-03  Didier Verna  <didier@xemacs.org>
+
+	* modeline.el (mouse-drag-modeline): remove the code related to
+	the modeline horizontal scrolling facility.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
@@ -33,7 +178,7 @@
 
 1999-12-21  Martin Buchholz  <martin@xemacs.org>
 
-	* byte-optimize.el (byte-optimize-plus): 
+	* byte-optimize.el (byte-optimize-plus):
 	Optimize (+ 1) to 1 instead of (1+ nil).
 
 	* files.el (basic-save-buffer): Rewrite for clarity.  Use (char-before).
@@ -64,7 +209,7 @@
 
 1999-12-13  Charles G Waldman  <cgw@alum.mit.edu>
 
-	* gnuserv.el (gnuserv-process-filter):  don't call 
+	* gnuserv.el (gnuserv-process-filter):  don't call
 	gnuserv-write-to-client when gnuserv-current-client is nil
 
 1999-12-14  Martin Buchholz <martin@xemacs.org>
@@ -266,7 +411,7 @@
 
 1999-10-06  Andy Piper  <andy@xemacs.org>
 
-	* files.el (recover-file): Don't use ls under windows for revert buffer. 
+	* files.el (recover-file): Don't use ls under windows for revert buffer.
 
 1999-09-25  Adrian Aichner  <adrian@xemacs.org>
 
@@ -285,8 +430,8 @@
 
 1999-09-27  Martin Buchholz  <martin@xemacs.org>
 
-	* modeline.el (modeline-format): 
-	Only purecopy the strings.  Else 
+	* modeline.el (modeline-format):
+	Only purecopy the strings.  Else
 	(nsublis '(("%p" . "%P")) (default-value 'modeline-format) :test 'equal)
 	barfs.
 
@@ -351,13 +496,13 @@
 
 1999-08-30  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
-	* obsolete.el (init-file-user): 
-	* startup.el: 
-	* packages.el (packages-compute-package-locations): 
-	* package-get.el (package-get-user-index-filename): 
-	* menubar-items.el (maybe-add-init-button): 
-	* info.el (Info-annotations-path): 
-	* dump-paths.el: 
+	* obsolete.el (init-file-user):
+	* startup.el:
+	* packages.el (packages-compute-package-locations):
+	* package-get.el (package-get-user-index-filename):
+	* menubar-items.el (maybe-add-init-button):
+	* info.el (Info-annotations-path):
+	* dump-paths.el:
 	Change `user-init-directory' to be an absolute path.
 	Use `user-init-directory' where appropriate.
 	Zap `init-file-user' and its uses.
@@ -420,7 +565,7 @@
 
 1999-09-03  Hrvoje Niksic  <hniksic@srce.hr>
 
-	* obsolete.el (isearch-yank-x-clipboard): Define it as an obsolete 
+	* obsolete.el (isearch-yank-x-clipboard): Define it as an obsolete
 	alias.
 
 	* isearch-mode.el (isearch-top-state): Restore isearch-word.
@@ -494,7 +639,7 @@
 	(isearch-update-ring): New function.
 	(isearch-done): Call it.
 	(isearch-done): New argument EDIT.
-	(isearch-repeat): If search string is empty, look up at the car of 
+	(isearch-repeat): If search string is empty, look up at the car of
 	the search ring; ignore the yank pointer.
 	(isearch-abort): Call isearch-done with NOPUSH.
 	(isearch-cancel): New function.
@@ -524,7 +669,7 @@
 	need to check isearch-fixed-case.
 	(isearch-toggle-case-fold): Update highlighting of all matches
 	before the pause.
-	(isearch-edit-string): 
+	(isearch-edit-string):
 
 1999-09-01  Hrvoje Niksic  <hniksic@srce.hr>
 
@@ -608,7 +753,7 @@
 
 	* faces.el (isearch-secondary): Create face here.
 
-	* isearch-mode.el: Rewrote the "lazy highlighting" code not to use 
+	* isearch-mode.el: Rewrote the "lazy highlighting" code not to use
 	timers.
 
 1999-08-27  Hrvoje Niksic  <hniksic@srce.hr>
--- a/lisp/about.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/about.el	Mon Aug 13 11:32:25 2007 +0200
@@ -56,6 +56,7 @@
 ;; `about-maintainer-info' (and maybe `about-hackers'.
 (defvar xemacs-hackers
   '((ajc      "Andrew Cosgriff"   "ajc@bing.wattle.id.au")
+    (aj       "Andreas Jaeger"    "aj@suse.de")
     (baw      "Barry Warsaw"      "bwarsaw@python.org")
     (bw       "Bob Weiner"        "weiner@beopen.com")
     (chr      "Christian Nybø"    "chr@mediascience.no")
@@ -987,6 +988,14 @@
 violation of HTML DTD's.  After graduation, spring 1999, he'll be
 looking for a job involving lisp programming, French and Russian.")
      (widget-insert ".\n"))
+    (aj
+     (widget-insert "\
+In the XEmacs team I'm responsible for the packages which means mainly
+applying patches and packaging the packages.
+
+I'm a software developer working for the SuSE Labs of the Linux
+distributor SuSE.  My main task is to improve the GNU C library.")
+     (widget-insert ".\n"))
 ))
 
 ;; Setup the buffer for a maintainer.
@@ -1197,6 +1206,9 @@
 Beta tester and last hacker of calendar.\n")
     (about-show-linked-info 'chr "\
 Maintainer of the XEmacs FAQ and proud author of `zap-up-to-char'.\n")
+    (about-show-linked-info 'aj "\
+`Package Patch Tender', beta tester and GNU libc developer.\n")
+
     (flet ((print-short (name addr &optional shortinfo)
 	     (concat (about-with-face name 'italic)
 		     (about-tabs name)
@@ -1263,7 +1275,7 @@
        (print-short "Per Abrahamsen" "abraham@dina.kvl.dk")
        (print-short "Gary Adams" "gra@zeppo.East.Sun.COM")
        (print-short "Gennady Agranov" "agranov@csa.CS.Technion.Ac.IL")
-       (print-short "Adrian Aichner" "aichner@ecf.teradyne.com")
+       (print-short "Adrian Aichner" "adrian@xemacs.org")
        (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")
@@ -1360,7 +1372,6 @@
        (print-short "Tudor Hulubei" "tudor@cs.unh.edu")
        (print-short "Tatsuya Ichikawa" "ichikawa@hv.epson.co.jp")
        (print-short "Andrew Innes" "andrewi@harlequin.co.uk")
-       (print-short "Andreas Jaeger" "aj@arthur.rhein-neckar.de")
        (print-short "Markku Jarvinen" "Markku.Jarvinen@simpukka.funet.fi")
        (print-short "Robin Jeffries" "robin.jeffries@sun.com")
        (print-short "Philip Johnson" "johnson@uhics.ics.Hawaii.Edu")
--- a/lisp/autoload.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/autoload.el	Mon Aug 13 11:32:25 2007 +0200
@@ -359,7 +359,7 @@
 (defun update-file-autoloads (file)
   "Update the autoloads for FILE in `generated-autoload-file'
 \(which FILE might bind in its local variables).
-This functions refuses to update autoloads files."
+This function refuses to update autoloads files."
   (interactive "fUpdate autoloads for file: ")
   (setq file (expand-file-name file))
   (when (and (file-newer-than-file-p file generated-autoload-file)
--- a/lisp/cus-edit.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/cus-edit.el	Mon Aug 13 11:32:25 2007 +0200
@@ -1,6 +1,6 @@
 ;;; cus-edit.el --- Tools for customizating Emacs and Lisp packages.
 ;;
-;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: Hrvoje Niksic <hniksic@xemacs.org>
@@ -2272,7 +2272,7 @@
   :format "%t: %v"
   :tag "Attributes"
   :extra-offset 12
-  :button-args '(:help-echo "Control whether this attribute have any effect")
+  :button-args '(:help-echo "Control whether this attribute has any effect")
   :args (mapcar (lambda (att)
 		  (list 'group
 			:inline t
@@ -2756,7 +2756,7 @@
   :tag "Hook")
 
 (defun custom-hook-convert-widget (widget)
-  ;; Handle `:custom-options'.
+  ;; Handle `:options'.
   (let* ((options (widget-get widget :options))
 	 (other `(editable-list :inline t
 				:entry-format "%i %d%v"
--- a/lisp/dumped-lisp.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/dumped-lisp.el	Mon Aug 13 11:32:25 2007 +0200
@@ -79,7 +79,7 @@
 	"text-mode"
 	"fill"
 	"auto-save"		; Added for 20.4
-
+	"movemail"              ; Added for 21.2
 	(when-feature windows-nt "winnt")
 	(when-feature lisp-float-type "float-sup")
 	"itimer"		; for vars auto-save-timeout and
--- a/lisp/files.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/files.el	Mon Aug 13 11:32:25 2007 +0200
@@ -1157,6 +1157,7 @@
     ("\\.m\\(?:[mes]\\|an\\)\\'" . nroff-mode)
     ("\\.icn\\'" . icon-mode)
     ("\\.\\(?:[ckz]?sh\\|shar\\)\\'" . sh-mode)
+    ("\\.pro\\'" . idlwave-mode)
     ;; #### Unix-specific!
     ("/\\.\\(?:bash_\\|z\\)?\\(profile\\|login\\|logout\\)\\'" . sh-mode)
     ("/\\.\\(?:[ckz]sh\\|bash\\|tcsh\\|es\\|xinit\\|startx\\)rc\\'" . sh-mode)
--- a/lisp/gutter-items.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/gutter-items.el	Mon Aug 13 11:32:25 2007 +0200
@@ -40,6 +40,11 @@
 	   (set-specifier default-gutter-visible-p val)
 	   (setq gutter-visible-p val)))
 
+(defvar gutter-buffers-tab nil
+  "A tab widget in the gutter for displaying buffers.
+Do not set this. Use `glyph-image-instance' and
+`set-image-instance-property' to change the properties of the tab.")
+
 (defcustom default-gutter-position
   (default-gutter-position)
   "The location of the default gutter. It can be 'top, 'bottom, 'left or
@@ -51,7 +56,8 @@
 		 (const :tag "right" 'right))
   :set #'(lambda (var val)
 	   (set-default-gutter-position val)
-	   (setq default-gutter-position val)))
+	   (setq default-gutter-position val)
+	   (when gutter-buffers-tab (update-tab-in-gutter))))
 
 ;;; The Buffers tab
 
@@ -59,10 +65,10 @@
   "Customization of `Buffers' tab."
   :group 'gutter)
 
-(defvar gutter-buffers-tab nil
-  "A tab widget in the gutter for displaying buffers.
-Do not set this. Use `glyph-image-instance' and
-`set-image-instance-property' to change the properties of the tab.")
+(defvar gutter-buffers-tab-orientation 'top
+  "Where the buffers tab currently is. Do not set this.")
+
+(defvar gutter-buffers-tab-extent nil)
 
 (defcustom buffers-tab-max-size 6
   "*Maximum number of entries which may appear on the \"Buffers\" tab.
@@ -102,7 +108,10 @@
 		 function)
   :group 'buffers-tab)
 
-(defcustom buffers-tab-face 'default
+(make-face 'buffers-tab "Face for displaying the buffers tab.")
+(set-face-parent 'buffers-tab 'default)
+
+(defcustom buffers-tab-face 'buffers-tab
   "*Face to use for displaying the buffers tab."
   :type 'face
   :group 'buffers-tab)
@@ -227,25 +236,51 @@
 
 (defun add-tab-to-gutter ()
   "Put a tab control in the gutter area to hold the most recent buffers."
+  (setq gutter-buffers-tab-orientation (default-gutter-position))
   (let ((gutter-string ""))
+    (unless gutter-buffers-tab-extent
+      (setq gutter-buffers-tab-extent (make-extent 0 0 gutter-string)))
     (set-extent-begin-glyph 
-     (make-extent 0 0 gutter-string)
+     gutter-buffers-tab-extent
      (setq gutter-buffers-tab 
 	   (make-glyph 
 	    (vector 'tab-control :descriptor "Buffers" :face buffers-tab-face
+		    :orientation gutter-buffers-tab-orientation
 		    :properties (list :items (buffers-tab-items))))))
     ;; This looks better than a 3d border
     (mapcar '(lambda (x)
 	       (when (valid-image-instantiator-format-p 'tab-control x)
 		 (set-specifier default-gutter-border-width 0 'global x)
-		 (set-specifier default-gutter gutter-string 'global x)))
+		 (set-specifier top-gutter nil 'global x)
+		 (set-specifier bottom-gutter nil 'global x)
+		 (set-specifier left-gutter nil 'global x)
+		 (set-specifier right-gutter nil 'global x)
+		 (set-specifier left-gutter-width 0 'global x)
+		 (set-specifier right-gutter-width 0 'global x)
+		 (cond ((eq gutter-buffers-tab-orientation 'top)
+			(set-specifier top-gutter gutter-string 'global x))
+		       ((eq gutter-buffers-tab-orientation 'bottom)
+			(set-specifier bottom-gutter gutter-string 'global x))
+		       ((eq gutter-buffers-tab-orientation 'left)
+			(set-specifier left-gutter gutter-string 'global x)
+			(set-specifier left-gutter-width
+				       (glyph-width gutter-buffers-tab)
+				       'global x))
+		       ((eq gutter-buffers-tab-orientation 'right)
+			(set-specifier right-gutter gutter-string 'global x)
+			(set-specifier right-gutter-width
+				       (glyph-width gutter-buffers-tab)
+				       'global x))
+		       )))
 	    (console-type-list))))
 
 (defun update-tab-in-gutter (&optional frame-or-buffer)
   "Update the tab control in the gutter area."
   (let ((locale (if (framep frame-or-buffer) frame-or-buffer)))
     (when (specifier-instance default-gutter-visible-p locale)
-      (unless gutter-buffers-tab 
+      (unless (and gutter-buffers-tab 
+		   (eq (default-gutter-position)
+		       gutter-buffers-tab-orientation))
 	(add-tab-to-gutter))
       (when (valid-image-instantiator-format-p 'tab-control)
 	(let ((inst (glyph-image-instance 
@@ -254,9 +289,7 @@
 		       (last-nonminibuf-window frame-or-buffer)))))
 	  (set-image-instance-property inst :items 
 				       (buffers-tab-items 
-					nil locale))
-	  (resize-subwindow inst (gutter-pixel-width) nil))
-	))))
+					nil locale)))))))
 
 (defun remove-buffer-from-gutter-tab ()
   "Remove the current buffer from the tab control in the gutter area."
@@ -268,9 +301,7 @@
 	(setq buffers (build-buffers-tab-internal 
 		       (list 
 			(get-buffer-create "*scratch*")))))
-      (set-image-instance-property inst :items buffers)
-      (resize-subwindow inst (gutter-pixel-width) nil)
-      )))
+      (set-image-instance-property inst :items buffers))))
 
 (add-hook 'kill-buffer-hook 'remove-buffer-from-gutter-tab)
 (add-hook 'create-frame-hook 'update-tab-in-gutter)
--- a/lisp/hyper-apropos.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/hyper-apropos.el	Mon Aug 13 11:32:25 2007 +0200
@@ -438,7 +438,9 @@
 	(if (and (or (symbolp defn) (symbolp (setq defn (car-safe defn))))
 		 defn
 		 show)
-	    (hyper-apropos-get-doc defn t))))))
+	    (hyper-apropos-get-doc defn t))
+	(or (memq major-mode '(hyper-apropos-mode hyper-apropos-help-mode))
+	  (setq hyper-apropos-prev-wconfig (current-window-configuration)))))))
 
 ;;;###autoload
 (defun hyper-describe-face (symbol &optional this-ref-buffer)
@@ -460,10 +462,9 @@
 			    ": "))
 		  (mapcar #'(lambda (x) (list (symbol-name x)))
 			  (face-list))
-		  nil t nil 'hyper-apropos-face-history)))
-     (list (if (string= val "")
-	       (progn (push (symbol-name v) hyper-apropos-face-history) v)
-	     (intern-soft val))
+		  nil t nil 'hyper-apropos-face-history
+		  (and v (symbol-name v)))))
+     (list (intern-soft val)
 	   current-prefix-arg)))
   (if (null symbol)
       (message "Sorry, nothing to describe.")
@@ -530,10 +531,10 @@
 			 (if v
 			     (format " (default %s): " v)
 			   ": "))
-		 obarray predicate t nil 'variable-history)))
-    (if (string= val "")
-	(progn (push (symbol-name v) variable-history) v)
-      (intern-soft val))))
+		 obarray predicate t nil 'variable-history
+		 (and v (symbol-name v)))))
+    (intern-soft val)))
+
 ;;;###autoload
 (define-obsolete-function-alias
   'hypropos-read-variable-symbol 'hyper-apropos-read-variable-symbol)
@@ -549,10 +550,9 @@
 				     (format "%s (default %s): " prompt fn)
 				   (format "%s: " prompt))
 				 obarray 'fboundp t nil
-				 'function-history)))
-    (if (equal val "")
-	(progn (push (symbol-name fn) function-history) fn)
-      (intern-soft val))))
+				 'function-history
+				 (and fn (symbol-name fn)))))
+    (intern-soft val)))
 
 (defun hyper-apropos-last-help (arg)
   "Go back to the last symbol documented in the *Hyper Help* buffer."
--- a/lisp/info.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/info.el	Mon Aug 13 11:32:25 2007 +0200
@@ -437,9 +437,15 @@
   "List of directories to search for Info documentation files.
 
 The first directory in this list, the \"dir\" file there will become
-the (dir)Top node of the Info documentation tree.  If you wish to
-modify the info search path, use `M-x customize-variable,
-Info-directory-list' to do so.")
+the (dir)Top node of the Info documentation tree.
+
+Note: DO NOT use the `customize' interface to change the value of this
+variable.  Its value is created dynamically on each startup, depending
+on XEmacs packages installed on the system.  If you want to change the
+search path, make the needed modifications on the variable's value
+from .emacs.  For instance:
+
+    (setq Info-directory-list (cons \"~/info\" Info-directory-list))")
 
 (defcustom Info-localdir-heading-regexp
     "^Locally installed XEmacs Packages:?"
@@ -1489,12 +1495,10 @@
     (or (equal tag "") (Info-find-node nil (format "<<%s>>" tag)))))
 
 ;;;###autoload
-(defun Info-visit-file ()
+(defun Info-visit-file (file)
   "Directly visit an info file."
-  (interactive)
-  (let* ((insert-default-directory nil)
-	 (file (read-file-name "Goto Info file: " "" "")))
-    (or (equal file "") (Info-find-node (expand-file-name file) "Top"))))
+  (interactive "fVisit Info file: ")
+  (Info-find-node (expand-file-name file) "Top"))
 
 (defun Info-restore-point (&optional always)
   "Restore point to same location it had last time we were in this node."
@@ -1513,13 +1517,33 @@
        (set-window-start (get-buffer-window (current-buffer))
 			 (+ (nth 2 entry) (point-min)))))
 
+(defvar Info-read-node-completion-table)
+
+;; This function is used as the "completion table" while reading a node name.
+;; It does completion using the alist in Info-read-node-completion-table
+;; unless STRING starts with an open-paren.
+(defun Info-read-node-name-1 (string predicate code)
+  (let ((no-completion (and (> (length string) 0) (eq (aref string 0) ?\())))
+    (cond ((eq code nil)
+	   (if no-completion
+	       string
+	     (try-completion string Info-read-node-completion-table predicate)))
+	  ((eq code t)
+	   (if no-completion
+	       nil
+	     (all-completions string Info-read-node-completion-table predicate)))
+	  ((eq code 'lambda)
+	   (if no-completion
+	       t
+	     (assoc string Info-read-node-completion-table))))))
+
 (defun Info-read-node-name (prompt &optional default)
   (Info-setup-initial)
   (let* ((completion-ignore-case t)
-	 (nodename (completing-read prompt
-				    (Info-build-node-completions)
-				    nil nil nil
-				    'Info-minibuffer-history)))
+	 (Info-read-node-completion-table (Info-build-node-completions))
+	 (nodename (completing-read prompt 'Info-read-node-name-1
+				    nil t nil 'Info-minibuffer-history
+				    default)))
     (if (equal nodename "")
 	(or default
 	    (Info-read-node-name prompt))
@@ -1576,10 +1600,14 @@
 ;;;###autoload
 (defun Info-search (regexp)
   "Search for REGEXP, starting from point, and select node it's found in."
-  (interactive "sSearch (regexp): ")
-  (if (equal regexp "")
-      (setq regexp Info-last-search)
-    (setq Info-last-search regexp))
+  (interactive (list
+		(read-from-minibuffer
+		 (if Info-last-search
+		     (format "Search (regexp, default %s): "
+			     Info-last-search)
+		   "Search (regexp): ")
+		 nil nil nil nil nil Info-last-search)))
+  (setq Info-last-search regexp)
   (with-search-caps-disable-folding regexp t
     (let ((found ())
           (onode Info-current-node)
@@ -1666,7 +1694,7 @@
        (skip-chars-forward (concat (or allowedchars "^,\t\n") "("))
        (if (looking-at "(")
 	   (skip-chars-forward "^)")))
-     (skip-chars-backward " ")
+     (skip-chars-backward " .")
      (point))))
 
 (defun Info-next (&optional n)
@@ -1761,7 +1789,8 @@
 						  default ") ")
 					"Follow reference named: ")
 				      completions nil t nil
-				      'Info-minibuffer-history)))
+				      'Info-minibuffer-history
+				      default)))
 	   (if (and (string= item "") default)
 	       (list default)
 	     (list item)))
@@ -1845,7 +1874,19 @@
 	  (if (looking-at ":")
 	      (buffer-substring beg (1- (point)))
 	    (skip-chars-forward " \t\n")
-	    (Info-following-node-name (if multi-line "^.,\t" "^.,\t\n"))))
+	    ;; Kludge.
+	    ;; Allow dots in node name not followed by whitespace.
+	    (re-search-forward
+	     (concat "\\(([^)]+)[^."
+		     (if multi-line "" "\n")
+		     "]*\\|\\([^.,\t"
+		     (if multi-line "" "\n")
+		     ;; We consider dots followed by newline as
+		     ;; end of nodename even if multil-line.
+		     ;; Also stops at .).  It is generated by @pxref.
+		     ;; Skips sequential dots.
+		     "]\\|\\.+[^ \t\n)]\\)+\\)"))
+	    (match-string 1)))
     (while (setq i (string-match "\n" str i))
       (aset str i ?\ ))
     str))
@@ -1888,7 +1929,8 @@
 						   default)
 					   "Menu item: ")
 				       completions nil t nil
-				       'Info-minibuffer-history)))
+				       'Info-minibuffer-history
+				       default)))
 	 ;; we rely on the fact that completing-read accepts an input
 	 ;; of "" even when the require-match argument is true and ""
 	 ;; is not a valid possibility
@@ -2095,7 +2137,7 @@
   (interactive "sIndex topic: ")
   (let ((pattern (format "\n\\* \\([^\n:]*%s[^\n:]*\\):[ \t]*%s"
 			 (regexp-quote topic)
-			 "\\([^.\n]*\\)\\.[ t]*\\([0-9]*\\)"))
+			 "\\(.*\\)\\.[ t]*\\([0-9]*\\)$"))
 	node)
     (message "Searching index for `%s'..." topic)
     (Info-goto-node "Top")
--- a/lisp/menubar-items.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/menubar-items.el	Mon Aug 13 11:32:25 2007 +0200
@@ -93,17 +93,17 @@
 		    (or buffer-undo-list pending-undo-list))
        :suffix (if (or (eq last-command 'undo)
 		       (eq last-command 'advertised-undo))
-		       "More" "")]
+		   "More" "")]
       ["Redo" redo
        :included (fboundp 'redo)
        :active (not (or (eq buffer-undo-list t)
-			 (eq last-buffer-undo-list nil)
-			 (not (or (eq last-buffer-undo-list buffer-undo-list)
-				  (and (null (car-safe buffer-undo-list))
-				       (eq last-buffer-undo-list
-					   (cdr-safe buffer-undo-list)))))
-			 (or (eq buffer-undo-list pending-undo-list)
-			     (eq (cdr buffer-undo-list) pending-undo-list))))
+			(eq last-buffer-undo-list nil)
+			(not (or (eq last-buffer-undo-list buffer-undo-list)
+				 (and (null (car-safe buffer-undo-list))
+				      (eq last-buffer-undo-list
+					  (cdr-safe buffer-undo-list)))))
+			(or (eq buffer-undo-list pending-undo-list)
+			    (eq (cdr buffer-undo-list) pending-undo-list))))
        :suffix (if (eq last-command 'redo) "More" "")]
       ["Cut" kill-primary-selection
        :active (selection-owner-p)]
@@ -634,24 +634,24 @@
 	  (force-cursor-redisplay))
 	:style radio
 	:selected (eq bar-cursor t)]
-	["Bar cursor (2 pixels)"
-	 (progn
-	   (customize-set-variable 'bar-cursor 2)
-	   (force-cursor-redisplay))
-	 :style radio
-	 :selected (and bar-cursor (not (eq bar-cursor t)))]
-	"------"
-	["Line Numbers"
-	 (progn
-	   (customize-set-variable 'line-number-mode (not line-number-mode))
-	   (redraw-modeline))
-	 :style toggle :selected line-number-mode]
-	["Column Numbers"
-	 (progn
-	   (customize-set-variable 'column-number-mode
-				   (not column-number-mode))
-	   (redraw-modeline))
-	 :style toggle :selected column-number-mode]
+       ["Bar cursor (2 pixels)"
+	(progn
+	  (customize-set-variable 'bar-cursor 2)
+	  (force-cursor-redisplay))
+	:style radio
+	:selected (and bar-cursor (not (eq bar-cursor t)))]
+       "------"
+       ["Line Numbers"
+	(progn
+	  (customize-set-variable 'line-number-mode (not line-number-mode))
+	  (redraw-modeline))
+	:style toggle :selected line-number-mode]
+       ["Column Numbers"
+	(progn
+	  (customize-set-variable 'column-number-mode
+				  (not column-number-mode))
+	  (redraw-modeline))
+	:style toggle :selected column-number-mode]
        )
       ("Menubar Appearance"
        ["Buffers Menu Length..."
@@ -1142,11 +1142,16 @@
 with a star at the end of the list."
   (let* ((nam1 (buffer-name buf1))
 	 (nam2 (buffer-name buf2))
+	 (inv1p (not (null (string-match "\\` " nam1))))
+	 (inv2p (not (null (string-match "\\` " nam2))))
 	 (star1p (not (null (string-match "\\`*" nam1))))
 	 (star2p (not (null (string-match "\\`*" nam2)))))
-    (if (not (eq star1p star2p))
-	(not star1p)
-      (string-lessp nam1 nam2))))
+    (cond ((not (eq inv1p inv2p))
+	   (not inv1p))
+	  ((not (eq star1p star2p))
+	   (not star1p))
+	  (t
+	   (string-lessp nam1 nam2)))))
 
 (defun sort-buffers-menu-by-mode-then-alphabetically (buf1 buf2)
   "For use as a value of `buffers-menu-sort-function'.
@@ -1154,15 +1159,23 @@
 beginning with a star at the end of the list."
   (let* ((nam1 (buffer-name buf1))
 	 (nam2 (buffer-name buf2))
+	 (inv1p (not (null (string-match "\\` " nam1))))
+	 (inv2p (not (null (string-match "\\` " nam2))))
 	 (star1p (not (null (string-match "\\`*" nam1))))
 	 (star2p (not (null (string-match "\\`*" nam2))))
 	 (mode1 (symbol-value-in-buffer 'major-mode buf1))
 	 (mode2 (symbol-value-in-buffer 'major-mode buf2)))
-    (cond ((not (eq star1p star2p)) (not star1p))
+    (cond ((not (eq inv1p inv2p))
+	   (not inv1p))
+	  ((not (eq star1p star2p))
+	   (not star1p))
 	  ((and star1p star2p (string-lessp nam1 nam2)))
-	  ((string-lessp mode1 mode2) t)
-	  ((string-lessp mode2 mode1) nil)
-	  (t (string-lessp nam1 nam2)))))
+	  ((string-lessp mode1 mode2)
+	   t)
+	  ((string-lessp mode2 mode1)
+	   nil)
+	  (t
+	   (string-lessp nam1 nam2)))))
 
 ;; this version is too slow on some machines.
 (defun slow-format-buffers-menu-line (buffer)
@@ -1544,4 +1557,4 @@
 (provide 'x-menubar)
 (provide 'menubar-items)
 
-;;; x-menubar.el ends here.
+;;; menubar-items.el ends here.
--- a/lisp/minibuf.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/minibuf.el	Mon Aug 13 11:32:25 2007 +0200
@@ -77,10 +77,12 @@
 (defvar minibuffer-completion-confirm nil
   "Non-nil => demand confirmation of completion before exiting minibuffer.")
 
-(defvar minibuffer-confirm-incomplete nil
+(defcustom minibuffer-confirm-incomplete nil
   "If true, then in contexts where completing-read allows answers which
 are not valid completions, an extra RET must be typed to confirm the
-response.  This is helpful for catching typos, etc.")
+response.  This is helpful for catching typos, etc."
+  :type 'boolean
+  :group 'minibuffer)
 
 (defcustom completion-auto-help t
   "*Non-nil means automatically provide help for invalid completion input."
@@ -1248,7 +1250,9 @@
 If N is negative, find the next or Nth next match."
   (interactive
    (let ((enable-recursive-minibuffers t)
-	 (minibuffer-history-sexp-flag nil))
+	 (minibuffer-history-sexp-flag nil)
+	 (minibuffer-max-depth (and minibuffer-max-depth
+				    (1+ minibuffer-max-depth))))
      (if (eq 't (symbol-value minibuffer-history-variable))
 	 (error "History is not being recorded in this context"))
      (list (read-from-minibuffer "Previous element matching (regexp): "
@@ -1296,7 +1300,9 @@
 If N is negative, find the previous or Nth previous match."
   (interactive
    (let ((enable-recursive-minibuffers t)
-	 (minibuffer-history-sexp-flag nil))
+	 (minibuffer-history-sexp-flag nil)
+	 (minibuffer-max-depth (and minibuffer-max-depth
+				    (1+ minibuffer-max-depth))))
      (if (eq t (symbol-value minibuffer-history-variable))
 	 (error "History is not being recorded in this context"))
      (list (read-from-minibuffer "Next element matching (regexp): "
@@ -1646,7 +1652,7 @@
 This will prompt with a dialog box if appropriate, according to
  `should-use-dialog-box-p'.
 Value is not expanded---you must call `expand-file-name' yourself.
-Value is subject to interpreted by substitute-in-file-name however.
+Value is subject to interpretation by `substitute-in-file-name' however.
 Default name to DEFAULT if user enters a null string.
  (If DEFAULT is omitted, the visited file name is used,
   except that if INITIAL-CONTENTS is specified, that combined with DIR is
--- a/lisp/modeline.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/modeline.el	Mon Aug 13 11:32:25 2007 +0200
@@ -19,7 +19,7 @@
 ;; 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 
+;; 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.
 
@@ -59,11 +59,36 @@
   :type 'boolean
   :group 'modeline)
 
+(defcustom modeline-scrolling-method nil
+  "*If non-nil, dragging the modeline with the mouse may also scroll its
+text horizontally (vertical motion controls window resizing and horizontal
+motion controls modeline scrolling).
+
+With a value of t, the modeline text is scrolled in the same direction as
+the mouse motion. With a value of 'scrollbar, the modeline is considered as
+a scrollbar for its own text, which then moves in the opposite direction."
+  :type '(choice (const :tag "none" nil)
+		 (const :tag "text" t)
+		 (const :tag "scrollbar" scrollbar))
+  :set (lambda (sym val)
+	 (set-default sym val)
+	 (when (featurep 'x)
+	   (cond ((eq val t)
+		  (set-glyph-image modeline-pointer-glyph "hand2" 'global 'x))
+		 ((eq val 'scrollbar)
+		  (set-glyph-image modeline-pointer-glyph "fleur" 'global 'x))
+		 (t
+		  (set-glyph-image modeline-pointer-glyph "sb_v_double_arrow"
+				   'global 'x)))))
+  :group 'modeline)
+
 (defun mouse-drag-modeline (event)
   "Resize a window by dragging its modeline.
 This command should be bound to a button-press event in modeline-map.
 Holding down a mouse button and moving the mouse up and down will
-make the clicked-on window taller or shorter."
+make the clicked-on window taller or shorter.
+
+See also the variable `modeline-scrolling-method'."
   (interactive "e")
   (or (button-press-event-p event)
       (error "%s must be invoked by a mouse-press" this-command))
@@ -79,9 +104,9 @@
 	  (start-event-frame (event-frame event))
 	  (start-event-window (event-window event))
 	  (start-nwindows (count-windows t))
-;;	  (hscroll-delta (face-width 'modeline))
-;;	  (start-hscroll (modeline-hscroll (event-window event)))
-;	  (start-x-pixel (event-x-pixel event))
+	  (hscroll-delta (face-width 'modeline))
+	  (start-hscroll (modeline-hscroll (event-window event)))
+	  (start-x-pixel (event-x-pixel event))
 	  (last-timestamp 0)
 	  default-line-height
 	  modeline-height
@@ -141,7 +166,9 @@
 	       ;; scroll) nore Y pos (modeline drag) have changed.
 	       (and modeline-click-swaps-buffers
 		    (= depress-line (event-y event))
-;;		    (= start-hscroll (modeline-hscroll start-event-window))
+		    (or (not modeline-scrolling-method)
+			(= start-hscroll
+			   (modeline-hscroll start-event-window)))
 		    (modeline-swap-buffers event)))
 	      ((button-event-p event)
 	       (setq done t))
@@ -153,11 +180,14 @@
 		  drag-divider-event-lag)
 	       nil)
 	      (t
-;;		 (set-modeline-hscroll start-event-window
-;;				       (+ (/ (- (event-x-pixel event) 
-;;						start-x-pixel)
-;;					     hscroll-delta)
-;;					  start-hscroll))
+	       (when modeline-scrolling-method
+		 (let ((delta (/ (- (event-x-pixel event) start-x-pixel)
+				 hscroll-delta)))
+		   (set-modeline-hscroll start-event-window
+					 (if (eq modeline-scrolling-method t)
+					     (- start-hscroll delta)
+					   (+ start-hscroll delta)))
+		   ))
 	       (setq last-timestamp (event-timestamp event)
 		     y (event-y-pixel event)
 		     edges (window-pixel-edges start-event-window)
@@ -263,7 +293,7 @@
 (make-face 'modeline-mousable "Face for mousable portions of the modeline.")
 (set-face-parent 'modeline-mousable 'modeline nil '(default))
 (when (featurep 'window-system)
-  (set-face-foreground 'modeline-mousable 
+  (set-face-foreground 'modeline-mousable
 		       '(((default color x) . "firebrick")
 			 ((default color mswindows) . "firebrick"))
 			 'global))
@@ -307,7 +337,7 @@
 		       '(((default color x) . "green4")
 			 ((default color x) . "forestgreen")
 			 ((default color mswindows) . "green4")
-			 ((default color mswindows) . "forestgreen")) 
+			 ((default color mswindows) . "forestgreen"))
 		       'global))
 
 (defvar modeline-mousable-minor-mode-extent (make-extent nil nil)
@@ -391,7 +421,7 @@
 	       name)))
 	(if (setq el (assq toggle minor-mode-alist))
 	    (setcdr el (list hacked-name))
-	  (funcall add-elt 
+	  (funcall add-elt
 		   (list toggle hacked-name)
 		   'minor-mode-alist))))
     (when keymap
@@ -508,7 +538,7 @@
 	   "Face for the buffer ID string in the modeline.")
 (set-face-parent 'modeline-buffer-id 'modeline nil '(default))
 (when (featurep 'window-system)
-  (set-face-foreground 'modeline-buffer-id 
+  (set-face-foreground 'modeline-buffer-id
 		       '(((default color x) . "blue4")
 			 ((default color mswindows) . "blue4"))
 		       'global))
@@ -521,7 +551,7 @@
 (defvar modeline-buffer-id-extent (make-extent nil nil)
   "Extent covering the whole of the buffer-id string.")
 (set-extent-face modeline-buffer-id-extent 'modeline-buffer-id)
-  
+
 (defvar modeline-buffer-id-left-extent (make-extent nil nil)
 "Extent covering the left half of the buffer-id string.")
 (set-extent-keymap modeline-buffer-id-left-extent
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/movemail.el	Mon Aug 13 11:32:25 2007 +0200
@@ -0,0 +1,60 @@
+;;; movemail.el --- move mail spool to a place where XEmacs can munge it
+
+;; 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 handles calling movemail with the right locking command
+;; line options.
+
+;;; Code:
+
+(defvar mail-lock-method
+  (let ((stuff (getenv "EMACSLOCKMETHOD")))
+    (if stuff
+	(intern stuff)
+      configure-mail-lock-method))
+  "mail spool locking method used by thios instance of XEmacs.
+This must be one of the symbols in MAIL-LOCK-METHODS.")
+
+(defun move-mail-spool (from to &optional buffer pop-password)
+  "Move mail spool in file FROM to file TO.
+BUFFER is a buffer for error messages.
+POP-PASSWORD is a password for POP mailbox access."
+  (apply 'call-process
+	 (expand-file-name "movemail" exec-directory)
+	 nil buffer nil
+	 "-m"
+	 (symbol-name mail-lock-method)
+	 from to
+	 (and pop-password
+	      (list pop-password))))
+
+;;; movemail.el ends here
--- a/lisp/mule/mule-cmds.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/mule/mule-cmds.el	Mon Aug 13 11:32:25 2007 +0200
@@ -168,11 +168,15 @@
   ;;(setq default-keyboard-coding-system coding-system)
   (setq keyboard-coding-system coding-system)
   ;;(setq default-process-coding-system (cons coding-system coding-system))
+  ;; Refer to coding-system-for-read and coding-system-for-write
+  ;; so that C-x RET c works.
   (add-hook 'comint-exec-hook
 	    `(lambda ()
 	       (let ((proc (get-buffer-process (current-buffer))))
-		 (set-process-input-coding-system  proc ',coding-system)
-		 (set-process-output-coding-system proc ',coding-system)))
+		 (set-process-input-coding-system
+		  proc (or coding-system-for-read ',coding-system))
+		 (set-process-output-coding-system
+		  proc (or coding-system-for-write ',coding-system))))
 	    'append)
   (setq file-name-coding-system coding-system))
 
--- a/lisp/mule/mule-misc.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/mule/mule-misc.el	Mon Aug 13 11:32:25 2007 +0200
@@ -163,8 +163,8 @@
 (defalias 'sref 'aref)
 (defalias 'map-char-concat 'mapcar)
 (defun char-bytes (character)
-  "Return number of length a CHARACTER occupies in a string or buffer.
-It returns only 1 in XEmacs.  It is for compatibility with MULE 2.3."
+  "Return number of bytes a CHARACTER occupies in a string or buffer.
+It always returns 1 in XEmacs.  It is for compatibility with MULE 2.3."
   1)
 (defalias 'char-length 'char-bytes)
 
@@ -208,19 +208,6 @@
 ;	(cons charset dest)
 ;	))))
 
-(defun char-octet (ch &optional n)
-  "Return the octet numbered N (should be 0 or 1) of char CH.
-N defaults to 0 if omitted."
-  (let ((split (split-char ch)))
-    (setq n (or n 0))
-    (cond ((eq n 0)
-	   (nth 1 split))
-	  ((eq n 1)
-	   (nth 2 split))
-	  (t (error "n must be 0 or 1")))))
-;; Made obsolete June 15, 1999.  Delete ASAP.
-(make-obsolete 'char-octet "Use split-char")
-
 ;(defun split-char-or-char-int (char)
 ;  "Return list of charset and one or two position-codes of CHAR.
 ;CHAR must be character or integer."
--- a/lisp/process.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/process.el	Mon Aug 13 11:32:25 2007 +0200
@@ -321,7 +321,7 @@
 `set-process-filter') are stream-oriented.  That means UDP datagrams are
 not guaranteed to be sent and received in discrete packets. (But small
 datagrams around 500 bytes that are not truncated by `process-send-string'
-are usually fine.)  Note further that UDP protocol does not guard against 
+are usually fine.)  Note further that UDP protocol does not guard against
 lost packets."
   (open-network-stream-internal name buffer host service protocol))
 
@@ -342,13 +342,11 @@
 		start (1+ end)))
 	(concat result (substring argument start))))))
 
-(defun exec-to-string (command)
-  "Execute COMMAND as an external process and return the output of that
-process as a string"
-  ;; by "William G. Dubuque" <wgd@zurich.ai.mit.edu>
+(defun shell-command-to-string (command)
+  "Execute shell command COMMAND and return its output as a string."
   (with-output-to-string
     (call-process shell-file-name nil t nil shell-command-switch command)))
 
-(defalias 'shell-command-to-string 'exec-to-string)
+(defalias 'exec-to-string 'shell-command-to-string)
 
 ;;; process.el ends here
--- a/lisp/startup.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/lisp/startup.el	Mon Aug 13 11:32:25 2007 +0200
@@ -30,7 +30,7 @@
 
 ;; This file is dumped with XEmacs.
 
-;; -batch, -t, and -nw are processed by main() in emacs.c and are 
+;; -batch, -t, and -nw are processed by main() in emacs.c and are
 ;; never seen by lisp code.
 
 ;; -version and -help are special-cased as well: they imply -batch,
@@ -395,11 +395,11 @@
 
       (setq emacs-roots (paths-find-emacs-roots invocation-directory
 						invocation-name))
-    
+
       (if debug-paths
 	  (princ (format "emacs-roots:\n%S\n" emacs-roots)
 		 'external-debugging-output))
-    
+
       (if (null emacs-roots)
 	  (startup-find-roots-warning)
 	(startup-setup-paths emacs-roots
@@ -413,7 +413,7 @@
 	     lisp-directory)
 	(load (expand-file-name (file-name-sans-extension autoload-file-name)
 				lisp-directory) nil t))
-    
+
     (if (not inhibit-autoloads)
 	(progn
 	  (if (not inhibit-early-packages)
@@ -495,7 +495,7 @@
   ;;		   (and (not (equal string "")) string)))))
   ;;	(and ctype
   ;;	     (string-match iso-8859-1-locale-regexp ctype)))
-  ;;      (progn 
+  ;;      (progn
   ;;	(standard-display-european t)
   ;;	(require 'iso-syntax)))
 
@@ -597,7 +597,7 @@
 
     ;;; Load init files.
     (load-init-file)
-    
+
     (with-current-buffer (get-buffer "*scratch*")
       (erase-buffer)
       ;; (insert initial-scratch-message)
@@ -622,7 +622,7 @@
     ;; If -batch, terminate after processing the command options.
     (when (noninteractive) (kill-emacs t))))
 
-(defun load-terminal-library ()	      
+(defun load-terminal-library ()
   (when term-file-prefix
     (let ((term (getenv "TERM"))
 	  hyphend)
@@ -785,7 +785,7 @@
 	  (setq end-of-options t))
 	 (t
 	  (setq file-p t)))
-	
+
 	(when file-p
 	  (setq file-p nil)
 	  (incf file-count)
@@ -823,7 +823,7 @@
 	       (setq e (read-key-sequence
 			(let ((p (keymap-prompt map t)))
 			  (cond ((symbolp map)
-				 (if p 
+				 (if p
 				     (format "%s %s " map p)
 				   (format "%s " map)))
 				(p)
@@ -902,7 +902,7 @@
 (defun startup-center-spaces (glyph)
   ;; Return the number of spaces to insert in order to center
   ;; the given glyph (may be a string or a pixmap).
-  ;; Assume spaces are as wide as avg-pixwidth.  
+  ;; Assume spaces are as wide as avg-pixwidth.
   ;; Won't be quite right for proportional fonts, but it's the best we can do.
   ;; Maybe the new redisplay will export something a glyph-width function.
   ;;; #### Yes, there is a glyph-width function but it isn't quite what
@@ -913,7 +913,7 @@
   ;; This function is used in about.el too.
   (let* ((avg-pixwidth     (round (/ (frame-pixel-width) (frame-width))))
 	 (fill-area-width  (* avg-pixwidth (- fill-column left-margin)))
-	 (glyph-pixwidth   (cond ((stringp glyph) 
+	 (glyph-pixwidth   (cond ((stringp glyph)
 				  (* avg-pixwidth (length glyph)))
 				 ;; #### the pixmap option should be removed
 				 ;;((pixmapp glyph)
@@ -933,12 +933,12 @@
 	   `( "\
 Sun provides support for the WorkShop/XEmacs integration package only.
 All other XEmacs packages are provided to you \"AS IS\".\n"
-	      ,@(let ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES") 
+	      ,@(let ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES")
 				(getenv "LANG"))))
 		  (if (and
 		       (not (featurep 'mule)) ;; Already got mule?
 		       ;; No Mule support on tty's yet
-		       (not (eq 'tty (console-type))) 
+		       (not (eq 'tty (console-type)))
 		       lang ;; Non-English locale?
 		       (not (string= lang "C"))
 		       (not (string-match "^en" lang))
@@ -950,7 +950,7 @@
 XEmacs, by either running the command `xemacs-mule', or by using the X resource
 `ESERVE*defaultXEmacsPath: xemacs-mule' when starting XEmacs from Sun WorkShop.
 \n")))))
-     ((key describe-no-warranty) 
+     ((key describe-no-warranty)
       ": "(face (red bold) "XEmacs comes with ABSOLUTELY NO WARRANTY\n"))
      ((key describe-copying)
       ": conditions to give out copies of XEmacs\n")
@@ -963,11 +963,11 @@
 Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved.
 Copyright (C) 1994-1996 Board of Trustees, University of Illinois
 Copyright (C) 1995-1996 Ben Wing\n"))
-    
+
     ((face (blue bold underline) "\nInformation, on-line help:\n\n")
      "XEmacs comes with plenty of documentation...\n\n"
      ,@(if (string-match "beta" emacs-version)
-	   `((key describe-beta) 
+	   `((key describe-beta)
 	     ": " (face (red bold)
 			"This is an Experimental version of XEmacs.\n"))
 	 `( "\n"))
@@ -996,7 +996,7 @@
 ;  "If non-nil, function called to provide the startup logo.
 ;This function should return an initialized glyph if it is used.")
 
-;; This will hopefully go away when gettext is functionnal.
+;; This will hopefully go away when gettext is functional.
 (defconst splash-frame-static-body
   `(,(emacs-version) "\n\n"
     (face italic "`C-' means the control key,`M-' means the meta key\n\n")))
@@ -1128,7 +1128,7 @@
 	(paths-construct-info-path roots
 				   early-packages late-packages last-packages))
 
-  
+
   (if debug-paths
       (princ (format "Info-directory-list:\n%S\n" Info-directory-list)
 	     'external-debugging-output))
@@ -1137,7 +1137,7 @@
       (progn
 	(setq lock-directory (paths-find-lock-directory roots))
 	(setq superlock-file (paths-find-superlock-file lock-directory))
-	
+
 	(if debug-paths
 	    (progn
 	      (princ (format "lock-directory:\n%S\n" lock-directory)
@@ -1158,7 +1158,7 @@
   (if debug-paths
       (princ (format "exec-path:\n%S\n" exec-path)
 	     'external-debugging-output))
-  
+
   (setq doc-directory (paths-find-doc-directory roots))
 
   (if debug-paths
--- a/lwlib/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,27 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-15  Andy Piper  <andy@xemacs.org>
+
+	* lwlib-Xlw.c (lw_update_one_widget): make sure global
+	properties gets set.
+
+2000-01-07  Martin Buchholz  <martin@xemacs.org>
+
+	* config.h.in (ATHENA_INCLUDE): CPP trickery to make old cpps happy.
+	This extends support for gcc 2.6 (e.g. on BSD/OS 2.0)
+
+	* lwlib.c: Fix up memset calls.
+
+	* lwlib-Xm.c (xm_update_text): Warning suppression.
+	(xm_update_text_field): Warning suppression.
+
+2000-01-03  Martin Buchholz  <martin@xemacs.org>
+
+	* lwlib-Xaw.c (xaw_update_one_widget): Emergency fix for this crash:
+	(yes-or-no-p-dialog-box "Yes or No")
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/lwlib/config.h.in	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/config.h.in	Mon Aug 13 11:32:25 2007 +0200
@@ -32,9 +32,12 @@
 /* The path to the Athena widgets - the usual value is `X11/Xaw' */
 #undef ATHENA_H_PATH
 
-/* For use in #include statements.  This extra level of macro indirection
-   is necessary because you can't use macros directly within <> or "" */
-#define ATHENA_INCLUDE(header_file) <ATHENA_H_PATH/header_file>
+/* For use in #include statements.
+   You can't use macros directly within the <> of a #include statement.
+   The multiply nested macros are necessary to make old gcc's happy. */
+#define INCLUDE_GLUE_2(dirname,basename) <##dirname##/##basename##>
+#define INCLUDE_GLUE_1(dirname,basename) INCLUDE_GLUE_2(dirname,basename)
+#define ATHENA_INCLUDE(header_file) INCLUDE_GLUE_1(ATHENA_H_PATH,header_file)
 
 
 #endif /* _LWLIB_CONFIG_H_ */
--- a/lwlib/lwlib-Xaw.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/lwlib-Xaw.c	Mon Aug 13 11:32:25 2007 +0200
@@ -146,7 +146,7 @@
       }
 #endif /* LWLIB_DIALOGS_ATHENA */
 #ifdef LWLIB_WIDGETS_ATHENA
-  else if (XtIsSubclass (widget, labelWidgetClass))
+  else if (XtClass (widget) == labelWidgetClass)
       {
 	Arg al [1];
 	XtSetArg (al [0], XtNlabel, val->value);
--- a/lwlib/lwlib-Xlw.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/lwlib-Xlw.c	Mon Aug 13 11:32:25 2007 +0200
@@ -536,6 +536,9 @@
 		       widget_value* val, Boolean deep_p)
 {
   WidgetClass class = XtClass (widget);
+  /* Update up global arg values. */
+  if (val->args && val->args->nargs)
+    XtSetValues (widget, val->args->args, val->args->nargs);
 
   if (0)
     ;
--- a/lwlib/lwlib-Xm.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/lwlib-Xm.c	Mon Aug 13 11:32:25 2007 +0200
@@ -680,7 +680,7 @@
 static void
 xm_update_text (widget_instance* instance, Widget widget, widget_value* val)
 {
-  XmTextSetString (widget, val->value ? val->value : "");
+  XmTextSetString (widget, val->value ? val->value : (char *) "");
   XtRemoveAllCallbacks (widget, XmNactivateCallback);
   XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
   XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
@@ -692,7 +692,7 @@
 xm_update_text_field (widget_instance* instance, Widget widget,
 		      widget_value* val)
 {
-  XmTextFieldSetString (widget, val->value ? val->value : "");
+  XmTextFieldSetString (widget, val->value ? val->value : (char *) "");
   XtRemoveAllCallbacks (widget, XmNactivateCallback);
   XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
   XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
--- a/lwlib/lwlib.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/lwlib/lwlib.c	Mon Aug 13 11:32:25 2007 +0200
@@ -111,7 +111,7 @@
     }
   if (wv)
     {
-      memset (wv, 0, sizeof (widget_value));
+      memset (wv, '\0', sizeof (widget_value));
     }
   return wv;
 }
@@ -188,7 +188,7 @@
   if (val->scrollbar_data)
     *copy->scrollbar_data = *val->scrollbar_data;
   else
-    memset (copy->scrollbar_data, 0, sizeof (scrollbar_values));
+    memset (copy->scrollbar_data, '\0', sizeof (scrollbar_values));
 }
 
 /*
@@ -358,7 +358,7 @@
   safe_free_str (info->type);
   safe_free_str (info->name);
   free_widget_value_tree (info->val);
-  memset ((void*)info, 0xDEADBEEF, sizeof (widget_info));
+  memset (info, '\0', sizeof (widget_info));
   free (info);
 }
 
@@ -393,7 +393,7 @@
 static void
 free_widget_instance (widget_instance *instance)
 {
-  memset ((void *) instance, 0xDEADBEEF, sizeof (widget_instance));
+  memset (instance, '\0', sizeof (widget_instance));
   free (instance);
 }
 
@@ -1368,11 +1368,11 @@
   if (!wv->args)
     {
       wv->args = (widget_args *) malloc (sizeof (widget_args));
-      memset (wv->args, 0, sizeof (widget_args));
+      memset (wv->args, '\0', sizeof (widget_args));
       wv->args->ref_count = 1;
       wv->args->nargs = 0;
       wv->args->args = (ArgList) malloc (sizeof (Arg) * 10);
-      memset (wv->args->args, 0, sizeof (Arg) * 10);
+      memset (wv->args->args, '\0', sizeof (Arg) * 10);
     }
   
   if (wv->args->nargs > 10)
--- a/man/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,78 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* xemacs/regs.texi: Synch with FSF 20.5.
+
+2000-01-14  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* info.texi: Change cross reference from emacs to xemacs.
+
+2000-01-14  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* xemacs/mini.texi: Synch with FSF 20.5.  Update.
+
+2000-01-16  Martin Buchholz  <martin@xemacs.org>
+
+	* xemacs-faq.texi (Q2.1.15): Fix up @table formatting.
+
+2000-01-14  Martin Buchholz  <martin@xemacs.org>
+
+	* xemacs-faq.texi (Q2.1.15): Update dbx/gdb debugging info.
+
+2000-01-14  Sandra Wambold  <wambold@xemacs.org>
+
+	* xemacs-faq.texi: removed out-of-date XEmacs 19 questions.
+
+2000-01-14  Sandra Wambold  <wambold@xemacs.org>
+
+	* xemacs-faq.texi: Updated Macintosh information,
+	updated OS/2 info, changed turn-on-pending-delete answer.
+
+2000-01-08  Martin Buchholz  <martin@xemacs.org>
+
+	* xemacs-faq.texi (Q2.1.15): Make debugging info current.
+
+2000-01-08  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* lispref/control.texi (Signaling Errors): Document that `signal'
+	is continuable.
+	(Signaling Errors): Document `cerror', `signal-error', and
+	`check-argument-type'.
+	(Handling Errors): Mention `debug-on-signal'.
+	(Error Symbols): Document `define-error'.
+	(Processing of Errors): Document `display-error' and
+	`error-message-string'.
+
+2000-01-05  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* internals/internals.texi: Remove latin-1 char.
+
+2000-01-05  Didier Verna  <didier@xemacs.org>
+
+	* xemacs/custom.texi (Key bindings using strings): add missing
+	whitespace.
+
+	* xemacs/xemacs.texi (Top):
+	* new-users-guide/new-users-guide.texi (Top): add missing `@top'
+	node.
+
+1999-12-24  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* lispref/minibuf.texi (Reading a Password): New section.
+
+1999-12-21  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* lispref/minibuf.texi: Remove documentation about
+	minibuffer-local-ns-map, read-no-blanks-input.
+
+1999-12-21  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* lispref/minibuf.texi: Partial Synch with FSF manual.
+	Add description about DEFAULT argument of reading functions.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/man/info.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/info.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -3,7 +3,7 @@
 @setfilename ../info/info.info
 @settitle Info
 @comment %**end of header
-@comment $Id: info.texi,v 1.4.2.3 1999/12/05 19:02:24 martinb Exp $
+@comment $Id: info.texi,v 1.4.2.4 2000/01/18 07:27:42 yoshiki Exp $
 
 @dircategory Texinfo documentation system
 @direntry
@@ -855,9 +855,10 @@
 
 The following variables may modify the behaviour of Info-mode in Emacs;
 you may wish to set one or several of these variables interactively, or
-in your @file{~/.emacs} init file.  @xref{Examining, Examining and Setting
-Variables, Examining and Setting Variables, emacs, The GNU Emacs
-Manual}.
+in your @file{~/.emacs} init file.  @xref{Examining, Examining and
+Setting Variables, Examining and Setting Variables, xemacs, XEmacs
+User's Manual}.
+
 
 @vtable @code
 @item Info-enable-edit
--- a/man/internals/internals.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/internals/internals.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -2650,8 +2650,8 @@
 calls in elisp are especially expensive.  Iterating over a long list is
 going to be 30 times faster implemented in C than in Elisp.
 
-To get started debugging XEmacs, take a look at the @file{gdbinit} and
-@file{dbxrc} files in the @file{src} directory.
+To get started debugging XEmacs, take a look at the @file{.gdbinit} and
+@file{.dbxrc} files in the @file{src} directory.
 @xref{Q2.1.15 - How to Debug an XEmacs problem with a debugger,,,
 xemacs-faq, XEmacs FAQ}.
 
@@ -4993,7 +4993,7 @@
 object is a real Lisp object @code{Lisp_Type_Record} or just an integer
 or a character. Integers and characters are the only two types that are
 stored directly - without another level of indirection, and therefore they
-don´t have to be marked and collected. 
+don't have to be marked and collected. 
 @xref{How Lisp Objects Are Represented in C}.
 
 The second case is the one we have to handle. It is the one when we are
@@ -5033,7 +5033,7 @@
 @code{lcrecords}. Each object is @code{malloc}ed separately
 instead of placing it in one of the contiguous frob blocks. All types
 that are currently stored 
-using @code{lcrecords}´s  @code{alloc_lcrecord} and
+using @code{lcrecords}'s  @code{alloc_lcrecord} and
 @code{make_lcrecord_list} are the types: vectors, buffers,
 char-table, char-table-entry, console, weak-list, database, device,
 ldap, hash-table, command-builder, extent-auxiliary, extent-info, face,
--- a/man/lispref/control.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/lispref/control.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -662,7 +662,7 @@
 which you call for other purposes, such as if you try to take the
 @sc{car} of an integer or move forward a character at the end of the
 buffer; you can also signal errors explicitly with the functions
-@code{error} and @code{signal}.
+@code{error}, @code{signal}, and others.
 
   Quitting, which happens when the user types @kbd{C-g}, is not 
 considered an error, but it is handled almost like an error.
@@ -673,6 +673,11 @@
 applying @code{format} (@pxref{String Conversion}) to
 @var{format-string} and @var{args}.
 
+This error is not continuable: you cannot continue execution after the
+error using the debugger @kbd{r} or @kbd{c} commands.  If you wish the
+user to be able to continue execution, use @code{cerror} or
+@code{signal} instead.
+
 These examples show typical uses of @code{error}:
 
 @example
@@ -691,7 +696,8 @@
 
 @code{error} works by calling @code{signal} with two arguments: the
 error symbol @code{error}, and a list containing the string returned by
-@code{format}.
+@code{format}.  This is repeated in an endless loop, to ensure that
+@code{error} never returns.
 
 If you want to use your own string as an error message verbatim, don't
 just write @code{(error @var{string})}.  If @var{string} contains
@@ -699,10 +705,16 @@
 results.  Instead, use @code{(error "%s" @var{string})}.
 @end defun
 
+@defun cerror format-string &rest args
+This function behaves like @code{error}, except that the error it
+signals is continuable.  That means that debugger commands @kbd{c} and
+@kbd{r} can resume execution.
+@end defun
+
 @defun signal error-symbol data
-This function signals an error named by @var{error-symbol}.  The
-argument @var{data} is a list of additional Lisp objects relevant to the
-circumstances of the error.
+This function signals a continuable error named by @var{error-symbol}.
+The argument @var{data} is a list of additional Lisp objects relevant to
+the circumstances of the error.
 
 The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol
 bearing a property @code{error-conditions} whose value is a list of
@@ -710,9 +722,9 @@
 errors.
 
 The number and significance of the objects in @var{data} depends on
-@var{error-symbol}.  For example, with a @code{wrong-type-arg} error,
-there are two objects in the list: a predicate that describes the type
-that was expected, and the object that failed to fit that type.
+@var{error-symbol}.  For example, with a @code{wrong-type-argument}
+error, there are two objects in the list: a predicate that describes the
+type that was expected, and the object that failed to fit that type.
 @xref{Error Symbols}, for a description of error symbols.
 
 Both @var{error-symbol} and @var{data} are available to any error
@@ -721,8 +733,10 @@
 @var{data})} (@pxref{Handling Errors}).  If the error is not handled,
 these two values are used in printing the error message.
 
-The function @code{signal} never returns (though in older Emacs versions
-it could sometimes return).
+The function @code{signal} can return, if the debugger is invoked and
+the user invokes the ``return from signal'' option.  If you want the
+error not to be continuable, use @code{signal-error} instead.  Note that
+in FSF Emacs @code{signal} never returns.
 
 @smallexample
 @group
@@ -731,17 +745,42 @@
 @end group
 
 @group
-(signal 'no-such-error '("My unknown error condition."))
-     @error{} peculiar error: "My unknown error condition."
+(signal 'no-such-error '("My unknown error condition"))
+     @error{} Peculiar error (no-such-error "My unknown error condition")
 @end group
 @end smallexample
 @end defun
 
-@cindex CL note---no continuable errors
-@quotation
-@b{Common Lisp note:} XEmacs Lisp has nothing like the Common Lisp
-concept of continuable errors.
-@end quotation
+@defun signal-error error-symbol data
+This function behaves like @code{signal}, except that the error it
+signals is not continuable.
+@end defun
+
+@defmac check-argument-type predicate argument
+This macro checks that @var{argument} satisfies @var{predicate}.  If
+that is not the case, it signals a continuable
+@code{wrong-type-argument} error until the returned value satisfies
+@var{predicate}, and assigns the returned value to @var{argument}.  In
+other words, execution of the program will not continue until
+@var{predicate} is met.
+
+@var{argument} is not evaluated, and should be a symbol.
+@var{predicate} is evaluated, and should name a function.
+
+As shown in the following example, @code{check-argument-type} is useful
+in low-level code that attempts to ensure the sanity of its data before
+proceeding.
+
+@example
+@group
+(defun cache-object-internal (object wlist)
+  ;; @r{Before doing anything, make sure that @var{wlist} is indeed}
+  ;; @r{a weak list, which is what we expect.}
+  (check-argument-type 'weak-list-p wlist)
+  @dots{})
+@end group
+@end example
+@end defmac
 
 @node Processing of Errors
 @subsubsection How XEmacs Processes Errors
@@ -761,6 +800,27 @@
 command loop's handler uses the error symbol and associated data to
 print an error message.
 
+Errors in command loop are processed using the @code{command-error}
+function, which takes care of some necessary cleanup, and prints a
+formatted error message to the echo area.  The functions that do the
+formatting are explained below.
+
+@defun display-error error-object stream
+This function displays @var{error-object} on @var{stream}.
+@var{error-object} is a cons of error type, a symbol, and error
+arguments, a list.  If the error type symbol of one of its error
+condition superclasses has an @code{display-error} property, that
+function is invoked for printing the actual error message.  Otherwise,
+the error is printed as @samp{Error: arg1, arg2, ...}.
+@end defun
+
+@defun error-message-string error-object
+This function converts @var{error-object} to an error message string,
+and returns it.  The message is equivalent to the one that would be
+printed by @code{display-error}, except that it is conveniently returned
+in string form.
+@end defun
+
 @cindex @code{debug-on-error} use
 An error that has no explicit handler may call the Lisp debugger.  The
 debugger is enabled if the variable @code{debug-on-error} (@pxref{Error
@@ -834,6 +894,13 @@
 totally unpredictable, such as when the program evaluates an expression
 read from the user.
 
+@cindex @code{debug-on-signal} use
+  Even when an error is handled, the debugger may still be called if the
+variable @code{debug-on-signal} (@pxref{Error Debugging}) is
+non-@code{nil}.  Note that this may yield unpredictable results with
+code that traps expected errors as normal part of its operation.  Do not
+set @code{debug-on-signal} unless you know what you are doing.
+
   Error signaling and handling have some resemblance to @code{throw} and
 @code{catch}, but they are entirely separate facilities.  An error
 cannot be caught by a @code{catch}, and a @code{throw} cannot be handled
@@ -917,7 +984,9 @@
 @end smallexample
 
 @noindent
-The handler specifies condition name @code{arith-error} so that it will handle only division-by-zero errors.  Other kinds of errors will not be handled, at least not by this @code{condition-case}.  Thus,
+The handler specifies condition name @code{arith-error} so that it will
+handle only division-by-zero errors.  Other kinds of errors will not be
+handled, at least not by this @code{condition-case}.  Thus,
 
 @smallexample
 @group
@@ -972,43 +1041,49 @@
 is distinct from @code{error}, and perhaps some intermediate
 classifications.
 
-  In order for a symbol to be an error symbol, it must have an
-@code{error-conditions} property which gives a list of condition names.
-This list defines the conditions that this kind of error belongs to.
-(The error symbol itself, and the symbol @code{error}, should always be
-members of this list.)  Thus, the hierarchy of condition names is
-defined by the @code{error-conditions} properties of the error symbols.
+  In other words, each error condition @dfn{inherits} from another error
+condition, with @code{error} sitting at the top of the inheritance
+hierarchy.
+
+@defun define-error error-symbol error-message &optional inherits-from
+  This function defines a new error, denoted by @var{error-symbol}.
+@var{error-message} is an informative message explaining the error, and
+will be printed out when an unhandled error occurs.  @var{error-symbol}
+is a sub-error of @var{inherits-from} (which defaults to @code{error}).
 
-  In addition to the @code{error-conditions} list, the error symbol
-should have an @code{error-message} property whose value is a string to
-be printed when that error is signaled but not handled.  If the
-@code{error-message} property exists, but is not a string, the error
-message @samp{peculiar error} is used.
-@cindex peculiar error
+  @code{define-error} internally works by putting on @var{error-symbol}
+an @code{error-message} property whose value is @var{error-message}, and
+an @code{error-conditions} property that is a list of @var{error-symbol}
+followed by each of its super-errors, up to and including @code{error}.
+You will sometimes see code that sets this up directly rather than
+calling @code{define-error}, but you should @emph{not} do this yourself,
+unless you wish to maintain compatibility with FSF Emacs, which does not
+provide @code{define-error}.
+@end defun
 
-  Here is how we define a new error symbol, @code{new-error}:
+  Here is how we define a new error symbol, @code{new-error}, that
+belongs to a range of errors called @code{my-own-errors}:
 
 @example
 @group
-(put 'new-error
-     'error-conditions
-     '(error my-own-errors new-error))       
-@result{} (error my-own-errors new-error)
-@end group
-@group
-(put 'new-error 'error-message "A new error")
-@result{} "A new error"
+(define-error 'my-own-errors "A whole range of errors" 'error)
+(define-error 'new-error "A new error" 'my-own-errors)
 @end group
 @end example
 
 @noindent
-This error has three condition names: @code{new-error}, the narrowest
-classification; @code{my-own-errors}, which we imagine is a wider
-classification; and @code{error}, which is the widest of all.
+@code{new-error} has three condition names: @code{new-error}, the
+narrowest classification; @code{my-own-errors}, which we imagine is a
+wider classification; and @code{error}, which is the widest of all.
+
+  Note that it is not legal to try to define an error unless its
+super-error is also defined.  For instance, attempting to define
+@code{new-error} before @code{my-own-errors} are defined will signal an
+error.
 
   The error string should start with a capital letter but it should
 not end with a period.  This is for consistency with the rest of Emacs.
- 
+
   Naturally, XEmacs will never signal @code{new-error} on its own; only
 an explicit call to @code{signal} (@pxref{Signaling Errors}) in your
 code can do this:
@@ -1044,6 +1119,8 @@
 when you write an error handler.  Using error symbols alone would
 eliminate all but the narrowest level of classification.
 
+  
+
   @xref{Standard Errors}, for a list of all the standard error symbols
 and their conditions.
 
--- a/man/lispref/debugging.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/lispref/debugging.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -95,6 +95,12 @@
 errors also can invoke the debugger.  @xref{Processes}.
 @end defopt
 
+@defopt debug-on-signal
+This variable is similar to @code{debug-on-error} but breaks
+whenever an error is signalled, regardless of whether it would be
+handled.
+@end defopt
+
 @defopt debug-ignored-errors
 This variable specifies certain kinds of errors that should not enter
 the debugger.  Its value is a list of error condition symbols and/or
@@ -124,12 +130,6 @@
           '(lambda () (setq debug-on-error t)))
 @end example
 
-@defopt debug-on-signal
-This variable is similar to @code{debug-on-error} but breaks
-whenever an error is signalled, regardless of whether it would be
-handled.
-@end defopt
-
 @node Infinite Loops
 @subsection Debugging Infinite Loops
 @cindex infinite loops
--- a/man/new-users-guide/new-users-guide.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/new-users-guide/new-users-guide.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -60,9 +60,8 @@
 @page
 @ifinfo
 @node Top, Intro, (dir), (dir)
+@top The Emacs Editor
 
-The Emacs Editor
-****************
 
 Emacs is the extensible, customizable, self-documenting real-time
 display editor.  This Info file will help you get started on using 
--- a/man/xemacs-faq.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/xemacs-faq.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/12/23 01:50:47 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/01/16 13:41:45 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
@@ -139,7 +139,6 @@
 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
 * Q1.4.5::      And how do I bind it to a key?
 * Q1.4.6::      What's the difference between a macro and a function?
-* Q1.4.7::      Why options saved with 19.13 don't work with 19.14 or later?
 
 Installation and Trouble Shooting
 
@@ -155,8 +154,6 @@
 * Q2.0.10::     After I run configure I find a coredump, is something wrong?
 * Q2.0.11::     XEmacs can't resolve host names.
 * Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     Can't link XEmacs on Solaris with Gcc.
-* Q2.0.14::     Make on HP/UX 9 fails after linking temacs
 
 Trouble Shooting:
 * Q2.1.1::      XEmacs just crashed on me!
@@ -176,10 +173,10 @@
 * Q2.1.15::     How to debug an XEmacs problem with a debugger.
 * Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
 * Q2.1.17::     @samp{Marker does not point anywhere}.
-* Q2.1.18::     19.14 hangs on HP/UX 10.10.
+* Q2.1.18::     [This question intentionally left blank]
 * Q2.1.19::     XEmacs does not follow the local timezone.
 * Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
-* Q2.1.21::     Every so often the XEmacs frame freezes.
+* Q2.1.21::     [This question intentionally left blank]
 * Q2.1.22::     XEmacs seems to take a really long time to do some things.
 * Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
 * Q2.1.24::     XEmacs won't start without network. (NEW)
@@ -199,8 +196,8 @@
 X Window System & Resources:
 * Q3.1.1::      Where is a list of X resources?
 * Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      @code{(set-screen-width)} worked in 19.6, but not in 19.13?
-* Q3.1.4::      Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15?
+* Q3.1.3::      [This question intentionally left blank]
+* Q3.1.4::      [This question intentionally left blank]
 * Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
 * Q3.1.6::      How can I have the window title area display the full path?
 * Q3.1.7::      @samp{xemacs -name junk} doesn't work?
@@ -319,7 +316,7 @@
 Other Unbundled Packages:
 * Q4.7.1::      What is AUC TeX?  Where do you get it?
 * Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      Byte compiling AUC TeX on XEmacs 19.14
+* Q4.7.3::      [This question intentionally left blank]
 * Q4.7.4::      Problems installing AUC TeX
 * Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
 * Q4.7.6::      Is there a MatLab mode?
@@ -336,14 +333,14 @@
 * Q5.0.8::      Why does edt emulation not work?
 * Q5.0.9::      How can I emulate VI and use it as my default mode?
 * Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     Filladapt doesn't work in 19.15?
+* Q5.0.11::     How do I turn on filladapt for all buffers?
 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
 * Q5.0.14::     Strange things are happening in Shell Mode.
 * Q5.0.15::     Where do I get the latest CC Mode?
 * Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
 * Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     I upgraded to XEmacs 19.14 and gnuserv stopped working
+* Q5.0.18::     [This question intentionally left blank]
 * Q5.0.19::     Is there something better than LaTeX mode?
 * Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
 
@@ -487,7 +484,6 @@
 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
 * Q1.4.5::      And how do I bind it to a key?
 * Q1.4.6::      What's the difference between a macro and a function?
-* Q1.4.7::      Why options saved with 19.13 don't work with 19.14 or later?
 @end menu
 
 @node Q1.0.1, Q1.0.2, Introduction, Introduction
@@ -660,30 +656,30 @@
 @comment (NT and 95).  The current betas require having an X server to run
 @comment XEmacs; however, a native NT/95 port is in alpha, thanks to
 @comment @email{jhar@@tardis.ed.ac.uk, Jonathan Harris}.
-@comment 
+@comment
 @comment Although some features are still unimplemented, XEmacs 21.0 will support
 @comment MS-Windows.
-@comment 
+@comment
 @comment The NT development is now coordinated by a mailing list at
 @comment @email{xemacs-nt@@xemacs.org}.
-@comment 
+@comment
 @comment If you are willing to contribute or want to follow the progress, mail to
 @comment @iftex
 @comment @*
 @comment @end iftex
 @comment @email{xemacs-nt-request@@xemacs.org} to subscribe.
-@comment 
+@comment
 @comment Furthermore, Altrasoft is seeking corporate and government sponsors to
 @comment help fund a fully native port of XEmacs to Windows 95 and NT using
 @comment full-time, senior-level staff working under a professionally managed
 @comment project structure.  See @uref{http://www.altrasoft.com/, the Altrasoft
 @comment web site} for more details
 @comment or contact Altrasoft directly at 1-888-ALTSOFT.
-@comment 
-@comment 
+@comment
+@comment
 @comment The closest existing port is @dfn{Win-Emacs}, which is based on Lucid
 @comment Emacs 19.6.  Available from @uref{http://www.pearlsoft.com/}.
-@comment 
+@comment
 @comment There's a port of GNU Emacs (not XEmacs) at
 @comment @example
 @comment @uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}.
@@ -693,12 +689,17 @@
 @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh?
 @c changed
 
-There has been a port to the MachTen environment of XEmacs 19.13, but no
-patches have been submitted to the maintainers to get this in the
-mainstream distribution.
-
-For the MacOS, there is a port of
-@uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}.
+@c There has been a port to the MachTen environment of XEmacs 19.13, but no
+@c patches have been submitted to the maintainers to get this in the
+@c mainstream distribution.
+@c
+@c For the MacOS, there is a port of
+@c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}.
+
+Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS
+8.5.1 by @uref{pjarvis@@ispchannel.com,Pitts Jarvis}.  It's available
+at @uref{http://my.ispchannel.com/~pjarvis/xemacs.html,
+http://my.ispchannel.com/~pjarvis/xemacs.html}.
 
 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction
 @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep?
@@ -710,12 +711,12 @@
 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction
 @unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2?
 
-No, and there is no news of anyone working on it.
+No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it.
 
 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction
 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs users manual?
 
-Pre-printed manuals are not available.  If you are familiar with 
+Pre-printed manuals are not available.  If you are familiar with
 TeX, you can generate your own manual from the XEmacs sources.
 
 HTML and Postscript versions of XEmacs manuals may be available from the
@@ -871,14 +872,20 @@
 @itemize @bullet
 @item @email{binge@@aloft.att.com, Curtis.N.Bingham}
 
+@item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan}
+
 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley}
 
 @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot}
 
+@item @email{daku@@nortel.ca, Mark Daku}
+
 @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque}
 
 @item @email{eeide@@cs.utah.edu, Eric Eide}
 
+@item @email{af@@biomath.jussieu.fr, Alain Fauconnet}
+
 @item @email{cflatter@@nrao.edu, Chris Flatters}
 
 @item @email{ginsparg@@adra.com, Evelyn Ginsparg}
@@ -977,7 +984,7 @@
 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction
 @unnumberedsubsec Q1.3.2: What is the status of Asian-language support, aka MULE?
 
-MULE support is now available for UNIX versions of XEmacs.  
+MULE support is now available for UNIX versions of XEmacs.
 
 If you would like to help, you may want to join the
 @email{xemacs-mule@@xemacs.org} mailing list.  Especially needed are
@@ -1177,11 +1184,11 @@
 the first letters of your preferred language, then type @key{RET}.
 
 @comment There's an Emacs Lisp tutorial at
-@comment 
+@comment
 @comment @example
 @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}.
 @comment @end example
-@comment 
+@comment
 @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web
 @comment page at
 @comment @iftex
@@ -1235,7 +1242,7 @@
 
 Or interactively, @kbd{M-x global-set-key} and follow the prompts.
 
-@node Q1.4.6, Q1.4.7, Q1.4.5, Introduction
+@node Q1.4.6, , Q1.4.5, Introduction
 @unnumberedsubsec Q1.4.6: What's the difference between a macro and a function?
 
 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual:
@@ -1255,36 +1262,6 @@
 another matter, entirely.  A keyboard macro is a key bound to several
 other keys.  Refer to manual for details.
 
-@node Q1.4.7, , Q1.4.6, Introduction
-@unnumberedsubsec Q1.4.7: How come options saved with 19.13 don't work with 19.14 or later?
-
-There's a problem with options of the form:
-
-@lisp
-(add-spec-list-to-specifier (face-property 'searchm-field 'font)
-                            '((global (nil))))
-@end lisp
-
-saved by a 19.13 XEmacs that causes a 19.14 XEmacs grief.  You must
-delete these options.  XEmacs 19.14 and later no longer write the
-options directly to @file{.emacs} which should allow us to deal with
-version incompatibilities better in the future.
-
-Options saved under XEmacs 19.13 are protected by code that specifically
-requires a version 19 XEmacs.  This won't be a problem unless you're
-using XEmacs v20.  You should consider changing the code to read:
-
-@lisp
-(cond
- ((and (string-match "XEmacs" emacs-version)
-       (boundp 'emacs-major-version)
-       (or (and (= emacs-major-version 19)
-                (>= emacs-minor-version 12))
-           (>= emacs-major-version 20)))
-  ...
-  ))
-@end lisp
-
 @node Installation, Customization, Introduction, Top
 @unnumbered 2 Installation and Trouble Shooting
 
@@ -1305,8 +1282,6 @@
 * Q2.0.10::     After I run configure I find a coredump, is something wrong?
 * Q2.0.11::     XEmacs can't resolve host names.
 * Q2.0.12::     Why can't I strip XEmacs?
-* Q2.0.13::     Can't link XEmacs on Solaris with Gcc.
-* Q2.0.14::     Make on HP/UX 9 fails after linking temacs
 
 Trouble Shooting:
 * Q2.1.1::      XEmacs just crashed on me!
@@ -1326,10 +1301,10 @@
 * Q2.1.15::     How to debug an XEmacs problem with a debugger.
 * Q2.1.16::     XEmacs crashes in @code{strcat} on HP/UX 10.
 * Q2.1.17::     @samp{Marker does not point anywhere}.
-* Q2.1.18::     19.14 hangs on HP/UX 10.10.
+* Q2.1.18::     [This question intentionally left blank]
 * Q2.1.19::     XEmacs does not follow the local timezone.
 * Q2.1.20::     @samp{Symbol's function definition is void: hkey-help-show.}
-* Q2.1.21::     Every so often the XEmacs frame freezes.
+* Q2.1.21::     [This question intentionally left blank]
 * Q2.1.22::     XEmacs seems to take a really long time to do some things.
 * Q2.1.23::     Movemail on Linux does not work for XEmacs 19.15 and later.
 * Q2.1.24::     XEmacs won't start without network. (NEW)
@@ -1758,7 +1733,7 @@
 to link against the DNS resolver library code.
 @end quotation
 
-@node Q2.0.12, Q2.0.13, Q2.0.11, Installation
+@node Q2.0.12, Q2.1.1, Q2.0.11, Installation
 @unnumberedsubsec Q2.0.12: Why can't I strip XEmacs?
 
 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
@@ -1813,46 +1788,7 @@
 @end enumerate
 @end quotation
 
-@node Q2.0.13, Q2.0.14, Q2.0.12, Installation
-@unnumberedsubsec Q2.0.13: Problems linking with Gcc on Solaris
-
-There are known difficulties linking with Gnu ld on Solaris.  A typical
-error message might look like:
-
-@example
-unexec(): dlopen(../dynodump/dynodump.so): ld.so.1: ./temacs:
-fatal: relocation error:
-symbol not found: main: referenced in ../dynodump/dynodump.so
-@end example
-
-@email{martin@@xemacs.org, Martin Buchholz} writes:
-
-@quotation
-You need to specify @samp{-fno-gnu-linker} as part of your flags to pass
-to ld.  Future releases of XEmacs will try to do this automatically.
-@end quotation
-
-@node Q2.0.14, Q2.1.1, Q2.0.13, Installation
-@unnumberedsubsec Q2.0.14: Make on HP/UX 9 fails after linking temacs
-
-Problem when building xemacs-19.16 on hpux 9:
-
-@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
-
-@quotation
-make on hpux fails after linking temacs with a message:
-
-@example
-"make: don't know how to make .y."
-@end example
-
-Solution: This is a problem with HP make revision 70.X.  Either use GNU
-make, or install PHCO_6552, which will bring make to revision
-72.24.1.17.
-@end quotation
-
-
-@node Q2.1.1, Q2.1.2, Q2.0.14, Installation
+@node Q2.1.1, Q2.1.2, Q2.0.12, Installation
 @unnumberedsec 2.1: Trouble Shooting
 @unnumberedsubsec Q2.1.1: Help!  XEmacs just crashed on me!
 
@@ -2316,17 +2252,55 @@
 all you've got is a core dump, all is not lost.
 
 If you're using GDB, there are some macros in the file
-@file{src/gdbinit} in the XEmacs source distribution that should make it
-easier for you to decode Lisp objects.  Copy this file to
-@file{~/.gdbinit}, or @code{source} it from @file{~/.gdbinit}, and use
-the macros defined therein.  In particular, use the @code{pobj} macro to
-print the internal C representation of a lisp object.  This will work
-with a core file or not-yet-run executable.  The aliases @code{ldp} and
-@code{lbt} are provided for conveniently calling @code{debug_print} and
-@code{debug_backtrace}.
+@file{src/.gdbinit} in the XEmacs source distribution that should make
+it easier for you to decode Lisp objects.  This file is automatically
+read by gdb if gdb is run in the directory where xemacs was built, and
+contains these useful macros to inspect the state of xemacs:
+
+@table @code
+@item pobj
+Usage: pobj lisp_object @*
+Print the internal C representation of a lisp object.
+
+@item xtype
+Usage: xtype lisp_object @*
+Print the Lisp type of a lisp object.
+
+@item lbt
+Usage: lbt @*
+Print the current Lisp stack trace.
+Requires a running xemacs process.
+
+@item ldp
+Usage: ldp lisp_object @*
+Print a Lisp Object value using the Lisp printer.
+Requires a running xemacs process.
+
+@item run-temacs
+Usage: run-temacs @*
+Run temacs interactively, like xemacs.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+
+@item dump-temacs
+Usage: dump-temacs @*
+Run the dumping part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
+
+@item check-xemacs
+Usage: check-xemacs @*
+Run the test suite.  Equivalent to 'make check'.
+
+@item check-temacs
+Usage: check-temacs @*
+Run the test suite on temacs.  Equivalent to 'make check-temacs'.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+@end table
 
 If you are using Sun's @file{dbx} debugger, there is an equivalent file
-@file{src/dbxrc} to copy to or source from @file{~/.dbxrc}.
+@file{src/.dbxrc}, which defines the same commands for dbx.
 
 @item
 If you're using a debugger to get a C stack backtrace and you're seeing
@@ -2377,14 +2351,13 @@
 
 @item
 If you compile with the newer gcc variants gcc-2.8 or egcs, you will
-also need gdb 4.17.  Earlier releases of gdb can't handle the debug
-information generated by the newer compilers.
+also need gdb 4.17 or above.  Earlier releases of gdb can't handle the
+debug information generated by the newer compilers.
 
 @item
-The above information on using @file{src/gdbinit} works for XEmacs-21.0
-and above.  For older versions of XEmacs, there are different
-@file{gdbinit} files provided in the @file{src} directory.  Use the one
-corresponding to the configure options used when building XEmacs.
+In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named
+@file{src/gdbinit}.  This had the disadvantage of not being sourced
+automatically by gdb, so you had to set that up yourself.
 
 @end itemize
 
@@ -2430,58 +2403,7 @@
 @end enumerate
 
 @node Q2.1.18, Q2.1.19, Q2.1.17, Installation
-@unnumberedsubsec Q2.1.18: 19.14 hangs on HP/UX 10.10.
-
-@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes:
-
-@quotation
-For the record, compiling on hpux 10.10 leads to a hang in Gnus when
-compiled with optimization on.
-
-I've just discovered that my hpux 10.01 binary was working less well
-than expected. In fact, on a 10.10 system, @code{(while t)} was not
-interrupted by @kbd{C-g}. I defined @code{BROKEN_SIGIO} and recompiled on
-10.10, and... the hang is now gone.
-
-As far as configure goes, this will be a bit tricky: @code{BROKEN_SIGIO}
-is needed on 10.10, but @strong{not} on 10.01: if I run my 10.01 binary
-on a 10.01 machine, without @code{BROKEN_SIGIO} being defined, @kbd{C-g}
-works as expected.
-@end quotation
-
-@email{cognot@@ensg.u-nancy.fr, Richard Cognot} adds:
-
-@quotation
-Apparently somebody has found the reason why there is this
-@iftex
-@*
-@end iftex
-@samp{poll:
-interrupted...} message for each event.  For some reason, libcurses
-reimplements a @code{select()} system call, in a highly broken fashion.
-The fix is to add a -lc to the link line @emph{before} the
--lxcurses. XEmacs will then use the right version of @code{select()}.
-@end quotation
-
-
-@email{af@@biomath.jussieu.fr, Alain Fauconnet} writes:
-
-@quotation
-The @emph{real} solution is to @emph{not} link -lcurses in!  I just
-changed -lcurses to -ltermcap in the Makefile and it fixed:
-
-@enumerate
-@item
-The @samp{poll: interrupted system call} message.
-
-@item
-A more serious problem I had discovered in the meantime, that is the
-fact that subprocess handling was seriously broken: subprocesses
-e.g. started by AUC TeX for TeX compilation of a buffer would
-@emph{hang}.  Actually they would wait forever for emacs to read the
-socket which connects stdout...
-@end enumerate
-@end quotation
+@unnumberedsubsec Q2.1.18: removed
 
 @node Q2.1.19, Q2.1.20, Q2.1.18, Installation
 @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone.
@@ -2509,10 +2431,7 @@
 where you load hyperbole and the problem should go away.
 
 @node Q2.1.21, Q2.1.22, Q2.1.20, Installation
-@unnumberedsubsec Q2.1.21: Every so often the XEmacs frame freezes
-
-This problem has been fixed in 19.15, and was due to a not easily
-reproducible race condition.
+@unnumberedsubsec Q2.1.21: [This question intentionally left blank]
 
 @node Q2.1.22, Q2.1.23, Q2.1.21, Installation
 @unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things
@@ -2603,8 +2522,8 @@
 X Window System & Resources:
 * Q3.1.1::      Where is a list of X resources?
 * Q3.1.2::      How can I detect a color display?
-* Q3.1.3::      @code{(set-screen-width)} worked in 19.6, but not in 19.13?
-* Q3.1.4::      Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15?
+* Q3.1.3::      [This question intentionally left blank]
+* Q3.1.4::      [This question intentionally left blank]
 * Q3.1.5::      How can I get the icon to just say @samp{XEmacs}?
 * Q3.1.6::      How can I have the window title area display the full path?
 * Q3.1.7::      @samp{xemacs -name junk} doesn't work?
@@ -2876,38 +2795,10 @@
 @end lisp
 
 @node Q3.1.3, Q3.1.4, Q3.1.2, Customization
-@unnumberedsubsec Q3.1.3: @code{(set-screen-width)} worked in 19.6, but not in 19.13?
-
-In Lucid Emacs 19.6 I did @code{(set-screen-width @var{characters})} and
-@code{(set-screen-height @var{lines})} in my @file{.emacs} instead of
-specifying @code{Emacs*EmacsScreen.geometry} in my
-@iftex
-@*
-@end iftex
-@file{.Xdefaults} but
-this does not work in XEmacs 19.13.
-
-These two functions now take frame arguments:
-
-@lisp
-(set-frame-width (selected-frame) @var{characters})
-(set-frame-height (selected-frame) @var{lines})
-@end lisp
+@unnumberedsubsec Q3.1.3: [This question intentionally left blank]
 
 @node Q3.1.4, Q3.1.5, Q3.1.3, Customization
-@unnumberedsubsec Q3.1.4: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15?
-
-In XEmacs 19.11 I specified @code{Emacs*EmacsScreen.geometry} in
-my @file{.emacs} but this does not work in XEmacs 19.15.
-
-We have switched from using the term @dfn{screen} to using the term
-@dfn{frame}.
-
-The correct entry for your @file{.Xdefaults} is now:
-
-@example
-Emacs*EmacsFrame.geometry
-@end example
+@unnumberedsubsec Q3.1.4: [This question intentionally left blank]
 
 @node Q3.1.5, Q3.1.6, Q3.1.4, Customization
 @unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}?
@@ -3999,13 +3890,19 @@
 and you press a key to replace the selected region by the key you typed.
 Usually backspace kills the selected region.
 
-To get this behavior, add the following line to your @file{.emacs}:
+To get this behavior, add the following lines to your @file{.emacs}:
 
 @lisp
-(turn-on-pending-delete)
+(cond
+ ((fboundp 'turn-on-pending-delete)
+  (turn-on-pending-delete))
+ ((fboundp 'pending-delete-on)
+  (pending-delete-on t)))
 @end lisp
 
-Note that this will work with both Backspace and Delete.
+Note that this will work with both Backspace and Delete.  This code is a 
+tad more complicated than it has to be for XEmacs in order to make it
+more portable.
 
 @node Q3.10.3, Q3.10.4, Q3.10.2, Customization
 @unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch?
@@ -4122,7 +4019,7 @@
 Other Unbundled Packages:
 * Q4.7.1::      What is AUC TeX?  Where do you get it?
 * Q4.7.2::      Are there any Emacs Lisp Spreadsheets?
-* Q4.7.3::      Byte compiling AUC TeX on XEmacs 19.14
+* Q4.7.3::      [This question intentionally left blank]
 * Q4.7.4::      Problems installing AUC TeX
 * Q4.7.5::      Is there a reason for an Emacs package not to be included in XEmacs?
 * Q4.7.6::      Is there a MatLab mode?
@@ -4637,12 +4534,12 @@
 @@@@ -42,7 +42,7 @@@@
  (defvar running-xemacs nil "t if we're running XEmacs")
  (defvar running-emacs  nil "t if we're running GNU Emacs 19")
- 
+
 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version)
 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version)
      (setq running-xemacs t)
      (setq running-emacs  t))
-@end format 
+@end format
 
 
 
@@ -4859,17 +4756,7 @@
 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}.
 
 @node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems
-@unnumberedsubsec Q4.7.3: Byte compiling AUC TeX on XEmacs 19.14.
-
-@email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} writes:
-
-@quotation
-When byte compiling auctex-9.4g, you must use the command:
-
-@example
-xemacs -batch -l lpath.el
-@end example
-@end quotation
+@unnumberedsubsec Q4.7.3: [This question intentionally left blank]
 
 @node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems
 @unnumberedsubsec Q4.7.4: Problems installing AUC TeX.
@@ -4965,14 +4852,14 @@
 * Q5.0.8::      Why does edt emulation not work?
 * Q5.0.9::      How can I emulate VI and use it as my default mode?
 * Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     Filladapt doesn't work in 19.15?
+* Q5.0.11::     How do I turn on filladapt for all buffers?
 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
 * Q5.0.14::     Strange things are happening in Shell Mode.
 * Q5.0.15::     Where do I get the latest CC Mode?
 * Q5.0.16::     I find auto-show-mode disconcerting.  How do I turn it off?
 * Q5.0.17::     How can I get two instances of info?
-* Q5.0.18::     I upgraded to XEmacs 19.14 and gnuserv stopped working
+* Q5.0.18::     [This question intentionally left blank]
 * Q5.0.19::     Is there something better than LaTeX mode?
 * Q5.0.20::     Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient?
 
@@ -5165,7 +5052,7 @@
 rename-buffer}.
 
 Alternately, you can set the variable @code{shell-multiple-shells}.
-If the value of this variable is non-nil, each time shell mode is invoked, 
+If the value of this variable is non-nil, each time shell mode is invoked,
 a new shell is made
 
 @node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous
@@ -5221,11 +5108,11 @@
 Obsolete question, left blank to avoid renumbering
 
 @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous
-@unnumberedsubsec Q5.0.11: Filladapt doesn't work in 19.15
-
-Filladapt 2.x is included in 19.15.  In it filladapt is now a minor
-mode and minor modes are traditionally off by default.  The following
-added to your @file{.emacs} will turn it on for all buffers:
+@unnumberedsubsec Q5.0.11: How do I turn on filladapt for all buffers?
+
+Filladapt is a minor mode and minor modes are traditionally off by
+default.  The following added to your @file{.emacs} will turn it on for
+all buffers:
 
 @lisp
 (setq-default filladapt-mode t)
@@ -5333,19 +5220,7 @@
 You can't.  The @code{info} package does not provide for multiple info buffers.
 
 @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous
-@unnumberedsubsec Q5.0.18: I upgraded to XEmacs 19.14 and gnuserv stopped working.
-
-@email{daku@@nortel.ca, Mark Daku} writes:
-
-@quotation
-It turns out I was using an older version of gnuserv.  The installation
-didn't put the binary into the public bin directory.  It put it in
-@iftex
-@*
-@end iftex
-@file{lib/xemacs-19.14/hppa1.1-hp-hpux9.05/gnuserv}.  Shouldn't it have
-been put in @file{bin/hppa1.1-hp-hpux9.0}?
-@end quotation
+@unnumberedsubsec Q5.0.18: [This question intentionally left blank]
 
 @node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous
 @unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode?
@@ -6206,7 +6081,7 @@
 
 General Info
 * Q6.0.1::	What is the status of the XEmacs port to Windows?
-* Q6.0.2::	What flavors of MS Windows are supported?  
+* Q6.0.2::	What flavors of MS Windows are supported?
 * Q6.0.3::      Where are the XEmacs on MS Windows binaries?
 * Q6.0.4::	Does XEmacs on MS Windows require an X server to run?
 
@@ -6317,7 +6192,7 @@
 @iftex
 @*
 @end iftex
-@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}; 
+@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/};
 
 look for "Where to get an X server".  Also note that, although the above
 page talks about Cygnus gnu-win32 (Cygwin), the information on X servers
@@ -6403,7 +6278,7 @@
 @unnumberedsec 6.2: Customization and User Interface
 @unnumberedsubsec Q6.2.1: How will the port cope with differences in the Windows user interface?
 
-XEmacs (and Emacs in general) UI is pretty 
+XEmacs (and Emacs in general) UI is pretty
 different from what is expected of a typical MS Windows program.  How will
 the MS Windows port cope with it?
 
@@ -6468,7 +6343,7 @@
 
 @itemize @bullet
 
-@item 
+@item
 Win-Emacs
 
 @itemize @minus
@@ -6484,7 +6359,7 @@
 @item
 GNU Emacs for DOS
 
-@itemize @minus  
+@itemize @minus
 
 @item
 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS
@@ -6496,7 +6371,7 @@
 @item
 GNU Emacs compiled with Win32
 
-@itemize @minus  
+@itemize @minus
 
 @item
 Starting with version 19.30, it has been possible to compile GNU Emacs
@@ -6509,7 +6384,7 @@
 @item
 NT Emacs
 
-@itemize @minus  
+@itemize @minus
 
 @item
 NT Emacs is a version of GNU Emacs modified to compile and run under
@@ -6518,7 +6393,7 @@
 
 @item
 NT Emacs has been written by Geoff Voelker, and more information can be
-found at 
+found at
 @iftex
 @*
 @end iftex
@@ -6529,7 +6404,7 @@
 @item
 XEmacs
 
-@itemize @minus  
+@itemize @minus
 
 @item
 Beginning with XEmacs 19.12, XEmacs' architecture has been redesigned
--- a/man/xemacs/custom.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/xemacs/custom.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -1093,9 +1093,9 @@
 local map, which affects all buffers using the same major mode.
 
 @menu
-* Interactive Rebinding::     Changing Key Bindings Interactively   
-* Programmatic Rebinding::    Changing Key Bindings Programmatically
-* Key Bindings Using Strings::Using Strings for Changing Key Bindings 
+* Interactive Rebinding::      Changing Key Bindings Interactively   
+* Programmatic Rebinding::     Changing Key Bindings Programmatically
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings 
 @end menu
 
 @node Interactive Rebinding
--- a/man/xemacs/mini.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/xemacs/mini.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -3,20 +3,19 @@
 @chapter The Minibuffer
 @cindex minibuffer
 
-  Emacs commands use the @dfn{minibuffer} to read arguments more
-complicated than a single number.  Minibuffer arguments can be file
-names, buffer names, Lisp function names, Emacs command names, Lisp
-expressions, and many other things, depending on the command reading the
-argument.  To edit the argument in the minibuffer, you can use Emacs
-editing commands.
-
+  The @dfn{minibuffer} is the facility used by XEmacs commands to read
+arguments more complicated than a single number.  Minibuffer arguments
+can be file names, buffer names, Lisp function names, XEmacs command
+names, Lisp expressions, and many other things, depending on the command
+reading the argument.  You can use the usual XEmacs editing commands in
+the minibuffer to edit the argument text.
 
 @cindex prompt
   When the minibuffer is in use, it appears in the echo area, and the
 cursor moves there.  The beginning of the minibuffer line displays a
-@dfn{prompt} indicating what kind of input you should supply and how it
-will be used.  The prompt is often derived from the name of the command
-the argument is for.  The prompt normally ends with a colon.
+@dfn{prompt} which says what kind of input you should supply and how it
+will be used.  Often this prompt is derived from the name of the command
+that the argument is for.  The prompt normally ends with a colon.
 
 @cindex default argument
   Sometimes a @dfn{default argument} appears in parentheses after the
@@ -26,14 +25,14 @@
 is the name of the buffer that will be used if you type just @key{RET}.
 
 @kindex C-g
-  The simplest way to give a minibuffer argument is to type the text you
-want, terminated by @key{RET} to exit the minibuffer.  To get out
-of the minibuffer and cancel the command that it was for, type
-@kbd{C-g}.
+  The simplest way to enter a minibuffer argument is to type the text
+you want, terminated by @key{RET} which exits the minibuffer.  You can
+cancel the command that wants the argument, and get out of the
+minibuffer, by typing @kbd{C-g}.
 
   Since the minibuffer uses the screen space of the echo area, it can
-conflict with other ways Emacs customarily uses the echo area.  Here is how
-Emacs handles such conflicts:
+conflict with other ways XEmacs customarily uses the echo area.  Here is
+how XEmacs handles such conflicts:
 
 @itemize @bullet
 @item
@@ -44,9 +43,9 @@
 anything.
 
 @item
-If you use a command in the minibuffer whose purpose is to print a
-message in the echo area (for example @kbd{C-x =}) the message is
-displayed normally, and the minibuffer is hidden for a while.  It comes back
+If in the minibuffer you use a command whose purpose is to print a
+message in the echo area, such as @kbd{C-x =}, the message is printed
+normally, and the minibuffer is hidden for a while.  It comes back
 after a few seconds, or as soon as you type anything.
 
 @item
@@ -58,6 +57,7 @@
 * File: Minibuffer File.  Entering file names with the minibuffer.
 * Edit: Minibuffer Edit.  How to edit in the minibuffer.
 * Completion::		  An abbreviation facility for minibuffer input.
+* Minibuffer History::    Reusing recent minibuffer arguments.
 * Repetition::		  Re-executing commands that used the minibuffer.
 @end menu
 
@@ -66,37 +66,43 @@
 
   Sometimes the minibuffer starts out with text in it.  For example, when
 you are supposed to give a file name, the minibuffer starts out containing
-the @dfn{default directory}, which ends with a slash.  This informs
-you in which directory the file will be looked for if you do not specify
-a different one. For example, the minibuffer might start out with:
+the @dfn{default directory}, which ends with a slash.  This is to inform
+you which directory the file will be found in if you do not specify a
+directory.
+
+  For example, the minibuffer might start out with these contents:
 
 @example
 Find File: /u2/emacs/src/
 @end example
 
 @noindent
-where @samp{Find File:@: } is the prompt.  Typing @kbd{buffer.c} specifies
-the file 
-@*@file{/u2/emacs/src/buffer.c}.  To find files in nearby
-directories, use @samp{..}; thus, if you type @kbd{../lisp/simple.el}, the
-file that you visit will be the one named 
-@*@file{/u2/emacs/lisp/simple.el}.
-Alternatively, you can use  @kbd{M-@key{DEL}} to kill directory names you
-don't want (@pxref{Words}).@refill
+where @samp{Find File:@: } is the prompt.  Typing @kbd{buffer.c}
+specifies the file @file{/u2/emacs/src/buffer.c}.  To find files in
+nearby directories, use @kbd{..}; thus, if you type
+@kbd{../lisp/simple.el}, you will get the file named
+@file{/u2/emacs/lisp/simple.el}.  Alternatively, you can kill with
+@kbd{M-@key{DEL}} the directory names you don't want (@pxref{Words}).
 
-  You can also type an absolute file name, one starting with a slash or a
-tilde, ignoring the default directory.  For example, to find the file
-@file{/etc/termcap}, just type the name, giving:
+  If you don't want any of the default, you can kill it with @kbd{C-a
+C-k}.  But you don't need to kill the default; you can simply ignore it.
+Insert an absolute file name, one starting with a slash or a tilde,
+after the default directory.  For example, to specify the file
+@file{/etc/termcap}, just insert that name, giving these minibuffer
+contents:
 
 @example
 Find File: /u2/emacs/src//etc/termcap
 @end example
 
 @noindent
-Two slashes in a row are not normally meaningful in Unix file names, but
-they are allowed in XEmacs.  They mean, ``ignore everything before the
-second slash in the pair.''  Thus, @samp{/u2/emacs/src/} is ignored, and
-you get the file @file{/etc/termcap}.
+@cindex // in file name
+@cindex double slash in file name
+@cindex slashes repeated in file name
+XEmacs gives a special meaning to a double slash (which is not normally
+a useful thing to write): it means, ``ignore everything before the
+second slash in the pair.''  Thus, @samp{/u2/emacs/src/} is ignored in
+the example above, and you get the file @file{/etc/termcap}.
 
 @vindex insert-default-directory
 If you set @code{insert-default-directory} to @code{nil}, the default
@@ -107,126 +113,141 @@
 @node Minibuffer Edit, Completion, Minibuffer File, Minibuffer
 @section Editing in the Minibuffer
 
-  The minibuffer is an Emacs buffer (albeit a peculiar one), and the usual
-Emacs commands are available for editing the text of an argument you are
-entering.
+  The minibuffer is an XEmacs buffer (albeit a peculiar one), and the
+usual XEmacs commands are available for editing the text of an argument
+you are entering.
 
   Since @key{RET} in the minibuffer is defined to exit the minibuffer,
-you must use @kbd{C-o} or @kbd{C-q @key{LFD}} to insert a newline into
-the minibuffer. (Recall that a newline is really the @key{LFD}
-character.)
+you can't use it to insert a newline in the minibuffer.  To do that,
+type @kbd{C-o} or @kbd{C-q C-j}.  (Recall that a newline is really the
+character control-J.)
 
-  The minibuffer has its own window, which always has space on the screen
-but acts as if it were not there when the minibuffer is not in use.  The
-minibuffer window is just like the others; you can switch to another 
-window with @kbd{C-x o}, edit text in other windows, and perhaps even
-visit more files before returning to the minibuffer to submit the
-argument.  You can kill text in another window, return to the minibuffer
-window, and then yank the text to use it in the argument.  @xref{Windows}.
+  The minibuffer has its own window which always has space on the screen
+but acts as if it were not there when the minibuffer is not in use.
+When the minibuffer is in use, its window is just like the others; you
+can switch to another window with @kbd{C-x o}, edit text in other
+windows and perhaps even visit more files, before returning to the
+minibuffer to submit the argument.  You can kill text in another window,
+return to the minibuffer window, and then yank the text to use it in the
+argument.  @xref{Windows}.
 
-  There are, however, some restrictions on the use of the minibuffer window.
-You cannot switch buffers in it---the minibuffer and its window are
-permanently attached.  You also cannot split or kill the minibuffer
-window, but you can make it taller with @kbd{C-x ^}.
+  There are some restrictions on the use of the minibuffer window,
+however.  You cannot switch buffers in it---the minibuffer and its
+window are permanently attached.  Also, you cannot split or kill the
+minibuffer window. But you can make it taller in the normal fashion with
+@kbd{C-x ^}.
 
 @kindex C-M-v
-  If you are in the minibuffer and issue a command that displays help
-text in another window, that window will be scrolled if you type
-@kbd{M-C-v} while in the minibuffer until you exit the minibuffer.  This
-feature is helpful if a completing minibuffer gives you a long list of
-possible completions.
+  If while in the minibuffer you issue a command that displays help text
+of any sort in another window, you can use the @kbd{C-M-v} command while
+in the minibuffer to scroll the help text.  This lasts until you exit
+the minibuffer.  This feature is especially useful if a completing
+minibuffer gives you a list of possible completions.  @xref{Other Window}.
 
+@vindex minibuffer-confirm-incomplete
 If the variable @code{minibuffer-confirm-incomplete} is @code{t}, you
 are asked for confirmation if there is no known completion for the text
 you typed. For example, if you attempted to visit a non-existent file,
 the minibuffer might read:
 @example
-        Find File:chocolate_bar.c [no completions, confirm]
+        Find File: chocolate_bar.c [no completions, confirm]
 @end example
 If you press @kbd{Return} again, that confirms the filename. Otherwise,
 you can continue editing it. 
 
- Emacs supports recursive use of the minibuffer.  However, it is
-easy to do this by accident (because of autorepeating keyboards, for
-example) and get confused.  Therefore, most Emacs commands that use the
-minibuffer refuse to operate if the minibuffer window is selected.  If the
-minibuffer is active but you have switched to a different window, recursive
-use of the minibuffer is allowed---if you know enough to try to do this,
-you probably will not get confused.
+ XEmacs supports recursive use of the minibuffer.  However, it is easy
+to do this by accident (because of autorepeating keyboards, for example)
+and get confused.  Therefore, most XEmacs commands that use the
+minibuffer refuse to operate if the minibuffer window is selected.  If
+the minibuffer is active but you have switched to a different window,
+recursive use of the minibuffer is allowed---if you know enough to try
+to do this, you probably will not get confused.
 
 @vindex enable-recursive-minibuffers
-  If you set the variable @code{enable-recursive-minibuffers} to be
+  If you set the variable @code{enable-recursive-minibuffers} to a
 non-@code{nil}, recursive use of the minibuffer is always allowed.
 
-@node Completion, Repetition, Minibuffer Edit, Minibuffer
+@node Completion, Minibuffer History, Minibuffer Edit, Minibuffer
 @section Completion
 @cindex completion
 
-  When appropriate, the minibuffer provides a @dfn{completion} facility.
-You type the beginning of an argument and one of the completion keys,
-and Emacs visibly fills in the rest, depending on what you have already
-typed.
+  For certain kinds of arguments, you can use @dfn{completion} to enter
+the argument value.  Completion means that you type part of the
+argument, then XEmacs visibly fills in the rest, or as much as
+can be determined from the part you have typed.
 
   When completion is available, certain keys---@key{TAB}, @key{RET}, and
-@key{SPC}---are redefined to complete an abbreviation present in the
+@key{SPC}---are rebound to complete the text present in the
 minibuffer into a longer string that it stands for, by matching it
 against a set of @dfn{completion alternatives} provided by the command
 reading the argument.  @kbd{?} is defined to display a list of possible
 completions of what you have inserted.
 
-  For example, when the minibuffer is being used by @kbd{Meta-x} to read
-the name of a command, it is given a list of all available Emacs command
-names to complete against.  The completion keys match the text in the
-minibuffer against all the command names, find any additional characters of
-the name that are implied by the ones already present in the minibuffer,
-and add those characters to the ones you have given.
+  For example, when @kbd{M-x} uses the minibuffer to read the name of a
+command, it provides a list of all available XEmacs command names to
+complete against.  The completion keys match the text in the minibuffer
+against all the command names, find any additional name characters
+implied by the ones already present in the minibuffer, and add those
+characters to the ones you have given.  This is what makes it possible
+to type @kbd{M-x inse @key{SPC} b @key{RET}} instead of @kbd{M-x
+insert-buffer @key{RET}} (for example).
 
-  Case is normally significant in completion because it is significant in
-most of the names that you can complete (buffer names, file names, and
-command names).  Thus, @samp{fo} will not complete to @samp{Foo}.  When you
-are completing a name in which case does not matter, case may be ignored
-for completion's sake if specified by program.
+  Case is normally significant in completion because it is significant
+in most of the names that you can complete (buffer names, file names and
+command names).  Thus, @samp{fo} does not complete to @samp{Foo}.  When
+you are completing a name in which case does not matter, case may be
+ignored for completion's sake if specified by program.
 
 When a completion list is displayed, the completions will highlight as
 you move the mouse over them.  Clicking the middle mouse button on any 
 highlighted completion will ``select'' it just as if you had typed it in
 and hit @key{RET}.
 
-@subsection A Completion Example
+@menu
+* Example: Completion Example.
+* Commands: Completion Commands.
+* Strict Completion::
+* Options: Completion Options.
+@end menu
+
+@node Completion Example, Completion Commands, Completion, Completion
+@subsection Completion Example
 
 @kindex TAB
 @findex minibuffer-complete
-  Consider the following example.  If you type @kbd{Meta-x au @key{TAB}},
-@key{TAB} looks for alternatives (in this case, command names) that
-start with @samp{au}.  There are only two commands: @code{auto-fill-mode} and
-@code{auto-save-mode}.  They are the same as far as @code{auto-}, so the
-@samp{au} in the minibuffer changes to @samp{auto-}.@refill
+  A concrete example may help here.  If you type @kbd{M-x au @key{TAB}},
+the @key{TAB} looks for alternatives (in this case, command names) that
+start with @samp{au}.  There are several, including
+@code{auto-fill-mode} and @code{auto-save-mode}---but they are all the
+same as far as @code{auto}, so the @samp{au} in the minibuffer changes
+to @samp{auto}.
 
-  If you type @key{TAB} again immediately, there are multiple possibilities
-for the very next character---it could be @samp{s} or @samp{f}---so no more
-characters are added; but a list of all possible completions is displayed
-in another window.
+  If you type @key{TAB} again immediately, there are multiple
+possibilities for the very next character---it could be any of
+@samp{c-}---so no more characters are added; instead, @key{TAB}
+displays a list of all possible completions in another window.
 
   If you go on to type @kbd{f @key{TAB}}, this @key{TAB} sees
 @samp{auto-f}.  The only command name starting this way is
-@code{auto-fill-mode}, so completion inserts the rest of that command.  You
-now have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
-@key{TAB} f @key{TAB}}.  Note that @key{TAB} has this effect because in the
-minibuffer it is bound to the function @code{minibuffer-complete} when
-completion is supposed to be done.@refill
+@code{auto-fill-mode}, so completion fills in the rest of that.  You now
+have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
+@key{TAB} f @key{TAB}}.  Note that @key{TAB} has this effect because in
+the minibuffer it is bound to the command @code{minibuffer-complete}
+when completion is available.
 
+@node Completion Commands, Strict Completion, Completion Example, Completion
 @subsection Completion Commands
 
-  Here is a list of all the completion commands defined in the minibuffer
+  Here is a list of the completion commands defined in the minibuffer
 when completion is available.
 
 @table @kbd
 @item @key{TAB}
-Complete the text in the minibuffer as much as possible @*
+Complete the text in the minibuffer as much as possible
 (@code{minibuffer-complete}).
 @item @key{SPC}
-Complete the text in the minibuffer but don't add or fill out more
-than one word (@code{minibuffer-complete-word}).
+Complete the minibuffer text, but don't go beyond one word
+(@code{minibuffer-complete-word}).
 @item @key{RET}
 Submit the text in the minibuffer as the argument, possibly completing
 first as described below (@code{minibuffer-complete-and-exit}).
@@ -244,14 +265,51 @@
 
 @kindex SPC
 @findex minibuffer-complete-word
-@key{SPC} completes in a way that is similar to @key{TAB}, but it never
-goes beyond the next hyphen or space.  If you have @samp{auto-f} in the 
-minibuffer and type @key{SPC}, it finds that the completion is
- @samp{auto-fill-mode}, but it stops completing after @samp{fill-}. 
-The result is @samp{auto-fill-}. Another @key{SPC} at this point
-completes all the way to @samp{auto-fill-mode}.  @key{SPC} in the
-minibuffer runs the function @code{minibuffer-complete-word} when 
-completion is available.@refill
+  @key{SPC} completes much like @key{TAB}, but never goes beyond the
+next hyphen or space.  If you have @samp{auto-f} in the minibuffer and
+type @key{SPC}, it finds that the completion is @samp{auto-fill-mode},
+but it stops completing after @samp{fill-}.  This gives
+@samp{auto-fill-}.  Another @key{SPC} at this point completes all the
+way to @samp{auto-fill-mode}.  @key{SPC} in the minibuffer when
+completion is available runs the command
+@code{minibuffer-complete-word}.
+
+  Here are some commands you can use to choose a completion from a
+window that displays a list of completions:
+
+@table @kbd
+@findex mouse-choose-completion
+@item button2up
+Clicking mouse button 2 on a completion in the list of possible
+completions chooses that completion (@code{mouse-choose-completion}).
+You normally use this command while point is in the minibuffer; but you
+must click in the list of completions, not in the minibuffer itself.
+
+@findex choose-completion
+@item @key{RET}
+Typing @key{RET} @emph{in the completion list buffer} chooses the
+completion that point is in or next to (@code{choose-completion}).  To
+use this command, you must first switch windows to the window that shows
+the list of completions.
+
+@findex next-list-mode-item
+@item @key{RIGHT}
+@itemx @key{TAB}
+@itemx C-f
+Typing the right-arrow key @key{RIGHT}, @key{TAB} or @kbd{C-f} @emph{in
+the completion list buffer} moves point to the following completion
+(@code{next-list-mode-item}).
+
+@findex previous-list-mode-item
+@item @key{LEFT}
+@itemx C-b
+Typing the left-arrow key @key{LEFT} or @kbd{C-b} @emph{in the
+completion list buffer} moves point toward the beginning of the buffer,
+to the previous completion (@code{previous-list-mode-item}).
+@end table
+
+@node Strict Completion, Completion Options, Completion Commands, Completion
+@subsection Strict Completion
 
   There are three different ways that @key{RET} can work in completing
 minibuffers, depending on how the argument will be used.
@@ -276,7 +334,7 @@
 already exist.
 
 @item
-@dfn{Permissive} completion is used when any string is
+@dfn{Permissive} completion is used when any string whatever is
 meaningful, and the list of completion alternatives is just a guide.
 For example, when @kbd{C-x C-f} reads the name of a file to visit, any
 file name is allowed, in case you want to create a file.  In
@@ -284,21 +342,26 @@
 exactly as given, without completing it.
 @end itemize
 
-  The completion commands display a list of all possible completions in a
-window whenever there is more than one possibility for the very next
-character.  Typing @kbd{?} explicitly requests such a list.  The
-list of completions counts as help text, so @kbd{C-M-v} typed in the
-minibuffer scrolls the list.
+  The completion commands display a list of all possible completions in
+a window whenever there is more than one possibility for the very next
+character.  Also, typing @kbd{?} explicitly requests such a list.  If
+the list of completions is long, you can scroll it with @kbd{C-M-v}
+(@pxref{Other Window}).
+
+@node Completion Options,  , Strict Completion, Completion
+@subsection Completion Options
 
 @vindex completion-ignored-extensions
   When completion is done on file names, certain file names are usually
-ignored.  The variable @code{completion-ignored-extensions} contains a list
-of strings; a file whose name ends in any of those strings is ignored as a
-possible completion.  The standard value of this variable has several
-elements including @code{".o"}, @code{".elc"}, @code{".dvi"} and @code{"~"}.
-The effect is that, for example, @samp{foo} completes to @samp{foo.c}
-even though @samp{foo.o} exists as well.  If the only possible completions
-are files that end in ``ignored'' strings, they are not ignored.@refill
+ignored.  The variable @code{completion-ignored-extensions} contains a
+list of strings; a file whose name ends in any of those strings is
+ignored as a possible completion.  The standard value of this variable
+has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"}
+and @code{"~"}.  The effect is that, for example, @samp{foo} can
+complete to @samp{foo.c} even though @samp{foo.o} exists as well.
+However, if @emph{all} the possible completions end in ``ignored''
+strings, then they are not ignored.  Ignored extensions do not apply to
+lists of completions---those always mention all possible completions.
 
 @vindex completion-auto-help
   If a completion command finds the next character is undetermined, it
@@ -312,47 +375,135 @@
 not valid completions, an extra @key{RET} must be typed to confirm the
 response.  This is helpful for catching typos.
 
-@node Repetition,, Completion, Minibuffer
+@node Minibuffer History, Repetition, Completion, Minibuffer
+@section Minibuffer History
+@cindex minibuffer history
+@cindex history of minibuffer input
+
+  Every argument that you enter with the minibuffer is saved on a
+@dfn{minibuffer history list} so that you can use it again later in
+another argument.  Special commands load the text of an earlier argument
+in the minibuffer.  They discard the old minibuffer contents, so you can
+think of them as moving through the history of previous arguments.
+
+@table @kbd
+@item @key{UP}
+@itemx M-p
+Move to the next earlier argument string saved in the minibuffer history
+(@code{previous-history-element}).
+@item @key{DOWN}
+@itemx M-n
+Move to the next later argument string saved in the minibuffer history
+(@code{next-history-element}).
+@item M-r @var{regexp} @key{RET}
+Move to an earlier saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{previous-matching-history-element}).
+@item M-s @var{regexp} @key{RET}
+Move to a later saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{next-matching-history-element}).
+@end table
+
+@kindex M-p @r{(minibuffer history)}
+@kindex M-n @r{(minibuffer history)}
+@findex next-history-element
+@findex previous-history-element
+  The simplest way to reuse the saved arguments in the history list is
+to move through the history list one element at a time.  While in the
+minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
+to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
+down-arrow (@code{next-history-element}) to ``move to'' the next later
+input.
+
+  The previous input that you fetch from the history entirely replaces
+the contents of the minibuffer.  To use it as the argument, exit the
+minibuffer as usual with @key{RET}.  You can also edit the text before
+you reuse it; this does not change the history element that you
+``moved'' to, but your new argument does go at the end of the history
+list in its own right.
+
+  For many minibuffer arguments there is a ``default'' value.  In some
+cases, the minibuffer history commands know the default value.  Then you
+can insert the default value into the minibuffer as text by using
+@kbd{M-n} to move ``into the future'' in the history.
+
+@findex previous-matching-history-element
+@findex next-matching-history-element
+@kindex M-r @r{(minibuffer history)}
+@kindex M-s @r{(minibuffer history)}
+  There are also commands to search forward or backward through the
+history; they search for history elements that match a regular
+expression that you specify with the minibuffer.  @kbd{M-r}
+(@code{previous-matching-history-element}) searches older elements in
+the history, while @kbd{M-s} (@code{next-matching-history-element})
+searches newer elements.  By special dispensation, these commands can
+use the minibuffer to read their arguments even though you are already
+in the minibuffer when you issue them.  As with incremental searching,
+an uppercase letter in the regular expression makes the search
+case-sensitive (@pxref{Search Case}).
+
+  All uses of the minibuffer record your input on a history list, but
+there are separate history lists for different kinds of arguments.  For
+example, there is a list for file names, used by all the commands that
+read file names.
+
+  There are several other very specific history lists, including one for
+command names read by @kbd{M-x}, one for buffer names, one for arguments
+of commands like @code{query-replace}, and one for compilation commands
+read by @code{compile}.  Finally, there is one ``miscellaneous'' history
+list that most minibuffer arguments use.
+
+@c Do wee need this?
+@ignore
+@vindex history-length
+  The variable @code{history-length} specifies the maximum length of a
+minibuffer history list; once a list gets that long, the oldest element
+is deleted each time an element is added.  If the value of
+@code{history-length} is @code{t}, though, there is no maximum length
+and elements are never deleted.
+@end ignore
+
+@node Repetition,  , Minibuffer History, Minibuffer
 @section Repeating Minibuffer Commands
 @cindex command history
 @cindex history of commands
 
   Every command that uses the minibuffer at least once is recorded on a
-special history list, together with the values of the minibuffer arguments,
-so that you can repeat the command easily.  In particular, every
-use of @kbd{Meta-x} is recorded, since @kbd{M-x} uses the minibuffer to
-read the command name.
+special history list, together with the values of its arguments, so that
+you can repeat the entire command.  In particular, every use of
+@kbd{M-x} is recorded there, since @kbd{M-x} uses the minibuffer to read
+the command name.
 
 @findex list-command-history
 @c widecommands
 @table @kbd
-@item C-x @key{ESC}
-Re-execute a recent minibuffer command @*(@code{repeat-complex-command}).
+@item C-x @key{ESC} @key{ESC}
+Re-execute a recent minibuffer command (@code{repeat-complex-command}).
 @item M-p
 Within @kbd{C-x @key{ESC}}, move to previous recorded command
 (@code{previous-history-element}).
 @item M-n
 Within @kbd{C-x @key{ESC}}, move to the next (more recent) recorded
-command (@code{next-history-element}).@refill
+command (@code{next-history-element}).
 @item M-x list-command-history
 Display the entire command history, showing all the commands
-@kbd{C-x @key{ESC}} can repeat, most recent first.@refill
+@kbd{C-x @key{ESC} @key{ESC}} can repeat, most recent first.
 @end table
 
-@kindex C-x ESC
+@kindex C-x ESC ESC
 @findex repeat-complex-command
-  @kbd{C-x @key{ESC}} is used to re-execute a recent command that used
-the minibuffer. With no argument, it repeats the last command.  A numeric
-argument specifies which command to repeat; 1 means the last one, and
-larger numbers specify earlier commands.
+  @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent
+minibuffer-using command.  With no argument, it repeats the last such
+command.  A numeric argument specifies which command to repeat; one
+means the last one, and larger numbers specify earlier ones.
 
-  @kbd{C-x @key{ESC}} works by turning the previous command into a Lisp
-expression and then entering a minibuffer initialized with the text for
-that expression.  If you type just @key{RET}, the command is repeated as
-before.  You can also change the command by editing the Lisp expression.
-The expression you finally submit will be executed.  The repeated
-command is added to the front of the command history unless it is
-identical to the most recently executed command already there.
+  @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command
+into a Lisp expression and then entering a minibuffer initialized with
+the text for that expression.  If you type just @key{RET}, the command
+is repeated as before.  You can also change the command by editing the
+Lisp expression.  Whatever expression you finally submit is what will be
+executed.  The repeated command is added to the front of the command
+history unless it is identical to the most recently executed command
+already there.
 
   Even if you don't understand Lisp syntax, it will probably be obvious
 which command is displayed for repetition.  If you do not change the text,
@@ -362,17 +513,17 @@
 @kindex M-p
 @findex next-complex-command
 @findex previous-complex-command
-  If you are in the minibuffer for @kbd{C-x @key{ESC}} and the command shown
-to you is not the one you want to repeat, you can move around the list of
-previous commands using @kbd{M-n} and @kbd{M-p}.  @kbd{M-p} replaces the
-contents of the minibuffer with the next earlier recorded command, and
-@kbd{M-n} replaces it with the next later command.  After finding the
-desired previous command, you can edit its expression and then
-resubmit it by typing @key{RET}.  Any editing you have done on the
-command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}.
+  If you are in the minibuffer for @kbd{C-x @key{ESC} @key{ESC}} and the
+command shown to you is not the one you want to repeat, you can move
+around the list of previous commands using @kbd{M-n} and @kbd{M-p}.
+@kbd{M-p} replaces the contents of the minibuffer with the next earlier
+recorded command, and @kbd{M-n} replaces it with the next later command.
+After finding the desired previous command, you can edit its expression
+and then resubmit it by typing @key{RET}.  Any editing you have done on
+the command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}.
 
-@kbd{M-n} and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}}
-to run the commands @code{previous-history-element} and
+@kbd{M-n} and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}
+@key{ESC}} to run the commands @code{previous-history-element} and
 @code{next-history-element}.
 
 @vindex command-history
--- a/man/xemacs/regs.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/xemacs/regs.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -3,22 +3,20 @@
 @chapter Registers
 @cindex registers
 
-  Emacs @dfn{registers} are places in which you can save text or
-positions for later use.  Text saved in a register can be copied into
-the buffer once or many times; a position saved in a register is used by
-moving point to that position.  Rectangles can also be copied into and
-out of registers (@pxref{Rectangles}).
+  XEmacs @dfn{registers} are places in which you can save text or
+positions for later use.  Once you save text or a rectangle in a
+register, you can copy it into the buffer once or many times; a position
+saved in a register is used by moving point to that position.
+Rectangles can also be copied into and out of registers
+(@pxref{Rectangles}).
 
-  Each register has a name, which is a single character.  A register can
-store either a piece of text, a position, or a rectangle, but only one
-thing at any given time.  Whatever you store in a register remains
-there until you store something else in that register.
-
-@menu
-* RegPos::    Saving positions in registers.
-* RegText::   Saving text in registers.
-* RegRect::   Saving rectangles in registers.
-@end menu
+@findex view-register
+  Each register has a name which is a single character.  A register can
+store a piece of text, a rectangle, a position, a window configuration,
+or a file name, but only one thing at any given time.  Whatever you
+store in a register remains there until you store something else in that
+register.  To see what a register @var{r} contains, use @kbd{M-x
+view-register}.
 
 @table @kbd
 @item M-x view-register @key{RET} @var{r}
@@ -29,34 +27,49 @@
   @kbd{M-x view-register} reads a register name as an argument and then
 displays the contents of the specified register.
 
+@menu
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
+@end menu
+
 @node RegPos, RegText, Registers, Registers
 @section Saving Positions in Registers
 
-  Saving a position records a spot in a buffer so you can move
-back there later.  Moving to a saved position re-selects the buffer
-and moves point to the spot.
+  Saving a position records a place in a buffer so that you can move
+back there later.  Moving to a saved position switches to that buffer
+and moves point to that place in it.
 
 @table @kbd
-@item C-x r SPC @var{r}
-Save the location of point in register @var{r} (@code{point-to-register}).
+@item C-x r @key{SPC} @var{r}
+Save position of point in register @var{r} (@code{point-to-register}).
 @item C-x r j @var{r}
-Jump to the location saved in register @var{r} (@code{register-to-point}).
+Jump to the position saved in register @var{r} (@code{jump-to-register}).
 @end table
 
 @kindex C-x r SPC
 @findex point-to-register
-  To save the current location of point in a register, choose a name
-@var{r} and type @kbd{C-x r SPC @var{r}}.  The register @var{r} retains
-the location thus saved until you store something else in that
-register.@refill
+  To save the current position of point in a register, choose a name
+@var{r} and type @kbd{C-x r @key{SPC} @var{r}}.  The register @var{r}
+retains the position thus saved until you store something else in that
+register.
 
 @kindex C-x r j
-@findex register-to-point
-  The command @kbd{C-x r j @var{r}} moves point to the location recorded
+@findex jump-to-register
+  The command @kbd{C-x r j @var{r}} moves point to the position recorded
 in register @var{r}.  The register is not affected; it continues to
 record the same location.  You can jump to the same position using the
 same register as often as you want.
 
+  If you use @kbd{C-x r j} to go to a saved position, but the buffer it
+was saved from has been killed, @kbd{C-x r j} tries to create the buffer
+again by visiting the same file.  Of course, this works only for buffers
+that were visiting files.
+
 @node RegText, RegRect, RegPos, Registers
 @section Saving Text in Registers
 
@@ -65,46 +78,234 @@
 the piece of text further down on the ring.  It becomes hard to keep
 track of the argument needed to retrieve the same text with @kbd{C-y}.  An
 alternative is to store the text in a register with @kbd{C-x r s}
-(@code{copy-to-register}) and then retrieve it with @kbd{C-x r g}
+(@code{copy-to-register}) and then retrieve it with @kbd{C-x r i}
 (@code{insert-register}).
 
 @table @kbd
 @item C-x r s @var{r}
 Copy region into register @var{r} (@code{copy-to-register}).
 @item C-x r g @var{r}
+@itemx C-x r i @var{r}
 Insert text contents of register @var{r} (@code{insert-register}).
 @end table
 
 @kindex C-x r s
 @kindex C-x r g
+@kindex C-x r i
 @findex copy-to-register
 @findex insert-register
   @kbd{C-x r s @var{r}} stores a copy of the text of the region into the
-register named @var{r}.  Given a numeric argument, @kbd{C-x r s} deletes the
-text from the buffer as well.
+register named @var{r}.  Given a numeric argument, @kbd{C-x r s @var{r}}
+deletes the text from the buffer as well.
 
-  @kbd{C-x r g @var{r}} inserts the text from register @var{r} in the buffer.
-By default it leaves point before the text and places the mark after it. 
-With a numeric argument, it puts point after the text and the mark
-before it.
+  @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer.
+By default it leaves point before the text and places the mark after
+it. With a numeric argument (@kbd{C-u}), it puts point after the text
+and the mark before it.
 
-@node RegRect,, RegText, Registers
+@node RegRect, RegConfig, RegText, Registers
 @section Saving Rectangles in Registers
 @cindex rectangle
-@findex copy-region-to-rectangle
 
   A register can contain a rectangle instead of lines of text.  The rectangle
 is represented as a list of strings.  @xref{Rectangles}, for basic
 information on rectangles and how to specify rectangles in a buffer.
 
 @table @kbd
+@findex copy-rectangle-to-register
+@kindex C-x r r
 @item C-x r r @var{r}
-Copy the region-rectangle into register @var{r}(@code{copy-rectangle-to-register}).
-With a numeric argument, delete it as well.
+Copy the region-rectangle into register @var{r}
+(@code{copy-rectangle-to-register}).  With a numeric argument, delete it
+as well.
 @item C-x r g @var{r}
+@itemx C-x r i @var{r}
 Insert the rectangle stored in register @var{r} (if it contains a
 rectangle) (@code{insert-register}).
 @end table
 
-  The @kbd{C-x r g} command inserts linear text if the register contains
+  The @kbd{C-x r i @var{r}} command inserts linear text if the register
+  contains
 that, or inserts a rectangle if the register contains one.
+
+  See also the command @code{sort-columns}, which you can think of
+as sorting a rectangle.  @xref{Sorting}.
+
+@node RegConfig, RegNumbers, RegRect, Registers
+@section Saving Window Configurations in Registers
+
+@findex window-configuration-to-register
+@findex frame-configuration-to-register
+@kindex C-x r w
+@c @kindex C-x r f
+  You can save the window configuration of the selected frame in a
+register, or even the configuration of all windows in all frames, and
+restore the configuration later.
+
+@table @kbd
+@item C-x r w @var{r}
+Save the state of the selected frame's windows in register @var{r}
+(@code{window-configuration-to-register}).
+@c @item C-x r f @var{r}
+@item M-x frame-configuration-to-register @key{RET} @var{r}
+Save the state of all frames, including all their windows, in register
+@var{r} (@code{frame-configuration-to-register}).
+@end table
+
+  Use @kbd{C-x r j @var{r}} to restore a window or frame configuration.
+This is the same command used to restore a cursor position.  When you
+restore a frame configuration, any existing frames not included in the
+configuration become invisible.  If you wish to delete these frames
+instead, use @kbd{C-u C-x r j @var{r}}.
+
+@node RegNumbers, RegFiles, RegConfig, Registers
+@section Keeping Numbers in Registers
+
+  There are commands to store a number in a register, to insert
+the number in the buffer in decimal, and to increment it.  These commands
+can be useful in keyboard macros (@pxref{Keyboard Macros}).
+
+@table @kbd
+@item C-u @var{number} C-x r n @var{reg}
+@kindex C-x r n
+@findex number-to-register
+Store @var{number} into register @var{reg} (@code{number-to-register}).
+@item C-u @var{number} C-x r + @var{reg}
+@kindex C-x r +
+@findex increment-register
+Increment the number in register @var{reg} by @var{number}
+(@code{increment-register}).
+@item C-x r g @var{reg}
+Insert the number from register @var{reg} into the buffer.
+@end table
+
+  @kbd{C-x r g} is the same command used to insert any other
+sort of register contents into the buffer.
+
+@node RegFiles, Bookmarks, RegNumbers, Registers
+@section Keeping File Names in Registers
+
+  If you visit certain file names frequently, you can visit them more
+conveniently if you put their names in registers.  Here's the Lisp code
+used to put a file name in a register:
+
+@smallexample
+(set-register ?@var{r} '(file . @var{name}))
+@end smallexample
+
+@need 3000
+@noindent
+For example,
+
+@smallexample
+(set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog"))
+@end smallexample
+
+@noindent
+puts the file name shown in register @samp{z}.
+
+  To visit the file whose name is in register @var{r}, type @kbd{C-x r j
+@var{r}}.  (This is the same command used to jump to a position or
+restore a frame configuration.)
+
+@node Bookmarks,  , RegFiles, Registers
+@section Bookmarks
+@cindex bookmarks
+
+  @dfn{Bookmarks} are somewhat like registers in that they record
+positions you can jump to.  Unlike registers, they have long names, and
+they persist automatically from one Emacs session to the next.  The
+prototypical use of bookmarks is to record ``where you were reading'' in
+various files.
+
+  Note: bookmark.el is distributed in edit-utils package.  You need to
+install that to use bookmark facility (@pxref{Packages}).
+
+@table @kbd
+@item C-x r m @key{RET}
+Set the bookmark for the visited file, at point.
+
+@item C-x r m @var{bookmark} @key{RET}
+@findex bookmark-set
+Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
+
+@item C-x r b @var{bookmark} @key{RET}
+@findex bookmark-jump
+Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
+
+@item C-x r l
+@findex list-bookmarks
+List all bookmarks (@code{list-bookmarks}).
+
+@item M-x bookmark-save
+@findex bookmark-save
+Save all the current bookmark values in the default bookmark file.
+@end table
+
+@kindex C-x r m
+@findex bookmark-set
+@kindex C-x r b
+@findex bookmark-jump
+  The prototypical use for bookmarks is to record one current position
+in each of several files.  So the command @kbd{C-x r m}, which sets a
+bookmark, uses the visited file name as the default for the bookmark
+name.  If you name each bookmark after the file it points to, then you
+can conveniently revisit any of those files with @kbd{C-x r b}, and move
+to the position of the bookmark at the same time.
+
+@kindex C-x r l
+  To display a list of all your bookmarks in a separate buffer, type
+@kbd{C-x r l} (@code{list-bookmarks}).  If you switch to that buffer,
+you can use it to edit your bookmark definitions or annotate the
+bookmarks.  Type @kbd{C-h m} in that buffer for more information about
+its special editing commands.
+
+  When you kill XEmacs, XEmacs offers to save your bookmark values in
+your default bookmark file, @file{~/.emacs.bmk}, if you have changed any
+bookmark values.  You can also save the bookmarks at any time with the
+@kbd{M-x bookmark-save} command.  The bookmark commands load your
+default bookmark file automatically.  This saving and loading is how
+bookmarks persist from one XEmacs session to the next.
+
+@vindex bookmark-save-flag
+  If you set the variable @code{bookmark-save-flag} to 1, then each
+command that sets a bookmark will also save your bookmarks; this way,
+you don't lose any bookmark values even if XEmacs crashes.  (The value,
+if a number, says how many bookmark modifications should go by between
+saving.)
+
+@vindex bookmark-search-size
+  Bookmark position values are saved with surrounding context, so that
+@code{bookmark-jump} can find the proper position even if the file is
+modified slightly.  The variable @code{bookmark-search-size} says how
+many characters of context to record, on each side of the bookmark's
+position.
+
+  Here are some additional commands for working with bookmarks:
+
+@table @kbd
+@item M-x bookmark-load @key{RET} @var{filename} @key{RET}
+@findex bookmark-load
+Load a file named @var{filename} that contains a list of bookmark
+values.  You can use this command, as well as @code{bookmark-write}, to
+work with other files of bookmark values in addition to your default
+bookmark file.
+
+@item M-x bookmark-write @key{RET} @var{filename} @key{RET}
+@findex bookmark-write
+Save all the current bookmark values in the file @var{filename}.
+
+@item M-x bookmark-delete @key{RET} @var{bookmark} @key{RET}
+@findex bookmark-delete
+Delete the bookmark named @var{bookmark}.
+
+@item M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET}
+@findex bookmark-insert-location
+Insert in the buffer the name of the file that bookmark @var{bookmark}
+points to.
+
+@item M-x bookmark-insert @key{RET} @var{bookmark} @key{RET}
+@findex bookmark-insert
+Insert in the buffer the @emph{contents} of the file that bookmark
+@var{bookmark} points to.
+@end table
--- a/man/xemacs/xemacs.texi	Mon Aug 13 11:31:26 2007 +0200
+++ b/man/xemacs/xemacs.texi	Mon Aug 13 11:32:25 2007 +0200
@@ -90,9 +90,8 @@
 @page
 @ifinfo
 @node Top, License,, (dir)
+@top The XEmacs Editor
 
-The XEmacs Editor
-*****************
 
 XEmacs is the extensible, customizable, self-documenting real-time
 display editor.  This Info file describes how to edit with Emacs
--- a/nt/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/nt/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,23 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+2000-01-18  Martin Buchholz  <martin@xemacs.org>
+
+	* minitar.c: Errno.h --> errno.h.  Remove errno declaration.
+
+2000-01-13  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+	* xemacs.mak: Added USE_PORTABLE_DUMPER make command line macro.
+	(temacs:) Added dependency for lastfile.lib so that 'make temacs'
+	builds it first.
+
+1999-12-28  Scott Blachowicz  <Scott.Blachowicz@seaslug.org>
+
+	* minitar.mak: Add vars to allow building from main xemacs.mak.
+
+	* xemacs.mak: Add rules to build & install minitar.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/nt/config.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/nt/config.h	Mon Aug 13 11:32:25 2007 +0200
@@ -611,16 +611,8 @@
 /* Should movemail use hesiod for getting POP server host? */
 #undef HESIOD
 /* Determine type of mail locking. */
-/* Play preprocessor games so that configure options override s&m files */
-#undef REAL_MAIL_USE_LOCKF
-#undef REAL_MAIL_USE_FLOCK
-#undef MAIL_USE_LOCKF
-#undef MAIL_USE_FLOCK
-#ifdef REAL_MAIL_USE_FLOCK
-#define MAIL_USE_FLOCK
-#endif
-#ifdef REAL_MAIL_USE_LOCKF
-#define MAIL_USE_LOCKF
-#endif
+#undef MAIL_LOCK_LOCKF
+#undef REAL_LOCK_FLOCK
+#undef MAIL_LOCK_DOT
 
 #endif /* _SRC_CONFIG_H_ */
--- a/nt/minitar.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/nt/minitar.c	Mon Aug 13 11:32:25 2007 +0200
@@ -13,7 +13,7 @@
 
 
 #include <stdio.h>
-#include <Errno.h>
+#include <errno.h>
 
 #include <zlib.h>
 
@@ -43,7 +43,6 @@
 {
   char tmp[MAXNAMELEN];
   char *cp;
-  extern int errno;
 
   for (cp=path; cp; cp = (char*)strchr(cp+1,'/')){
     if (!*cp)
--- a/nt/minitar.mak	Mon Aug 13 11:31:26 2007 +0200
+++ b/nt/minitar.mak	Mon Aug 13 11:32:25 2007 +0200
@@ -1,10 +1,12 @@
 ZLIB=\path\to\zlib
+LIB_SRC=.
+NT=.
 
-all: minitar.exe
+all: $(LIB_SRC)\minitar.exe
 
-minitar.exe: minitar.obj
-	cl -o minitar.exe minitar.obj $(ZLIB)\zlib.lib
+$(LIB_SRC)\minitar.exe: $(LIB_SRC)\minitar.obj
+	cl -o $@ $(LIB_SRC)\minitar.obj $(ZLIB)\zlib.lib
 
-minitar.obj: minitar.c
-	cl -c minitar.c -I $(ZLIB)
+$(LIB_SRC)\minitar.obj: $(NT)\minitar.c
+	cl -Fo$@ -c $(NT)\minitar.c -I $(ZLIB)
 
--- a/nt/xemacs.mak	Mon Aug 13 11:31:26 2007 +0200
+++ b/nt/xemacs.mak	Mon Aug 13 11:32:25 2007 +0200
@@ -129,12 +129,18 @@
 !if !defined(USE_UNION_TYPE)
 USE_UNION_TYPE=0
 !endif
+!if !defined(USE_MINITAR)
+USE_MINITAR=1
+!endif
 !if !defined(USE_MINIMAL_TAGBITS)
 USE_MINIMAL_TAGBITS=0
 !endif
 !if !defined(USE_INDEXED_LRECORD_IMPLEMENTATION)
 USE_INDEXED_LRECORD_IMPLEMENTATION=0
 !endif
+!if !defined(USE_PORTABLE_DUMPER)
+USE_PORTABLE_DUMPER=0
+!endif
 !if !defined(GUNG_HO)
 GUNG_HO=0
 !endif
@@ -341,6 +347,10 @@
 LRECORD_DEFINES=-DUSE_INDEXED_LRECORD_IMPLEMENTATION
 !endif
 !if $(USE_UNION_TYPE)
+!if $(USE_PORTABLE_DUMPER)
+DUMPER_DEFINES=-DPDUMP
+!endif
+
 UNION_DEFINES=-DUSE_UNION_TYPE
 !endif
 
@@ -359,7 +369,7 @@
 INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(XEMACS)\nt\inc -I$(XEMACS)\src -I$(XEMACS)\lwlib
 
 DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(MULE_DEFINES) \
-	$(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) \
+	$(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) $(DUMPER_DEFINES)\
 	-DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN -DWINDOWSNT -Demacs \
 	-DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES)
 
@@ -428,6 +438,8 @@
 	cd $(LIB_SRC)
 	$(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc $(LIB_SRC_DEFINES) $(CFLAGS) -Fe$@ $** wsock32.lib -link -incremental:no
 	cd $(NT)
+$(LIB_SRC)/minitar.exe : $(NT)/minitar.mak $(NT)/minitar.c
+	nmake -nologo -f minitar.mak ZLIB="$(ZLIB_DIR)" NT="$(NT)" LIB_SRC="$(LIB_SRC)"
 
 LIB_SRC_TOOLS = \
 	$(LIB_SRC)/make-docfile.exe	\
@@ -437,6 +449,14 @@
 	$(LIB_SRC)/sorted-doc.exe	\
 	$(LIB_SRC)/wakeup.exe		\
 	$(LIB_SRC)/etags.exe		
+!if $(USE_MINITAR)
+LIB_SRC_TOOLS = \
+	$(LIB_SRC_TOOLS) \
+	$(LIB_SRC)/minitar.exe
+!endif
+
+# Shorthand target
+minitar: $(LIB_SRC)/minitar.exe
 
 #------------------------------------------------------------------------------
 
@@ -1142,6 +1162,7 @@
 	$(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC9)
 
 update-elc:
+	set EMACSBOOTSTRAPMODULEPATH=$(MODULES)
 	set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH)
 	set EMACSBOOTSTRAPMODULEPATH=$(MODULES)
 	$(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\update-elc.el
@@ -1163,7 +1184,7 @@
 	$(LIB_SRC_TOOLS) $(RUNEMACS) $(TEMACS) update-elc $(DOC) dump-xemacs \
 	$(LISP)/auto-autoloads.el $(LISP)/custom-load.el info
 
-temacs: $(TEMACS)
+temacs: $(LASTFILE) $(TEMACS)
 
 # use this rule to install the system
 install:	all
@@ -1321,6 +1342,9 @@
 !if $(USE_UNION_TYPE)
   Using union type for Lisp object storage.
 !endif
+!if $(USE_PORTABLE_DUMPER)
+  Using portable dumper.
+!endif
 !if $(DEBUG_XEMACS)
   Compiling in extra debug checks. XEmacs will be slow!
 !endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/.dbxrc	Mon Aug 13 11:32:25 2007 +0200
@@ -0,0 +1,392 @@
+# -*- ksh -*-
+# 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.
+
+# Author: Martin Buchholz
+
+# You can use this file to debug XEmacs using Sun WorkShop's dbx.
+
+# Some functions defined here require a running process, but most
+# don't.  Considerable effort has been expended to this end.
+
+# Since this file is called `.dbxrc', it will be read by dbx
+# automatically when dbx is run in the build directory, which is where
+# developers usually debug their xemacs.
+
+# See also the comments in .gdbinit.
+
+# See also the question of the XEmacs FAQ, titled
+# "How to Debug an XEmacs problem with a debugger".
+
+# gdb sources the ./.gdbinit in _addition_ to ~/.gdbinit.
+# But dbx does _not_ source ~/.dbxrc if it found ./.dbxrc.
+# So we simulate the gdb algorithm by doing it ourselves here.
+if test -r $HOME/.dbxrc; then . $HOME/.dbxrc; fi
+
+ignore POLL
+ignore IO
+
+document lbt << 'end'
+Usage: lbt
+Print the current Lisp stack trace.
+Requires a running xemacs process.
+end
+
+function lbt {
+  call debug_backtrace()
+}
+
+document ldp << 'end'
+Usage: ldp lisp_object
+Print a Lisp Object value using the Lisp printer.
+Requires a running xemacs process.
+end
+
+function ldp {
+  call debug_print ($1);
+}
+
+# A bug in dbx prevents string variables from having values beginning with `-'!!
+function XEmacsInit {
+  function ToInt { eval "$1=\$[(int) $1]"; }
+  ToInt dbg_USE_UNION_TYPE
+  ToInt Lisp_Type_Int
+  ToInt Lisp_Type_Char
+  ToInt Lisp_Type_Cons
+  ToInt Lisp_Type_String
+  ToInt Lisp_Type_Vector
+  ToInt Lisp_Type_Symbol
+  ToInt Lisp_Type_Record
+  ToInt dbg_valbits
+  ToInt dbg_gctypebits
+  function ToLong { eval "$1=\$[(unsigned long) $1]"; }
+  ToLong dbg_valmask
+  ToLong dbg_typemask
+  xemacs_initted=yes
+}
+
+function printvar {
+  for i in $*; do eval "echo $i=\$$i"; done
+}
+
+document decode_object << 'end'
+Usage: decode_object lisp_object
+Extract implementation information from a Lisp Object.
+Defines variables $val, $type and $imp.
+end
+
+# Various dbx bugs cause ugliness in following code
+function decode_object {
+  if test -z "$xemacs_initted"; then XEmacsInit; fi;
+  if test $dbg_USE_UNION_TYPE = 1; then
+    # Repeat after me... dbx sux, dbx sux, dbx sux...
+    # Allow both `pobj Qnil' and `pobj 0x82746834' to work
+    case $(whatis $1) in
+      *Lisp_Object*) obj="$[(unsigned long)(($1).i)]";;
+      *) obj="$[(unsigned long)($1)]";;
+    esac
+  else
+    obj="$[(unsigned long)($1)]";
+  fi
+  if test $[(int)($obj & 1)] = 1; then
+    # It's an int
+    val=$[(long)(((unsigned long long)$obj) >> 1)]
+    type=$Lisp_Type_Int
+  else
+    type=$[(int)(((void*)$obj) & $dbg_typemask)]
+    if test $type = $Lisp_Type_Char; then
+      val=$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> $dbg_gctypebits)]
+    else
+      # It's a record pointer
+      val=$[(void*)$obj]
+      if test "$val" = "(nil)"; then type=null_pointer; fi
+    fi
+  fi
+
+  if test $type = $Lisp_Type_Record; then
+    typeset lheader="((struct lrecord_header *) $val)"
+    imp=$[(void*)(lrecord_implementations_table[$lheader->type])]
+  else
+    imp="0xdeadbeef"
+  fi
+  # printvar obj val type imp
+}
+
+function xint {
+  decode_object "$*"
+  print (long) ($val)
+}
+
+document xtype << 'end'
+Usage: xtype lisp_object
+Print the Lisp type of a lisp object.
+end
+
+function xtype {
+  decode_object "$*"
+  if   test $type = $Lisp_Type_Int;    then echo "int"
+  elif test $type = $Lisp_Type_Char;   then echo "char"
+  elif test $type = $Lisp_Type_Symbol; then echo "symbol"
+  elif test $type = $Lisp_Type_String; then echo "string"
+  elif test $type = $Lisp_Type_Vector; then echo "vector"
+  elif test $type = $Lisp_Type_Cons;   then echo "cons"
+  elif test $type = null_pointer;      then echo "null_pointer"
+  else
+    echo "record type with name: $[((struct lrecord_implementation *)$imp)->name]"
+  fi
+}
+
+function lisp-shadows {
+  run -batch -vanilla -f list-load-path-shadows
+}
+
+function environment-to-run-temacs {
+  unset EMACSLOADPATH
+  export EMACSBOOTSTRAPLOADPATH=../lisp/:..
+  export EMACSBOOTSTRAPMODULEPATH=../modules/:..
+}
+
+document run-temacs << 'end'
+Usage: run-temacs
+Run temacs interactively, like xemacs.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+end
+
+function run-temacs {
+  environment-to-run-temacs
+  run -batch -l ../lisp/loadup.el run-temacs -q ${1+"$@"}
+}
+
+document check-xemacs << 'end'
+Usage: check-xemacs
+Run the test suite.  Equivalent to 'make check'.
+end
+
+function check-xemacs {
+  run -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated
+}
+
+document check-temacs << 'end'
+Usage: check-temacs
+Run the test suite on temacs.  Equivalent to 'make check-temacs'.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+end
+
+function check-temacs {
+  run-temacs -q -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated
+}
+
+document update-elc << 'end'
+Usage: update-elc
+Run the core lisp byte compilation part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
+end
+
+function update-elc {
+  environment-to-run-temacs
+  run -batch -l ../lisp/update-elc.el
+}
+
+document dump-temacs << 'end'
+Usage: dump-temacs
+Run the dumping part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
+end
+
+function dump-temacs {
+  environment-to-run-temacs
+  run -batch -l ../lisp/loadup.el dump
+}
+
+function pstruct {
+  xstruct="((struct $1 *) $val)"
+  print $xstruct
+  print *$xstruct
+}
+
+function lrecord_type_p {
+  if eval test -z \"\$lrecord_$1\" && test $imp = $[(void*)(&lrecord_$1)]; then return 0; else return 1; fi
+}
+
+document pobj << 'end'
+Usage: pobj lisp_object
+Print the internal C representation of a Lisp Object.
+end
+
+function pobj {
+  decode_object $1
+  if test $type = $Lisp_Type_Int; then
+    print -f"Integer: %d" $val
+  elif test $type = $Lisp_Type_Char; then
+    if test $[$val > 32 && $val < 128] = 1; then
+      print -f"Char: %c" $val
+    else
+      print -f"Char: %d" $val
+    fi
+  elif test $type = $Lisp_Type_String || lrecord_type_p string; then
+    pstruct Lisp_String
+  elif test $type = $Lisp_Type_Cons   || lrecord_type_p cons; then
+    pstruct Lisp_Cons
+  elif test $type = $Lisp_Type_Symbol || lrecord_type_p symbol; then
+    pstruct Lisp_Symbol
+    echo "Symbol name: $[(char *)($xstruct->name->data)]"
+  elif test $type = $Lisp_Type_Vector || lrecord_type_p vector; then
+    pstruct Lisp_Vector
+    echo "Vector of length $[$xstruct->size]"
+  elif lrecord_type_p bit_vector; then
+    pstruct Lisp_Bit_Vector
+  elif lrecord_type_p buffer; then
+    pstruct buffer
+  elif lrecord_type_p char_table; then
+    pstruct Lisp_Char_Table
+  elif lrecord_type_p char_table_entry; then
+    pstruct Lisp_Char_Table_Entry
+  elif lrecord_type_p charset; then
+    pstruct Lisp_Charset
+  elif lrecord_type_p coding_system; then
+    pstruct Lisp_Coding_System
+  elif lrecord_type_p color_instance; then
+    pstruct Lisp_Color_Instance
+  elif lrecord_type_p command_builder; then
+    pstruct command_builder
+  elif lrecord_type_p compiled_function; then
+    pstruct Lisp_Compiled_Function
+  elif lrecord_type_p console; then
+    pstruct console
+  elif lrecord_type_p database; then
+    pstruct Lisp_Database
+  elif lrecord_type_p device; then
+    pstruct device
+  elif lrecord_type_p event; then
+    pstruct Lisp_Event
+  elif lrecord_type_p extent; then
+    pstruct extent
+  elif lrecord_type_p extent_auxiliary; then
+    pstruct extent_auxiliary
+  elif lrecord_type_p extent_info; then
+    pstruct extent_info
+  elif lrecord_type_p face; then
+    pstruct Lisp_Face
+  elif lrecord_type_p float; then
+    pstruct Lisp_Float
+  elif lrecord_type_p font_instance; then
+    pstruct Lisp_Font_Instance
+  elif lrecord_type_p frame; then
+    pstruct frame
+  elif lrecord_type_p glyph; then
+    pstruct Lisp_Glyph
+  elif lrecord_type_p hash_table; then
+    pstruct Lisp_Hash_Table
+  elif lrecord_type_p image_instance; then
+    pstruct Lisp_Image_Instance
+  elif lrecord_type_p keymap; then
+    pstruct Lisp_Keymap
+  elif lrecord_type_p lcrecord_list; then
+    pstruct lcrecord_list
+  elif lrecord_type_p lstream; then
+    pstruct lstream
+  elif lrecord_type_p marker; then
+    pstruct Lisp_Marker
+  elif lrecord_type_p opaque; then
+    pstruct Lisp_Opaque
+  elif lrecord_type_p opaque_ptr; then
+    pstruct Lisp_Opaque_Ptr
+  elif lrecord_type_p popup_data; then
+    pstruct popup_data
+  elif lrecord_type_p process; then
+    pstruct Lisp_Process
+  elif lrecord_type_p range_table; then
+    pstruct Lisp_Range_Table
+  elif lrecord_type_p specifier; then
+    pstruct Lisp_Specifier
+  elif lrecord_type_p subr; then
+    pstruct Lisp_Subr
+  elif lrecord_type_p symbol_value_buffer_local; then
+    pstruct symbol_value_buffer_local
+  elif lrecord_type_p symbol_value_forward; then
+    pstruct symbol_value_forward
+  elif lrecord_type_p symbol_value_lisp_magic; then
+    pstruct symbol_value_lisp_magic
+  elif lrecord_type_p symbol_value_varalias; then
+    pstruct symbol_value_varalias
+  elif lrecord_type_p toolbar_button; then
+    pstruct toolbar_button
+  elif lrecord_type_p tooltalk_message; then
+    pstruct Lisp_Tooltalk_Message
+  elif lrecord_type_p tooltalk_pattern; then
+    pstruct Lisp_Tooltalk_Pattern
+  elif lrecord_type_p weak_list; then
+    pstruct weak_list
+  elif lrecord_type_p window; then
+    pstruct window
+  elif lrecord_type_p window_configuration; then
+    pstruct window_config
+  elif test "$type" = "null_pointer"; then
+    echo "Lisp Object is a null pointer!!"
+  else
+    echo "Unknown Lisp Object type"
+    print $1
+  fi
+}
+
+function pproc {
+  print *(`process.c`struct Lisp_Process*)$1 ;
+  ldp "(`process.c`struct Lisp_Process*)$1->name" ;
+  ldp "(`process.c`struct Lisp_Process*)$1->command" ;
+}
+
+dbxenv suppress_startup_message 4.0
+dbxenv mt_watchpoints on
+
+function dp_core {
+  print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core
+}
+
+# Barf!
+function print_shell {
+  print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((struct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget)
+}
+
+# -------------------------------------------------------------
+# functions to test the debugging support itself.
+# If you change this file, make sure the following still work...
+# -------------------------------------------------------------
+function test_xtype {
+  function doit { echo -n "$1: "; xtype "$1"; }
+  test_various_objects
+}
+
+function test_pobj {
+  function doit { echo '==============================='; echo -n "$1: "; pobj "$1"; }
+  test_various_objects
+}
+
+function test_various_objects {
+  doit Vemacs_major_version
+  doit Vhelp_char
+  doit Qnil
+  doit Qunbound
+  doit Vobarray
+  doit Vall_weak_lists
+  doit Vxemacs_codename
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/.gdbinit	Mon Aug 13 11:32:25 2007 +0200
@@ -0,0 +1,507 @@
+# -*- ksh -*-
+# 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.
+
+# Author: Martin Buchholz
+
+# Some useful commands for debugging emacs with gdb 4.16 or better.
+#
+# Since this file is called `.gdbinit', it will be read by gdb
+# automatically when gdb is run in the build directory, which is where
+# developers usually debug their xemacs.  You can also source this
+# file from your ~/.gdbinit, if you like.
+#
+# Configure xemacs with --debug, and compile with -g.
+#
+# See also the question of the XEmacs FAQ, titled
+# "How to Debug an XEmacs problem with a debugger".
+#
+# This can be used to debug XEmacs no matter how the following are
+# specified:
+
+# USE_UNION_TYPE
+
+# (the above all have configure equivalents)
+
+# Some functions defined here require a running process, but most
+# don't.  Considerable effort has been expended to this end.
+
+# See the dbg_ C support code in src/alloc.c that allows the functions
+# defined in this file to work correctly.
+
+set print union off
+set print pretty off
+
+define decode_object
+  set $obj = (unsigned long) $arg0
+  if $obj & 1
+  # It's an int
+    set $val = $obj >> 1
+    set $type = Lisp_Type_Int
+  else
+    set $type = $obj & dbg_typemask
+    if $type == Lisp_Type_Char
+      set $val = ($obj & dbg_valmask) >> dbg_gctypebits
+    else
+      # It's a record pointer
+      set $val = $obj
+    end
+  end
+
+  if $type == Lisp_Type_Record
+    set $lheader = (struct lrecord_header *) $val
+    set $imp = lrecord_implementations_table[$lheader->type]
+  else
+    set $imp = -1
+  end
+end
+
+document decode_object
+Usage: decode_object lisp_object
+Extract implementation information from a Lisp Object.
+Defines variables $val, $type and $imp.
+end
+
+define xint
+decode_object $arg0
+print ((long) $val)
+end
+
+define xtype
+  decode_object $arg0
+  if $type == Lisp_Type_Int
+    echo int\n
+  else
+  if $type == Lisp_Type_Char
+    echo char\n
+  else
+  if $type == Lisp_Type_Symbol
+    echo symbol\n
+  else
+  if $type == Lisp_Type_String
+    echo string\n
+  else
+  if $type == Lisp_Type_Vector
+    echo vector\n
+  else
+  if $type == Lisp_Type_Cons
+    echo cons\n
+  else
+    printf "record type: %s\n", $imp->name
+  # barf
+  end
+  end
+  end
+  end
+  end
+  end
+end
+
+document xtype
+Usage: xtype lisp_object
+Print the Lisp type of a lisp object.
+end
+
+define lisp-shadows
+  run -batch -vanilla -f list-load-path-shadows
+end
+
+document lisp-shadows
+Usage: lisp-shadows
+Run xemacs to check for lisp shadows
+end
+
+define environment-to-run-temacs
+  unset env EMACSLOADPATH
+  set env EMACSBOOTSTRAPLOADPATH=../lisp/:..
+  set env EMACSBOOTSTRAPMODULEPATH=../modules/:..
+end
+
+define run-temacs
+  environment-to-run-temacs
+  run -batch -l ../lisp/loadup.el run-temacs -q
+end
+
+document run-temacs
+Usage: run-temacs
+Run temacs interactively, like xemacs.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+end
+
+define check-xemacs
+  run -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated
+end
+
+document check-xemacs
+Usage: check-xemacs
+Run the test suite.  Equivalent to 'make check'.
+end
+
+define check-temacs
+  environment-to-run-temacs
+  run -batch -l ../lisp/loadup.el run-temacs -q -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated
+end
+
+document check-temacs
+Usage: check-temacs
+Run the test suite on temacs.  Equivalent to 'make check-temacs'.
+Use this with debugging tools (like purify) that cannot deal with dumping,
+or when temacs builds successfully, but xemacs does not.
+end
+
+define update-elc
+  environment-to-run-temacs
+  run -batch -l ../lisp/update-elc.el
+end
+
+document update-elc
+Usage: update-elc
+Run the core lisp byte compilation part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
+end
+
+define dump-temacs
+  environment-to-run-temacs
+  run -batch -l ../lisp/loadup.el dump
+end
+
+document dump-temacs
+Usage: dump-temacs
+Run the dumping part of the build procedure.
+Use when debugging temacs, not xemacs!
+Use this when temacs builds successfully, but xemacs does not.
+end
+
+# if you use Purify, do this:
+# export PURIFYOPTIONS='-pointer-mask=0x0fffffff'
+
+define ldp
+  printf "%s", "Lisp => "
+  call debug_print($arg0)
+end
+
+document ldp
+Usage: ldp lisp_object
+Print a Lisp Object value using the Lisp printer.
+Requires a running xemacs process.
+end
+
+define lbt
+call debug_backtrace()
+end
+
+document lbt
+Usage: lbt
+Print the current Lisp stack trace.
+Requires a running xemacs process.
+end
+
+
+define leval
+ldp Feval(Fcar(Fread_from_string(build_string($arg0),Qnil,Qnil)))
+end
+
+document leval
+Usage: leval "SEXP"
+Eval a lisp expression.
+Requires a running xemacs process.
+
+Example:
+(gdb) leval "(+ 1 2)"
+Lisp ==> 3
+end
+
+
+define wtype
+print $arg0->core.widget_class->core_class.class_name
+end
+
+define xtname
+print XrmQuarkToString(((Object)($arg0))->object.xrm_name)
+end
+
+# GDB's command language makes you want to ...
+
+define pstruct
+  set $xstruct = (struct $arg0 *) $val
+  print $xstruct
+  print *$xstruct
+end
+
+define pobj
+  decode_object $arg0
+  if $type == Lisp_Type_Int
+    printf "Integer: %d\n", $val
+  else
+  if $type == Lisp_Type_Char
+    if $val > 32 && $val < 128
+      printf "Char: %c\n", $val
+    else
+      printf "Char: %d\n", $val
+    end
+  else
+  if $type == Lisp_Type_String || $imp == &lrecord_string
+    pstruct Lisp_String
+  else
+  if $type == Lisp_Type_Cons   || $imp == &lrecord_cons
+    pstruct Lisp_Cons
+  else
+  if $type == Lisp_Type_Symbol || $imp == &lrecord_symbol
+    pstruct Lisp_Symbol
+    printf "Symbol name: %s\n", $xstruct->name->data
+  else
+  if $type == Lisp_Type_Vector || $imp == &lrecord_vector
+    pstruct Lisp_Vector
+    printf "Vector of length %d\n", $xstruct->size
+    #print *($xstruct->data) @ $xstruct->size
+  else
+  if $imp == &lrecord_bit_vector
+    pstruct Lisp_Bit_Vector
+  else
+  if $imp == &lrecord_buffer
+    pstruct buffer
+  else
+  if $imp == &lrecord_char_table
+    pstruct Lisp_Char_Table
+  else
+  if $imp == &lrecord_char_table_entry
+    pstruct Lisp_Char_Table_Entry
+  else
+  if $imp == &lrecord_charset
+    pstruct Lisp_Charset
+  else
+  if $imp == &lrecord_coding_system
+    pstruct Lisp_Coding_System
+  else
+  if $imp == &lrecord_color_instance
+    pstruct Lisp_Color_Instance
+  else
+  if $imp == &lrecord_command_builder
+    pstruct command_builder
+  else
+  if $imp == &lrecord_compiled_function
+    pstruct Lisp_Compiled_Function
+  else
+  if $imp == &lrecord_console
+    pstruct console
+  else
+  if $imp == &lrecord_database
+    pstruct Lisp_Database
+  else
+  if $imp == &lrecord_device
+    pstruct device
+  else
+  if $imp == &lrecord_event
+    pstruct Lisp_Event
+  else
+  if $imp == &lrecord_extent
+    pstruct extent
+  else
+  if $imp == &lrecord_extent_auxiliary
+    pstruct extent_auxiliary
+  else
+  if $imp == &lrecord_extent_info
+    pstruct extent_info
+  else
+  if $imp == &lrecord_face
+    pstruct Lisp_Face
+  else
+  if $imp == &lrecord_float
+    pstruct Lisp_Float
+  else
+  if $imp == &lrecord_font_instance
+    pstruct Lisp_Font_Instance
+  else
+  if $imp == &lrecord_frame
+    pstruct frame
+  else
+  if $imp == &lrecord_glyph
+    pstruct Lisp_Glyph
+  else
+  if $imp == &lrecord_hash_table
+    pstruct Lisp_Hash_Table
+  else
+  if $imp == &lrecord_image_instance
+    pstruct Lisp_Image_Instance
+  else
+  if $imp == &lrecord_keymap
+    pstruct Lisp_Keymap
+  else
+  if $imp == &lrecord_lcrecord_list
+    pstruct lcrecord_list
+  else
+  if $imp == &lrecord_lstream
+    pstruct lstream
+  else
+  if $imp == &lrecord_marker
+    pstruct Lisp_Marker
+  else
+  if $imp == &lrecord_opaque
+    pstruct Lisp_Opaque
+  else
+  if $imp == &lrecord_opaque_ptr
+    pstruct Lisp_Opaque_Ptr
+  else
+  if $imp == &lrecord_popup_data
+    pstruct popup_data
+  else
+  if $imp == &lrecord_process
+    pstruct Lisp_Process
+  else
+  if $imp == &lrecord_range_table
+    pstruct Lisp_Range_Table
+  else
+  if $imp == &lrecord_specifier
+    pstruct Lisp_Specifier
+  else
+  if $imp == &lrecord_subr
+    pstruct Lisp_Subr
+  else
+  if $imp == &lrecord_symbol_value_buffer_local
+    pstruct symbol_value_buffer_local
+  else
+  if $imp == &lrecord_symbol_value_forward
+    pstruct symbol_value_forward
+  else
+  if $imp == &lrecord_symbol_value_lisp_magic
+    pstruct symbol_value_lisp_magic
+  else
+  if $imp == &lrecord_symbol_value_varalias
+    pstruct symbol_value_varalias
+  else
+  if $imp == &lrecord_toolbar_button
+    pstruct toolbar_button
+  else
+  if $imp == &lrecord_tooltalk_message
+    pstruct Lisp_Tooltalk_Message
+  else
+  if $imp == &lrecord_tooltalk_pattern
+    pstruct Lisp_Tooltalk_Pattern
+  else
+  if $imp == &lrecord_weak_list
+    pstruct weak_list
+  else
+  if $imp == &lrecord_window
+    pstruct window
+  else
+  if $imp == &lrecord_window_configuration
+    pstruct window_config
+  else
+    echo Unknown Lisp Object type\n
+    print $arg0
+  # Barf, gag, retch
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  # Repeat after me... gdb sux, gdb sux, gdb sux...
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  # Are we having fun yet??
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+  end
+end
+
+document pobj
+Usage: pobj lisp_object
+Print the internal C representation of a Lisp Object.
+end
+
+# -------------------------------------------------------------
+# functions to test the debugging support itself.
+# If you change this file, make sure the following still work...
+# -------------------------------------------------------------
+define test_xtype
+  printf "Vemacs_major_version: "
+  xtype Vemacs_major_version
+  printf "Vhelp_char: "
+  xtype Vhelp_char
+  printf "Qnil: "
+  xtype Qnil
+  printf "Qunbound: "
+  xtype Qunbound
+  printf "Vobarray: "
+  xtype Vobarray
+  printf "Vall_weak_lists: "
+  xtype Vall_weak_lists
+  printf "Vxemacs_codename: "
+  xtype Vxemacs_codename
+end
+
+define test_pobj
+  printf "Vemacs_major_version: "
+  pobj Vemacs_major_version
+  printf "Vhelp_char: "
+  pobj Vhelp_char
+  printf "Qnil: "
+  pobj Qnil
+  printf "Qunbound: "
+  pobj Qunbound
+  printf "Vobarray: "
+  pobj Vobarray
+  printf "Vall_weak_lists: "
+  pobj Vall_weak_lists
+  printf "Vxemacs_codename: "
+  pobj Vxemacs_codename
+end
+
--- a/src/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,8474 +1,202 @@
-1999-12-31  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.26 is released.
-
-1999-12-31  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_widget_instantiate): Avoid X errors calling
-	XMapWindow() on a NULL pointer X window.
-
-1999-12-31  Martin Buchholz  <martin@xemacs.org>
-
-	* data.c (indirect_function): Use signal_void_function_error().
-
-	* lisp.h: Modify prototypes for signal_*().  Add SUBR_FUNCTION macro.
-
-	* eval.c (PRIMITIVE_FUNCALL): Optimize.
-	(signal_void_function_error): return result of Fsignal().
-	(signal_invalid_function_error): return result of Fsignal().
-	(signal_wrong_number_of_arguments_error): return result of Fsignal().
-	(signal_malformed_list_error): Add DOESNT_RETURN.
-	(signal_malformed_property_list_error): Add DOESNT_RETURN.
-	(signal_circular_list_error): Add DOESNT_RETURN.
-	(signal_circular_property_list_error): Add DOESNT_RETURN.
-	(Feval): Use returned results of signal_*().  Avoids a crash!
-	(Ffuncall): Use returned results of signal_*(). Avoids the crash:
-	  (setq debug-on-error t) (funcall 'foo) kbd{r42} kbd{RET}
-	- Only check for fun_nargs < subr_min_args if fun_nargs != max_args.
-	(function_argcount): Use signal_invalid_function_error().
-	(funcall_lambda): Use signal_wrong_number_of_arguments_error().
-	Use signal_invalid_function_error().
-
-1999-12-28  Andy Piper  <andy@xemacs.org>
-
-	* debug.c: rename debug_loop elements to X_ to avoid name clashes.
-
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1): strdup
-	string_chars.
-	(menu_item_descriptor_to_widget_value_1): strdup name.
-	(pre_activate_callback): strdup name.
-
-	* scrollbar-x.c (scrollbar_instance_to_widget_value): strdup name.
-	(x_update_scrollbar_instance_status): use free_widget_value_tree.
-
-	* dialog-x.c (maybe_run_dbox_text_callback): strdup name.  use
-	free_widget_value_tree.
-	(dbox_descriptor_to_widget_value): ditto.
-
-	* gui-x.c (widget_value_unwind): use free_widget_value_tree.
-	(gui_items_to_widget_values_1): ditto.
-	(gui_items_to_widget_values): ditto.
-	(free_popup_widget_value_tree): free name.
-
-1999-12-27  Andy Piper  <andy@xemacs.org>
-
-	* nt.c (fstat): use get_osfhandle rather than the handle
-	directly. From Fabrice Popineau.
-
-	* process-nt.c (nt_open_network_stream): take types into account
-	when warning. From Fabrice Popineau.
-
-1999-12-24  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.25 is released.
-
-1999-12-22  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments.
-
-1999-12-21  Martin Buchholz  <martin@xemacs.org>
-
-	* editfns.c (Fpoint_min): 
-	(Fpoint_min_marker): 
-	(Fpoint_max): 
-	(Fpoint_max_marker): 
-	(Fchar_after): 
-	(Fchar_before): 
-	Docstring fixes.  What's a `buffer pointer' anyways?
-
-	* editfns.c (char=): Remove unused and undocumented optional
-	third BUFFER argument.
-
-	* toolbar.h (DEVICE_SUPPORTS_TOOLBARS_P): 
-	* fns.c (plists_differ): 
-	* elhash.c (HASH_CODE): 
-	* elhash.c (KEYS_EQUAL_P): 
-	* redisplay-output.c (redisplay_move_cursor): 
-	* redisplay.c (create_text_block): 
-	* floatfns.c (Flogb): 
-	* glyphs-msw.c (mswindows_initialize_image_instance_mask): 
-	* glyphs-msw.c (xpm_to_eimage): 
-	* buffer.h (POINT_MARKER_P): 
-	* syntax.c (scan_lists): 
-	* cmdloop.c (Fcommand_loop_1): 
-	* widget.c (Fwidget_apply): 
-	* regex.c (STREQ): 
-	Remove extra parens, esp. of the form ((expr))
-
-	* floatfns.c (Flogb): Make 64-bit clean.
-
-1999-12-12  Daniel Pittman  <daniel@danann.net>
-
-	* configure.in:
-	* configure.usage:
-        Clean up Athena widget support:
-	- Add `with-athena' to select a variant.
-	- Remove all `athena3d' options.
-	- Robust detection of Athena libraries and headers.
-        - Refuse to build with mismatched library and headers.
-        - Only build a 3d Athena if the user asks for it.
-
-1999-12-21  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.c (redisplay_frame): check for faces changed when
-	reseting subwindow caches.
-
-	* glyphs.h (struct ii_keyword_entry): add copy_p.
-	(struct image_instantiator_methods): add query_geometry_method and
-	layout_children_method.
-	(IIFORMAT_VALID_GENERIC_KEYWORD): new macro to take into account
-	copying characteristics of keywords.
-	(IIFORMAT_VALID_NONCOPY_KEYWORD): new macro for defining keywords
-	whose arguments should not be copied by the specifier code.
-	(image_instance_geometry): new enum for layouts.
-	(struct Lisp_Image_Instance): re-jig for layouts and update
-	macros.
+2000-01-18  Martin Buchholz <martin@xemacs.org>
 
-	* glyphs.c (string_instantiate): rename variables.
-	(image_instantiate): add strings to those widgets that are
-	instantiated per-window.
-	(image_copy_vector_instantiator): new function for copying glyph
-	specifier instantiators.
-	(image_copy_instantiator): ditto.
-
-	* glyphs-x.c (x_update_subwindow): use new face update functions.
-	(update_widget_face): update to use new lwlib arg functions.
-	(update_tab_widget_face): new function for updating tab control
-	label faces.
-	(x_widget_instantiate): use new face update functions and new
-	lwlib arg functions.
-	(x_tab_control_instantiate): ditto.
-	(x_tab_control_set_property): ditto.
-
-	* glyphs-widget.c (VALID_GUI_KEYWORDS): use NONCOPY keyword for
-	callbacks and other things that could recurse.
-	(VALID_GUI_KEYWORDS): 
-
-	* event-msw.c: fix cpp stuff for cygwin < b20.
-
-	* config.h.in: move uid_t and friends to before the s&m files so
-	that they can be used there.
-
-	* Makefile.in.in (debug-temacs): new target that adds emacs
-	environment before invoking gdb.
-
-	* lwlib.h (_widget_args): new structure for holding widget
-	args. It is reference counted so that we don't have to copy Xt
-	args.
-	(_widget_value): remove widget args. Add reference to widget_args.
-
-	* lwlib.c (free_widget_value_contents): free widget args using
-	free_widget_value_args.
-
-	* lwlib-Xaw.c (xaw_update_one_widget): use new arg packet.
-	(xaw_update_one_widget): use XtIsSubclass for determining labels.
-
-	* lwlib.c (lw_add_value_args_to_args): modify to use our reference
-	counted arg packet.
-	(lw_add_widget_value_arg): new function. Add an arg to the arg
-	packet.
-	(free_widget_value_args): new function. Remove a reference counted
-	arg packet.
-	(lw_copy_widget_value_args): new function. Copy reference counted
-	arg packet.
-	(merge_widget_value_args): new function. Do a merge of widget
-	args.
-	(merge_widget_value): use it.
-	(copy_widget_value_tree): copy widget args using reference
-	counting, since we can't easily copy the args we have been given.
-
-	* specifier.h (struct specifier_methods): add copy_instantiator_method.
-
-	* specifier.c (build_up_processed_list): use
-	copy_instantiator_method if defined.
-
-1999-12-19  Martin Buchholz  <martin@xemacs.org>
-
-	* fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings.
-
-1999-12-19  Hrvoje Niksic  <hniksic@iskon.hr>
-
-	* profile.c (sigprof_handler): FUN retrieved from the backtrace
-	can also be a cons representing anonymous interpreted function.
-
-1999-12-18  Martin Buchholz  <martin@xemacs.org>
-
-	* fns.c (mapcar1): 
-	(Fmapconcat): 
-	(Fmapcar): 
-	(Fmapvector): 
-	Docstring fixes.  Make them consistent with the lispref and ANSI Lisp.
-
-1999-12-17  Martin Buchholz  <martin@xemacs.org>
-
-	* print.c (print_internal): print ?+ instead of ?\+, etc...
-	Make printing a little more efficient.
-	Prevent buffer overflow if sizeof EMACS_INT > 8.
-	My first 128-bit fix!
-
-1999-12-14  Karl M. Hegbloom  <karlheg@inetarena.com>
-
-	* filelock.c (unlock_all_files): GC_CONSP should be CONSP
-
-1999-12-17  Martin Buchholz  <martin@xemacs.org>
-
-	* database.c:
-	* window.c:
-	* event-stream.c:
-	Remove last vestigial uses of GC_*
-	
-	* fns.c (mapcar1): Fix ***THREE*** obscure crashes in one function!
-	- Two of those involve evil mapping functions that destructively
-	  modify a list being mapped over.
-	- Any garbage collection when mapping over a string could cause a
-	  crash (typically in mapconcat).
-
-1999-12-08  Adrian Aichner  <adrian@xemacs.org>
-
-	* s\windowsnt.h (DIRECTORY_SEP): Initialize from
-	`Vdirectory_sep_char'.
-
-	* lisp.h: Add declaration for `Vdirectory_sep_char' to allow
-	customization of `DIRECTORY_SEP' under native Windows NT.
-
-1999-12-14  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-	* buffer.c (Fbury_buffer): Add directions to the docstring.
-
-1999-12-14  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.24 is released.
-
-1999-12-13  Martin Buchholz  <martin@xemacs.org>
-
-	* sound.c (vars_of_sound): Provide esd-sound if HAVE_ESD_SOUND
-
-	* nas.c: Fix compiler warnings.  Ansify.  C++ compilation support.
-
-1999-12-13  Kazuyuki IENAGA <ienaga@jsys.co.jp>
-
-	* input-method-xlib.c: Make sure src/ does not use Athena, except
-	indirectly through lwlib.
-
-1999-12-13  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* dbxrc (pobj):	Add opaque_ptr, remove opaque_list.
-
-1999-12-10  Shenghuo ZHU <zsh@cs.rochester.edu>
-
-	* file-coding.c (add_coding_system_to_list_mapper): 
-	- (coding-system-list) should list aliases correctly.
-
-1999-12-07  Andy Piper  <andy@xemacs.org>
+	* XEmacs 21.2.27 is released.
 
-	* fileio.c (vars_of_fileio): directory separator fix from Mike Alexander.
-	* windowsnt.h (ditto):
-
-1999-11-27  Adrian Aichner  <adrian@xemacs.org>
-
-	* sysfile.h: Encapsulate `fstat' for Windows NT just like stat to
-	get consistent file modification times.
-
-	* sysdep.h: Declare `wait_for_termination' to use process handle,
-	not PID, on Windows NT native.
-
-	* sysdep.c (wait_for_termination): Use process handle, not PID, on
-	Windows NT native.  Set exit code correctly on Windows NT.
-	(sys_subshell): Use process handle, not PID,
-	on Windows NT native.
-	(sys_fstat): Add ENCAPSULATE_FSTAT for Windows NT.
-
-	* process-nt.c (nt_create_process): Remove negative pid hack for
-	Windows 95.
-	(nt_send_process): Declare vol_proc volatile.
-	(get_internet_address): warn_when_safe if IP address cannot be
-	found.
-	(nt_open_network_stream): warn_when_safe if network stream fails
-	to open.
-	
-	* ntproc.c (create_child): Remove negative pid hack for Windows
-	95.  Remove incorrect and unnecessary USE_UNION_TYPE handling.
-
-	* nt.c (fstat): Encapsulate for Windows NT just like stat to get
-	consistent file modification times.
-
-	* callproc.c (call_process_cleanup): Use process handle, not PID,
-	on Windows NT native.
-	(Fcall_process_internal): Ditto.  Close fd_error in parent.  Don't
-	check for negative pid on Windows NT/9[58].
-
-1999-12-07  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.23 is released.
-
-1999-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* events.c (Fcopy_event): Don't copy the lrecord_header.
-
-	* lisp.h (DO_REALLOC): 
-	Optimize.
-	Remove redundant parens.
-	Remove generic hygienic macro comment.
-
-	* lrecord.h (set_lheader_implementation): Remove redundant parens.
-
-1999-12-05  Martin Buchholz  <martin@xemacs.org>
-
-	* lstream.c (Lstream_adding): 
-	- Never compare a size_t and a possibly negative number.
-	- Optimize.
-
-1999-12-05  Kyle Jones  <kyle_jones@wonderworks.com>
-
-	* lisp/itimer.el: (require 'lisp-float-type).  Use
-	  floats directly in itimer-time-difference.
-
-1999-12-05  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_output_layout): avoid name hiding.
-
-	* gui.h: declare gui_add_item_keywords_to_plist.
-
-	* window.c (Fdelete_window): mark subwindows as changed so that
-	they can be GC'd if necessary.
-
-1999-12-02  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* src/callproc.c (Fcall_process_internal): Be careful in writing
-	terminating null when copying args. nargs can be < 4.
-	Idea from Klaus Frank <klausf@i3.informatik.rwth-aachen.de>
-
-1999-11-29  Kyle Jones  <kyle_jones@wonderworks.com>
-
-	* src/sound.c (Fding): Remove zero initialization of
-	  static variables to avoid crashes on systems that dump
-	  the initialized data segment read-only.
-
-1999-12-05  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* glyphs-x.c (convert_EImage_to_XImage): Guard against other
-	visual classes. From Rasmus Borup Hansen <rbh@math.ku.dk>
-
-1999-12-04  Martin Buchholz  <martin@xemacs.org>
-
-	* lstream.c: (filedesc_reader): 
-	(filedesc_writer): Try number 2: Support broken systems where
-	return type of read() and write() is different from ssize_t.
-
-	* systty.h: 
-	* sysdep.h:
-	* sysdep.c:
-	- Replace macro calls to EMACS_GET_TTY and EMACS_SET_TTY with
-	  function equivalents emacs_get_tty() and emacs_set_tty().
-	- Moved prototypes to systty.h, where struct event_tty is defined.
-	- Renamed bogus `waitp' parameter to `flushp'.
-
-	* lstream.c (filedesc_reader): Support broken systems where return
-	type of read() is different from ssize_t.
-
-	* events.c (Fcopy_event): Avoid redundant EQ test if event2 is nil.
-
-	* event-stream.c (menu_move_up): Remove redundant if block.
-	(menu_move_down): Gratuitous rewriting.
-	(menu_move_left): Work around Cygnus codefusion-990706 compiler bug.
-	(menu_move_right): Ditto.
-
-	* lrecord.h (copy_lcrecord):
-	(zero_lcrecord): 
-	Always add parentheses around uses of macro arguments.
-
-	* sysdll.c: #include <stdlib.h> for exit().
-	* unexhp9k800.x: #include <stdlib.h> for malloc().
-	Use proper prototype for Save_Shared_Data(void).
-
-1999-12-04  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* src/redisplay.c (point_would_be_visible): Correct for topclip.
-
-1999-12-02  Hrvoje Niksic  <hniksic@iskon.hr>
-
-	* lisp.h: Declare Qself_insert_defer_undo.
-
-	* event-stream.c (Fdispatch_event): Get the magic undo thing from
-	a symbol property, so commands other than self-insert-command can
-	install it.
-	(syms_of_event_stream): Define Qself_insert_defer_undo.
+2000-01-18  Martin Buchholz  <martin@xemacs.org>
 
-1999-11-30  Martin Buchholz  <martin@xemacs.org>
-
-	* floatfns.c (emacs_rint): Rename rint to emacs_rint, so that
-	`#undef HAVE_RINT' works.
-
-	* sysdep.h: Fix up prototypes for sys_read_1(), sys_write_1()
-
-1999-11-25  Andy Piper  <andy@xemacs.org>
-
-	* select-msw.c (Fmswindows_set_clipboard): selection fixes from
-	Mike Alexander.
-	(Fmswindows_delete_selection): ditto.
-
-	* redisplay.h (CLASS_REDISPLAY_FLAGS_CHANGEDP): add size_changed.
-	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.
-
-	* redisplay.c (redisplay_device): move size changed to macros in
-	redisplay.h
-	(redisplay_without_hooks): ditto.
-
-	* redisplay-output.c (redisplay_output_layout): rename to avoid
-	name hiding.
-
-	* process-nt.c (struct nt_process_data): mks toolkit fixes from
-	Mike Alexander.
-	(nt_create_process): ditto.
-	(nt_send_process): ditto.
-
-	* nt.c (init_environment): make sure mingw32 gets the cached
-	system info.
-
-	* gui.h: declare gui_add_item_keywords_to_plist.
-
-	* event-msw.c (mswindows_wnd_proc): Clipboard fixes from Mike
-	Alexander.
-
-	* console-msw.h: fix cygwin define/header 1.0 problems.
-	* glyphs-msw.c: ditto.
-	* ntplay.c: ditto.
-	* unexcw.c: ditto.
-	* s/cygwin32/h: ditto.
-
-1999-11-29  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.22 is released
-
-1999-11-28  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.21 is released.
-
-1999-11-26  Martin Buchholz  <martin@xemacs.org>
-
-	* callproc.c (Fcall_process_internal):
-	* config.h.in:
-	* esd.c:
-	* event-msw.c (ntpipe_slurp_reader):
-	* event-msw.c (ntpipe_shove_writer):
-	* event-msw.c (winsock_reader):
-	* event-msw.c (winsock_writer):
-	* event-stream.c (dribble_out_event):
-	* fileio.c:
-	* fileio.c (Fexpand_file_name):
-	* glyphs-x.c (write_lisp_string_to_temp_file):
-	* gpmevent.c (tty_get_foreign_selection):
-	* lisp.h: Update prototypes.
-	* lstream.c (Lstream_flush_out):
-	* lstream.c (Lstream_write_1):
-	* lstream.c (Lstream_was_blocked_p):
-	* lstream.c (Lstream_read_more):
-	* lstream.c (Lstream_read):
-	* lstream.c (Lstream_fputc):
-	* lstream.c (make_stdio_output_stream):
-	* lstream.c (stdio_flusher):
-	* lstream.c (stdio_closer):
-	* lstream.c (make_filedesc_output_stream):
-	* lstream.c (errno_would_block_p):
-	* lstream.c (filedesc_writer):
-	* lstream.c (make_lisp_string_input_stream):
-	* lstream.c (make_fixed_buffer_output_stream):
-	* lstream.c (fixed_buffer_reader):
-	* lstream.c (make_resizing_buffer_output_stream):
-	* lstream.c (make_dynarr_output_stream):
-	* lstream.c (make_lisp_buffer_output_stream):
-	* lstream.c (lisp_buffer_reader):
-	* lstream.h (lstream_implementation):
-	* md5.c (Fmd5):
-	* miscplay.h (reset_parsestate):
-	* process-nt.c (nt_send_process):
-	* process-unix.c (unix_send_process):
-	* sound.c:
-	* sysdep.c (sys_close):
-	* sysdep.c (sys_read_1):
-	* sysdep.c (sys_write_1):
-	* sysfile.h:
-	* file-coding.c (determine_real_coding_system):
-	* file-coding.c (Fdetect_coding_region):
-	* file-coding.c (struct decoding_stream):
-	* file-coding.c (decoding_reader):
-	* file-coding.c (Fdecode_coding_region):
-	* file-coding.c (struct encoding_stream):
-	* file-coding.c (encoding_reader):
-	* file-coding.c (Fencode_coding_region):
-	* file-coding.c (convert_to_external_format):
-	* file-coding.c (convert_from_external_format):
-	- Lstream functions mirror Unix98 read(),write().  Therefore use
-	  Unix98 types size_t and ssize_t.  
-	- Try to make Lstream* functions 64-bit clean.  Someday someone
-	  may actually want to read from a Lstream with more than 2**32 bytes.
-	- Add configure support for ssize_t.
-	- Update all callers of Lstream_read and Lstream_write to
-	  use the new types.
-	- Fix esd* initiated C++ compile errors.
-	- Remove comments referring to `fpurge' - we don't want to call it
-	  even if it's there.
-
-	* lisp.h
-	- Remove some lingering Lucid compiler support.
-
-	* lisp.h
-	- Add prototype for Fdelete_process.
-
-	* gpmevent.c (Freceive_gpm_event): Remove unused variables.
-
-1999-11-27  Martin Buchholz  <martin@xemacs.org>
-
-	* Makefile.in.in (depend): Only update `depend' if there were changes.
-
-1999-11-26  Martin Buchholz  <martin@xemacs.org>
-
-	* editfns.c (get_system_name): Remove.
-
-1999-11-26  Martin Buchholz  <martin@xemacs.org>
+	* glyphs-eimage.c (struct tiff_error_struct):
+	(tiff_error_func):
+	(tiff_warning_func):
+	#if HAVE_VSNPRINTF ==> #ifdef HAVE_VSNPRINTF
 
-	* device-x.c (x_init_device): 
-	- Replace magic number `17' with equivalent expn using sizeof.
-	- Replace strcmp with marginally more efficient memcmp.
-	- Avoid using C++ reserved word `class'.
-
-	* file-coding.c (determine_real_coding_system): 
-	- Look for both initial and final -*- cookies.
-	- Replace EQ (foo, Qnil) with NILP (foo)
-	- Make searching for cookies more efficient.
-	- Recognize only rfc 1521 characters in charset names.
-
-1999-11-22  Kazuyuki IENAGA <kazz@imasy.or.jp>
-
-	* input-method-xlib.c (IMDestroyCallback): #ifdef'd by
-	"THIS_IS_X11R6", because it shouldn't be evaluated unless X11R6.
-	* input-method-xlib.c (IMInstantiateCallback): Ditto.
-	* input-method-xlib.c (XIM_init_device): Revive XOpenIM function
-	call for X11R5 systems.
-	* input-method-xlib.c (XIM_delete_frame): Enabled XDestroyIC()
-	again because XIM doesn't concern with frame deletion itself.
-	The XIC will be cleared by XIM when XIM is closing (at XIM destroy
-	callback).
-
-1999-10-25  Kazuyuki IENAGA <kazz@imasy.or.jp>
-
-        * input-method-xlib.c: Added new lisp object Qxim_xlib.
-        New macro xim_warn(str), xim_warn1(fmt,str) and xim_info(str).
-        All the valid stderr_out were changed to those macros.
-        (IMDestroyCallback): Don't test the XIC if the frame is not X
-        frame.
-        (IMInstantiateCallback): Treat the client_data as "device" not
-        "frame" because the caller changed from frame to device.
-        Here initializes XIM and activates XICs for each frame which
-        doesn't have XIC.
-        (XIM_init_device): Register the XIM instantiation callback which
-        had been performed by XIM_init_frame() before.
-        (XIM_delete_frame): Added a test for the XIM before clearing XIC.
-        (XIM_init_frame): Placed an actual code for XIC activation which
-        was moved from IMInstantiateCallback.
-        (syms_of_input_method_xlib): New function which includes a symbol
-        Qxim_xlib that uses in emacs.c.
-
-        * emacs.c: Added a function entry "syms_of_input_method_xlib" for
-        input_method_xlib.
-
-        * symsinit.h: Added a declaration of "syms_of_input_method_xlib".
-
-1999-11-05  Robert Pluim  <rpluim@bigfoot.com>
-
-	* emacs.c (shut_down_emacs): Point users to PROBLEMS file
-
-1999-11-16  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* redisplay-output.c (compare_runes): Add comments about
-	results from profiling.
-
-	* redisplay.h (struct rune): Do not use bitfields for members.
-	(struct rune): Add various comments about further optimizations.
-	
-1999-11-19  Eric Darve  <darve@crocco.stanford.edu>
-
-	* abbrev.c (abbrev_oblookup): Check whether wordend <= wordstart
-	if Vabbrev_start_location is used too.
-
-1999-10-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* file-coding.c (detect_eol_type): Return CR when two
-	sequential CR are found.
-	(determine_real_coding_system): Check EOL type when coding:
-	cookie is found and EOL type is not specified.
-	Don't assume 8bit char as part of coding: cookie.
-
-1999-10-26  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* file-coding.c (determine_real_coding_system): Check if
-	'-*-' exists. End searching for coding: cookie at the end
-	of line. Check whether character before coding: is space,
-	tab or ';'.
-
-1999-11-07  William M. Perry  <wmperry@aventail.com>
-
-	* gpmevent.c: Completely rewrote GPM mouse support for linux
-	  console.  The TTY console and event stream are modified at run
-	  time, so this code can now be used as a module.
-	  (tty_get_foreign_selection): New function to allow pasting from
-	  other virtual consoles.
-	  (Fgpm_enable): New lisp-visible function to turn GPM on or off
-	  at run time.
-
-	* device-tty.c (tty_asynch_device_change): No longer need to
-	  notify GPM code of window/console height/width changes.
-
-	* console-tty.c (tty_init_console): Removed outdated GPM support
-	  that was part of the console/event code.
-
-	* event-Xt.c (emacs_Xt_select_console): Ditto
-
-	* event-Xt.c (emacs_Xt_unselect_console): Ditto
-
-	* event-unixoid.c (read_event_from_tty_or_stream_desc): Ditto
-
-	* frame-tty.c (console_type_create_frame_tty): Ditto
-
-1999-11-17  Martin Buchholz  <martin@xemacs.org>
-
-	* nt.c:
-	* sysdep.c:
-	* s/mingw32.h:
-	* s/windowsnt.h:
-	- Use Unix 98 types uid_t, gid_t, pid_t.
-	- Define them.
-
-1999-11-01  Olivier Galibert  <galibert@pobox.com>
-
-	* alloc.c (reinit_alloc_once_early): Move purify_flag init...
-	* emacs.c (main_1): ...here, to get the correct value even with
- 	the portable dumper.
-
-1999-11-17  Martin Buchholz  <martin@xemacs.org>
-
-	* lisp.h (BIT_VECTOR_LONG_STORAGE): Add extra parens.  It's a macro!
-
-	* tooltalk.c (tt_build_string): Remove extra parens.
-	* process.c (print_process): Remove extra parens.
-	* buffer.h (BI_BUF_PTR_BYTE_POS): 
-	(BUF_PTR_BYTE_POS): 
-	(BI_BUF_BYTE_ADDRESS): 
-	(BI_BUF_BYTE_ADDRESS_BEFORE): 
-	(valid_memind_p): 
-	(bytind_to_memind): 
-	(memind_to_bytind):
-	Remove extra parens.  Inline functions are not macros.
-
-	* editfns.c (Fuser_login_name): 
-	(user_login_name):
-	Use proper type uid_t.
-
-1999-11-15  Martin Buchholz  <martin@xemacs.org>
-
-	* syntax.c (complex_vars_of_syntax): Make more readable.
-	(define_standard_syntax): New function.
-
-	* syntax.c (forward-comment): Gradually make XEmacs 64-bit-clean.
-
-1999-11-14  Martin Buchholz  <martin@xemacs.org>
-
-	* mule-ccl.c (CCL_WRITE_STRING): Fix compiler warnings.
-
-1999-11-12  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* mule-charset.h (LEADING_BYTE_OFFICIAL_1, LEADING_BYTE_OFFICIAL_2):
-	New enum type to make sure no gap in the leading byte definition.
-
-1999-11-11  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* mule-charset.h (LEADING_BYTE_CYRILLIC_ISO_8859_5,
-	LEADING_BYTE_LATIN_ISO8859_9): Moved to 0x8B and 0x8C
-	to remove a hole in leading byte definition.
-
-1999-11-10  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* mule-charset.c (non_ascii_valid_charptr_p): Check if
-	private charset is defined.
-
-1999-11-09  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
-
-	* mule-ccl.c (ccl_driver): Make sure generated sequences
-	are valid when doing `CCL_WRITE_STRING'.
-	(ccl-execute-on-string): Pass CCL_MODE_DECODING to ccl_driver.
-
-1999-11-10  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.20 is released
-
-1999-11-04  Martin Buchholz  <martin@xemacs.org>
-
-	* mule-ccl.c (ccl_driver): Warning suppression
-
-1999-11-01  SL Baur  <steve@miho.m17n.org>
-
-	* emacs.c (main_1): Guard call to reinit_vars_of_debug when not
-	building a debugged XEmacs.
-
-1999-10-28  Andreas Jaeger  <aj@suse.de>
-
-	* src/emacs.c (main_1): Don't set the malloc hooks if using
-	DOUG_LEA_MALLOC.
-
-1999-10-30  Olivier Galibert  <galibert@pobox.com>
-
-	* alloc.c (pdump_dump_rtables): Don't forget to dump the last
- 	registered type.
-	(pdump): Ditto.
-
-1999-10-25  Olivier Galibert  <galibert@pobox.com>
-
-	* emacs.c (main_1): Call reinit_vars_of_scrollbar_x.
-
-	* symsinit.h: Declare reinit_vars_of_scrollbar_x.
-
-1999-10-25  Martin Buchholz  <martin@xemacs.org>
-
-	* redisplay.h (CLASS_RESET_CHANGED_FLAGS): 
-	(GLOBAL_RESET_CHANGED_FLAGS): 
-	(CLASS_REDISPLAY_FLAGS_CHANGEDP): 
-	(RESET_CHANGED_SET_FLAGS): 
-	Fix C++ compile errors/warnings.
-	These macros were just a tad too clever.
-
-	* process-unix.c (unix_open_network_stream):
-	* objects-x.c (allocate_nearest_color):
-	* mule-charset.c (vars_of_mule_charset): 
-	* fileio.c (Ffile_truename): 
-	* file-coding.c (vars_of_file_coding): 
-	Fix compile errors/warnings.
-
-	* alloc.c (xstrdup): Use fact that memcpy returns its first arg.
-	(allocate_lisp_storage): Simplify.
-
-1999-10-24  Olivier Galibert  <galibert@pobox.com>
-
-	* conslots.h: Add defines with first and last slot names.
-	* bufslots.h: Add defines with first and last slot names.
-
-	* buffer.c (common_init_complex_vars_of_buffer): Renamed from
- 	reinit_complex_vars_of_buffer
-	(reinit_complex_vars_of_buffer): Reset the slots to the dumped
- 	value.
-	(complex_vars_of_buffer): Dump the slots values.
-
-	* console.c (common_init_complex_vars_of_console): Renamed from
- 	reinit_complex_vars_of_console
-	(reinit_complex_vars_of_console): Reset the slots to the dumped
- 	value.
-	(complex_vars_of_console): Dump the slots values.
-
-	* alloc.c: Rename reloc_table to pdump_reloc_table, rt_list to
- 	pdump_rt_list and move them at the beginning of the file.
-	(gc_sweep): Unmark pdumped objects after the sweep phase.
-	(pdump_dump_rtables): Change a bare 256 to
- 	last_lrecord_type_index_assigned.  Add a separator between the
- 	adresses or lrecords and the ones of C structs in the dump file.
-	(pdump_load): Cope with the new separator and the renamings.  Stop
- 	looking for the hash tables list after it has been found (duh!).
-
-1999-10-24  Robert Bihlmeyer <robbe@orcus.priv.at>
-
-	* sound.c: support HAVE_ESD_SOUND
-
-	* miscplay.c: 
-	* miscplay.h: 
-	* linuxplay.c: Move large part of linuxplay to generalized file
-	miscplay. Make it platform independent.
-
-	* esd.c: New file
-
-1999-10-24  Adrian Aichner <adrian@xemacs.org>
-
-	* lisp.h (Dynarr_declare): Fix boo-boo.
-
-1999-10-24  Olivier Galibert  <galibert@pobox.com>
+	* unexmips.c:
+	* unexhp9k3.c:
+	* unexfreebsd.c:
+	* unexec.c: Remove vestigial Lucid C code.
+	* unexalpha.c:
+	* unexaix.c:
+	* termcap.c:
+	* libsst.c: Ansify.
+	Remove declarations of errno and strerror().
 
-	* process-unix.c (allocate_pty): Fix HAVE_GETPT.
-	* process.h: Ditto.
-
-1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* redisplay.c (start_with_line_at_pixpos): Remove assert(cur_elt
-	>=0). Handle the cur_elt == 0 case.
-
-1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* unexelf.c: Merge Martin's c++ fixes back in 
-
-1999-10-20  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-        * unexelf.c (unexec): Only copy the global offset
-        table from memory on sgi machines.
-
-1999-08-13     Alexandre Oliva <oliva@dcc.unicamp.br>, Vin Shelton <acs@xemacs.org>
-
-        * unexelf.c: Enable GNU/Linux/alpha to build with gcc 2.95 by
-        adding support for an sbss section.  Get IRIX 5.2 to build using
-        unexelf.c.
-
-        * m/iris4d.h: Use unexelf.o for unexec.
-
-        * m/iris5d.h: Use unexelf.o for unexec.
-
-1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* unexelf.c: Revert to 21.1 version
-
-1999-08-28  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* window.c (Fwindow_truncated_p): New function.
-
-1999-08-25  Jonathan Marten <jonathan.marten@uk.sun.com>
-
-	* window.c (window_truncation_on): Always return 0 for minibuffer
- 	windows, to enable auto scrolling.
-
-1999-10-24 Neal Becker <nbecker@fred.net>
-	* process.h: Unix98 PTY support
-
-1999-10-17  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* fileio.c (Ffile_truename): Do proper mule decoding on
-	the argument to xrealpath()
-
-1999-08-19  Stephen Tse  <stephent@sfu.ca>
-
-	* process-unix.c (unix_open_network_stream): Add udp network
- 	support; rename variable Qtcpip to Qtcp, parameter family to
- 	protocol for consistency with Qudp.
-
-	* process-nt.c (nt_open_network_stream): Rename variable Qtcpip to
- 	Qtcp, parameter family to protocol for consistency with Qudp.
-
-	* process.c (global_variables): Add a new variable Qudp for udp
- 	network support; rename variable Qtcpip to Qtcp for consistency
- 	with Qudp.
-	(Fopen_network_stream_internal): Rename parameter FAMILY to
- 	PROTOCOL for consistency; fix a minor typo and add an explanation
- 	in docstring for udp programming.
-	(Fopen_multicast_group_internal): Fix a minor typo in docstring.
-	(syms_of_process): Add a new variable Qudp for udp network
- 	support; rename variable Qtcpip to Qtcp for consistency with Qudp.
-
-	* process.h (extern_variables): Add a new variable Qudp for udp
- 	network support; rename variable Qtcpip to Qtcp for consistency
- 	with Qudp.
-
-	* procimpl.h: Add a new variable Qudp for udp network support;
- 	rename variable Qtcpip to Qtcp for consistency with Qudp.
-	(struct process_methods): Rename parameter family to protocol.
-
-
-1999-10-24  Olivier Galibert  <galibert@pobox.com>
-
-	* alloc.c (pdump_make_hash): Divide pointers by 8 for a better hash.
-
-1999-10-23  Olivier Galibert  <galibert@pobox.com>
-
-	* lrecord.h (struct lrecord_header): Removed dumped flags.
-
-	* dynarr.c: Use DUMPEDP instead of dumped flag.
-
-	* lisp.h (DUMPEDP): Added.  Removed dumped flag from dynarr.
-
-	* alloc.c: Removed hash_next linked list pointer.
-	
-	* *.c *.h: Removed markobj and mark_object parameters, removed GC_
- 	and XGC macros.
-
-1999-10-14  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-x.c (x_output_shadows): fix dodgy maths for border
- 	calculations.
-
-	* gutter.c (output_gutter): be more accurate about the area to be
- 	cleared since X seems to manage to do the clear after drawing the
- 	border.
-
-	* redisplay.h (RESET_CHANGED_FLAGS): new macro for setting
- 	redisplay flags as a group.
-	(RESET_CHANGED_SET_FLAGS): ditto.
-	(CLASS_RESET_CHANGED_FLAGS): ditto.
-	(GLOBAL_RESET_CHANGED_FLAGS): ditto.
-	(REDISPLAY_FLAGS_CHANGEDP): new macro for testing redisplay flags
- 	as a group.
-	(CLASS_REDISPLAY_FLAGS_CHANGEDP): ditto.
-	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.
-
-	* redisplay.c (redisplay_frame): use CLASS_RESET_CHANGED_FLAGS
- 	instead of setting flags individually.
-	(redisplay_device): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
-	(redisplay_device): ditto.
-	(redisplay_device): ditto CLASS_RESET_CHANGED_FLAGS.
-	(redisplay_without_hooks): ditto GLOBAL_REDISPLAY_FLAGS_CHANGEDP.
-	(redisplay_without_hooks): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
-	(redisplay_without_hooks): ditto.
-	(redisplay_without_hooks): ditto GLOBAL_RESET_CHANGED_FLAGS.
-
-	* redisplay-x.c (x_output_string): unmap subwindows in the area.
-	(x_output_blank): ditto.
-
-	* redisplay-output.c (redisplay_output_display_block): don't unmap
- 	subwindows in case layout optimization can avoid it.
-	(redisplay_output_subwindow): unmap subwindows in the area.
-	(redisplay_output_layout): optimize the output of layouts - only
- 	output glyphs that have changed if nothing else of redisplay
- 	significance has occurred.
-	(redisplay_output_pixmap): change args to
- 	redisplay_clear_clipped_region.
-	(redisplay_clear_clipped_region): allow the clipped region to be
- 	cleared of all subwindows except the one passed in.
-
-	* redisplay-msw.c (mswindows_output_blank): unmap subwindows in
- 	the area.
-	(mswindows_output_cursor): ditto.
-	(mswindows_output_string): ditto.
-
-	* gutter.c (calculate_gutter_size): if the window buffer is nil
- 	then don't continue.
-	(update_frame_gutters): be more lenient about when we actually
- 	update the gutter. Layout optimization makes this
- 	non-costly. Cache redisplay flags that we want to temporarily
- 	ignore.
-
-	* glyphs.c (Fglyph_animated_timeout_handler): handle image
- 	specific timeouts rather than iterating over the instance cache.
-	(glyph_animated_timeout_mapper): deleted.
-	(add_glyph_animated_timeout): use a weak list to hold onto the
- 	image so that it can be GC'ed.
-	(disable_glyph_animated_timeout): disable a specific timeout.
-	(vars_of_glyphs): disable-animated-pixmaps is a new boolean for
- 	controlling whether pixmaps are animated or not.
-
-	* glyphs-msw.c (mswindows_finalize_image_instance): make sure the
-	image timeout gets disabled when the image gets freed.
-
-	* glyphs-eimage.c (gif_instantiate): remove meaningless
- 	comment. Cope with timeouts specified in the gif extension block.
-
-	* event-msw.c (vars_of_event_mswindows): new variable
- 	mswindows-meta-activates-menu.
-	(mswindows_wnd_proc): only goto defproc with VK_MENU if the user
- 	wants it.
-
-	* glyphs-x.c (x_finalize_image_instance): delete mask first so
- 	that we can compare with image.
-
-1999-10-14  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c (mswindows_key_to_emacs_keysym):
-	Recognise keypad keys as different from normal keys.
-
-1999-10-14  Didier Verna  <didier@xemacs.org>
-
-	* glyphs-x.c (x_finalize_image_instance): avoid freeing null pixmaps.
-
-1999-10-10  Olivier Galibert  <galibert@pobox.com>
-
-	* symbols.c (init_symbols_once_early): dump Vquit_flag.
-
-	* symsinit.h: Updated.
-
-	* ntproc.c (vars_of_ntproc): Use defsymbol.
-
-	* emacs.c (main_1): Updated reinit calls.
-
-	* lisp.h: Removed Fpurecopy and pure_put declarations.
-	* fns.c: Removed pure_put.
-
-	* eval.c (Fdefvar): pure_put -> Fput
-	(Fdefconst): Ditto.
-	* frame-x.c (init_x_prop_symbols): Ditto.
-	* symbols.c (deferror): Ditto.
-
-	* alloc.c (Fmake_byte_code): Remove Fpurecopy call.
-	* buffer.c (vars_of_buffer): Ditto.
-	* bytecode.c (Ffetch_bytecode): Ditto.
-	(optimize_compiled_function): Ditto.
-	* emacs.c (vars_of_emacs): Ditto.
-	* emodules.c (vars_of_module): Ditto.
-	* eval.c (define_function): Ditto.
-	(Fautoload): Ditto.
-	* frame.c (vars_of_frame): Ditto.
-	* intl.c (Fset_domain): Ditto.
-	* lread.c (load_force_doc_string_unwind): Ditto.
-	* menubar.c (vars_of_menubar): Ditto.
-	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.
-
-	* debug.c (reinit_vars_of_debug): Extracted.
-	* device-x.c (reinit_vars_of_device_x): Ditto.
-	* emodules.c (reinit_vars_of_module): Ditto.
-	* font-lock.c (reinit_vars_of_font_lock): Ditto.
-	* glyphs-widget.c (reinit_vars_of_glyphs_widget): Ditto.
-	* glyphs.c (reinit_vars_of_glyphs): Ditto.
-	* gui-x.c (reinit_vars_of_gui_x): Ditto.
-	* insdel.c (reinit_vars_of_insdel): Ditto.
-	* menubar-x.c (reinit_vars_of_menubar_x): Ditto.
-	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.
-	* mule-wnnfns.c (reinit_vars_of_mule_wnn): Ditto.
-	* print.c (reinit_vars_of_print): Ditto.
-	* redisplay.c (reinit_vars_of_redisplay): Ditto.
-	* select-x.c (reinit_vars_of_xselect): Ditto.
-	* undo.c (reinit_vars_of_undo): Ditto.
-
-1999-10-10  Olivier Galibert  <galibert@pobox.com>
-
-	* symsinit.h: Updated declarations, see other ChangeLog entries.
-
-	* redisplay.c (init_redisplay): Ensure proper reinitialisation.
-
-	* lrecord.h (XD_DYNARR_DESC): Introduce XD_INT_RESET and use it.
-
-	* glyphs.c: Add the ii_keyword_entry and related descriptions.
-  	Fix the image_instantiator_methods one.
-
-	* file-coding.c: Plonk all data that needs to be dumped in a
- 	dynamically allocated structure.
-
-	* extents.c (reinit_vars_of_extents): Extracted from
- 	vars_of_extents.
-
-	* event-stream.c (vars_of_event_stream): Don't staticpro when
- 	pdump_wire is enough.
-
-	* event-msw.c (reinit_vars_of_event_mswindows): Extracted from
- 	vars_of_event_mswindows.
-
-	* event-Xt.c (reinit_vars_of_event_Xt): Extracted from
- 	vars_of_event_Xt.
-
-	* eval.c (vars_of_eval): Don't staticpro when pdump_wire is enough.
-
-	* emacs.c (main_1): Added some reinit calls.
-
-	* device-x.c (reinit_console_type_create_device_x): Extracted from
- 	console_type_create_device_x.
-
-	* console.h: Declare the console_type_entry_dynarr description.
-
-	* console.c: Unstatic the console_type_entry_dynarr description.
-
-	* alloc.c: Removed some dubious comments.  Handle XD_INT_RESET.
+	* eval.c (Fbacktrace): Small Purify-cation.  Fix docstring.
 
-1999-10-07  Olivier Galibert  <galibert@pobox.com>
-
-	* symsinit.h: Updated declarations, see other ChangeLog entries.
-
-	* minibuf.c (reinit_complex_vars_of_minibuf): Extracted from
- 	complex_vars_of_minibuf.
-
-	* lrecord.h: Removed XD_PARENT_INDIRECT (unused and
- 	unimplemented), added XD_LO_LINK.
-
-	* lisp.h (pdump_wire_list): Add declaration.
-
-	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT): Fix bug found by Andy.
-	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Fix stupid bug.
-	(REINITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Remove, useless once the
- 	stupid bug fixed.
-
-	* glyphs.c (reinit_image_instantiator_format_create): Remove.
-
-	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
- 	Remove.
-
-	* glyphs-widget.c
- 	(reinit_image_instantiator_format_create_glyphs_widget): Remove.
-
-	* glyphs-msw.c
- 	(reinit_image_instantiator_format_create_glyphs_mswindows):
- 	Remove.
-
-	* glyphs-eimage.c
- 	(reinit_image_instantiator_format_create_glyphs_eimage): Remove.
-
-	* frame.c (Fmake_frame): Don't reset the face cache when using the
- 	stream device.
-
-	* file-coding.c: Dumped the_codesys_prop_dynarr and added all
- 	relevant descriptions.
-
-	* events.c (reinit_vars_of_events): Extracted from vars_of_events.
-
-	* eval.c: The subr is _not_ a lcrecord.
-
-	* emacs.c (main_1): Call vars_of_specifier early before any
- 	specifier creation (e.g in vars_of_glyphs, at least).  Remove the
- 	useless reinit_image_instantiator_format*.  Add
- 	reinit_vars_of_events and reinit_complex_vars_of_minibuf.  Add
- 	calls to lstream_type_create* and process_type_create*.
-
-	* elhash.c: Dump Vall_weak_hash_tables correctly.
-
-	* data.c: Dump Vall_weak_lists correctly.
-
-	* console.c: Fix description.
-
-	* console-stream.c (init_console_stream): Do initializations
- 	correctly in the pdump case.
-
-	* chartab.c: Fix description.  Dump Vall_syntax_tables correctly.
-	(Fcopy_char_table): Link into Vall_syntax_tables.
-
-	* alloc.c (pdump_wire_list): Added.
-	(Fgarbage_collect): Fix loop in stats couting missing the last
- 	lrecord type.
-	(pdump_register_sub): Added XD_LO_LINK.
-	(pdump_dump_data): Ditto.  Fixed XD_LO_RESET_NIL forgttting the
- 	counter.
-	(pdump_reloc_one): Ditto.
-	(pdump_scan_by_alignement): Use last_lrecord_type_index_assigned
- 	instead of 256.
-	(pdump_dump_wired): Added lists.
-	(pdump): Use last_lrecord_type_index_assigned instead of 256.
-  	Dump last_lrecord_type_index_assigned value.  Fix minor bugs.
-
-1999-10-07  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (mswindows_finalize_image_instance): zero out
- 	bitmap slices.
-
-	* glyphs-x.c (x_finalize_image_instance): fix FMW problem.
-
-1999-10-06  Andy Piper  <andy@xemacs.org>
-
-	* elhash.c (resize_hash_table): Correct reference to lrecord_header.
-
-1999-10-06  Damon Lipparelli  <lipp@primus.com>
-
-	* elhash.h: forward declare Lisp_Hash_Table.
-
-1999-10-06  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (Fset_image_instance_property): mark glyphs as dirty
- 	after setting an image instance property.
-
-1999-10-05  Andy Piper  <andy@xemacs.org>
-
-	* gutter.c (update_frame_gutters): output gutters if
- 	windows_changed is set. This is the only way of catching changes
- 	in selected window which obviously can affect the specifiers.
-
-	* redisplay.c: new state flags, subwindows_state_changed and
- 	subwindows_state_changed set.
-	(redisplay_window): use them.
-	(redisplay_device): ditto.
-	(redisplay_without_hooks): ditto.
-	(redisplay_frame): ditto. Reset subwindow cachels if
- 	subwindows_changed is set.
-	(redisplay_window): call mark_glyph_cachels_as_clean after
- 	redisplaying.
-
-	* redisplay-x.c (x_output_x_pixmap): select correct
- 	pixmap image for display depending on the currently selected
- 	slice.
-
-	* redisplay-output.c (compare_runes): check dirtiness when
- 	checking RUNE_DGLYPH runes.
-	(compare_display_blocks): relax invalidation of display blocks
- 	since we can now detect whether individual glyphs have changed or
- 	not.
-
-	* redisplay-msw.c (mswindows_output_dibitmap): select correct
- 	bitmap image for display depending on the currently selected
- 	slice.
+	* .dbxrc (run-temacs): Use the horrible ${1+"$@"} instead of "$@".
 
-	* glyphs.h (struct Lisp_Image_Instance): add a dirty flag.
-	(IMAGE_INSTANCE_DIRTYP): new macro.
-	(XIMAGE_INSTANCE_DIRTYP): ditto.
-	(MARK_IMAGE_INSTANCE_CHANGED): ditto.
-	(GLYPH_DIRTYP): ditto.
-	(XGLYPH_DIRTYP): ditto.
-	(MARK_GLYPH_CHANGED): ditto.
-	(GLYPH_CACHEL_DIRTYP): ditto.
-	(struct glyph_cachel): add a dirty flag.
-
-	* glyphs.c (update_frame_subwindows): Don't update on
- 	glyphs_changed.
-	(glyph_animated_timeout_mapper): new function. Map over the
- 	instance cache lookinng for animated images to update.
-	(Fglyph_animated_timeout_handler): new function. Lisp callback for
- 	handling animated image timeout events.
-	(disable_glyph_animated_timeout): new function. Add the animated
- 	image timeout.
-	(disable_glyph_animated_timeout): new function. Remove the
- 	animated image timeout.
-	(syms_of_glyphs): initialize Qglyph_animated_timeout_handler and
- 	friends.
-	(vars_of_glyphs): initialize Vglyph_animated_ticker.
-	(image_instance_equal): add the currently displayed slice.
-	(image_instance_hash): ditto.
-	(allocate_glyph): initialize dirty flag.
-	(glyph_width): rename glyph -> glyph_or_image.
-	(glyph_height_internal): ditto.
-	(glyph_dirty_p): new function. Determine whether the image
- 	instance in the domain and/or glyph is dirty.
-	(set_glyph_dirty_p): set the dirtiness.
-	(update_glyph_cachel_data): take dirtiness into account. Pass the
- 	image instance we are interested in to glyph_width and friends.
-	(get_glyph_cachel_index): make non-static. Always call
- 	update_glyph_cachel_data.
-	(mark_glyph_cachels_as_not_updated): meaningless formatting
- 	change.
-	(mark_glyph_cachels_as_clean): new function. Clean dirtiness from
- 	glyph cachels.
-
-	* glyphs-x.h (struct x_image_instance_data): change
-	pixmap to a list of pixmaps.
-	(IMAGE_INSTANCE_X_PIXMAP_SLICE): new macro.
-	(IMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.
-	(XIMAGE_INSTANCE_X_PIXMAP_SLICE): ditto.
-	(XIMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.
-
-	* glyphs-x.c (x_finalize_image_instance): make sure multi pixmap
- 	images get deleted properly.
-	(init_image_instance_from_x_image): add slices paramater and use
- 	it to initialize x_image_instance_data correctly.
-	(image_instance_add_x_image): new function. Add new pixmaps to our
- 	set of instantiated pixmaps for an image. Used by animated images.
-	(x_init_image_instance_from_eimage): add a slices
- 	parameter. Instantiate all images from the eimage.
-	(x_xpm_instantiate): update use of
- 	init_image_instance_from_x_image.
-	(init_image_instance_from_xbm_inline): ditto.
-	(x_initialize_pixmap_image_instance): add slices paramater and use
- 	it to allocate x_image_instance_data correctly.
-
-	* glyphs-msw.h (struct mswindows_image_instance_data): change
- 	bitmap to a list of bitmaps.
-	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): new macro.
-	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.
-	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): ditto.
-	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.
-
-	* glyphs-msw.c (init_image_instance_from_dibitmap): add slices
- 	paramater and use it to initialize mswindows_image_instance_data
- 	correctly.
-	(image_instance_add_dibitmap): new function. Add new bitmaps to
- 	our set of instantiated bitmaps for an image. Used by animated
- 	images.
-	(mswindows_init_image_instance_from_eimage): add a slices
- 	parameter. Instantiate all images from the eimage.
-	(mswindows_xpm_instantiate): update use of
- 	init_image_instance_from_dibitmap.
-	(bmp_instantiate): ditto.
-	(init_image_instance_from_xbm_inline): ditto.
-	(mswindows_finalize_image_instance): make sure all the bitmap
- 	slices get deleted.
-	(mswindows_initialize_dibitmap_image_instance): add slices
- 	paramater and use it to allocate mswindows_image_instance_data
- 	correctly.
-
-	* glyphs-eimage.c (jpeg_instantiate): give extra paramter to
- 	init_image_instance_from_eimage.
-	(png_instantiate): ditto.
-	(tiff_instantiate): ditto.
-	(gif_instantiate): allocate bitmaps for all gif slices not just
- 	the first one.
-
-	* device.h (struct device): add subwindows_state_changed flag.
-	(MARK_DEVICE_SUBWINDOWS_STATE_CHANGED): new macro.
-	(MARK_DEVICE_FRAMES_GLYPHS_CHANGED): ditto.
-
-	* console.h (struct console_methods): add a slice parameter to
- 	init_image_instance_from_eimage_method.
-
-	* redisplay.c (create_string_text_block): Allow buffer to be nil
- 	without crashing.
-
-1999-09-24  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c: only include gui-x.h if we are building with
- 	widgets.
-
-	* gui-x.c (vars_of_gui_x): only set popup_up_p if we have popups.
-
-1999-09-28  Lee Kindness <lkindness@csl.co.uk>
-
-	* objects-x.c (allocate_nearest_color): will return 0 (failure)
- 	when the colormap is full and the color it has computed to be the
- 	'nearest' has been allocated read/write.
-
-1999-10-02  Olivier Galibert  <galibert@pobox.com>
-
-	* search.c (reinit_vars_of_search):   Reinit   the  search   cache
- 	correctly.
-
-	* elhash.h:     Make    the    description    visible.     Declare
- 	resize_hash_table.
+2000-01-16  Martin Buchholz  <martin@xemacs.org>
 
-	* elhash.c  (resize_hash_table): Extracted from enlarge_hash_table
- 	to generalize the hash table reorganization.
-	(reorganize_hash_table): Added.
-	(enlarge_hash_table): Uses resize_has_table.
-
-	* casetab.c (complex_vars_of_casetab):  staticpro  the mule mirror
- 	tables.
-
-	* alloc.c:   Add  correct  management  of   blocks of  structures.
-  	Reorganize hash tables at reload since  the hash values can change
- 	with the pointers.
-
-1999-10-01  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp.h: Add pdump_wire declaration
-
-	* elhash.c (vars_of_elhash): Wire Vall_weak_hash_tables.
-	* symbols.c (init_symbols_once_early): Wire Qnil and Qunbound.
-
-	* alloc.c (pdump_wire): Added..
-	(pdump_load): Support it.
-	(pdump): Support it
-
-	* glyphs-msw.c
- 	(reinit_image_instantiator_format_create_glyphs_mswindows): Fix
- 	macro calls.
-
-1999-09-28  Olivier Galibert  <galibert@pobox.com>
-
-	* symsinit.h: Added lots of prototypes.
-
-	* symeval.h: Added defsymbol_nodump declaration.
-
-	* symbols.c (find_symbol_value): Lame attempt at making the
- 	startup go further.
-	(defsymbol_nodump): Added.
-
-	* mule-charset.c: Collapsed global lisp objects arrays in one
- 	dumpable structure.
-
-	* lrecord.h: Added some flags.
-
-	* lisp.h: Added dumped flag to dynarrs.  Added dumpstruct
- 	declaration.
-
-	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): Don't
- 	staticpro dynamic variables.
-
-	* glyphs.c (reinit_specifier_type_create_image): Added.
-	(image_instantiator_format_create): Dump image instantiator format
- 	dynarr.
-	(reinit_image_instantiator_format_create): Added.
-
-	* emacs.c (main_1): Added reinits calls.
-
-	* dynarr.c: Protect dumped dynarrays from going berzek in free or
- 	realloc.
-
-	* specifier.h (INITIALIZE_SPECIFIER_TYPE): Don't staticpro dynamic
- 	variables.
-	* specifier.c (specifier_type_create): Dump the specifier type
- 	dynarr.
-	(reinit_specifier_type_create): Added.
-	* console.h (INITIALIZE_CONSOLE_TYPE): Don't staticpro dynamic
- 	variables.
-	* console.c (console_type_create): Dump the console type dynarr.
-	(reinit_vars_of_console): Extracted from vars_of_console.
-	(reinit_complex_vars_of_console): Extracted from
- 	complex_vars_of_console
-	* window.c (reinit_vars_of_window): Extracted from vars_of_window.
-	* toolbar.c (reinit_specifier_type_create_toolbar): Added.
-	* search.c (reinit_vars_of_search): Extracted from vars_of_search.
-	* objects.c (reinit_specifier_type_create_objects): Added.
-	(reinit_vars_of_objects): Extracted from vars_of_objects.
-	* lstream.c (reinit_vars_of_lstream): Extracted from
- 	vars_of_lstream.
-	* lread.c (reinit_vars_of_lread): Extracted from vars_of_lread.
-	* gutter.c (reinit_specifier_type_create_gutter): Added.
-	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
- 	Added.
-	* glyphs-widget.c
- 	(reinit_image_instantiator_format_create_glyphs_widget): Added
-	* glyphs-msw.c
- 	(reinit_image_instantiator_format_create_glyphs_mswindows): Added.
-	* glyphs-eimage.c
- 	(reinit_image_instantiator_format_create_glyphs_eimage): Added.
-	* event-stream.c (reinit_vars_of_event_stream): Extracted from
- 	vars_of_event_stream
-	* eval.c (reinit_vars_of_eval): Extracted from vars_of_eval.
-	* device.c (reinit_vars_of_device): Extracted from vars_of_device.
-	* console-x.c (reinit_console_type_create_x): Added.
-	* console-tty.c (reinit_console_type_create_tty): Added
-	* console-stream.c (reinit_console_type_create_stream): Added.
-	(init_console_stream): If PDUMP, always reinitialise basic
- 	devices.
-	* console-msw.c (reinit_console_type_create_mswindows): Added.
-	* buffer.c (reinit_vars_of_buffer): Extracted from
- 	init_vars_of_buffer.
-	(reinit_complex_vars_of_buffer): Extracted from
- 	complex_vars_of_buffer
-
-	* alloc.c: Further with the portable dumping, the revenge.
-	(dumpstruct): Added.
-	(reinit_alloc_once_early): Extracted from init_alloc_once_early.
-
-	* specifier.c (sizeof_specifier): Correct size computation.
-	(make_specifier_internal): Ditto.
-
-1999-09-27  Olivier Galibert  <galibert@pobox.com>
-
-	* alloc.c: Further with the portable dumping.
-
-1999-09-27  Martin Buchholz  <martin@xemacs.org>
-
-	* glyphs-x.c (update_widget_face): Remove bogus cast
+	* mule-charset.c (Fchar_octet): Resurrect from earlier in 1999.
+	Optimize.
 
-	* data.c (sign_extent_lisp):
-	* data.c (check_int_range):
-	* data.c (Faref):
-	* data.c (Faset):
-	* data.c (number_char_or_marker_to_int):
-	* data.c (number_char_or_marker_to_double):
-	* data.c (Frem):
-	* data.c (Fmod):
-	* extents.c (print_extent_1):
-	* fns.c (print_bit_vector):
-	* fns.c (Flength):
-	* fns.c (Fsafe_length):
-	* fns.c (copy_list):
-	* fns.c (Fsubseq):
-	* fns.c (Felt):
-	* fns.c (Flast):
-	* fns.c (Fnbutlast):
-	* insdel.h:
-	* marker.c (print_marker):
-	* syntax.h:
-	* bytecode.c (bytecode_arithcompare):
-	* bytecode.c (bytecode_arithop):
-	* lisp.h:
-	* lisp.h (EXTERNAL_LIST_LOOP_DELETE_IF):
-	* lisp.h (TRUE_LIST_P):
-	* lisp.h (CHECK_TRUE_LIST):
-	* lisp.h (bit_vector_length):
-	* lisp.h (GCPRO4): Make consistent.
-	* lisp.h (NGCPRO4): Make consistent.
-	* lisp.h (NNGCPRO4): Make consistent.
-	* alloc.c (Fmake_list):
-	* alloc.c (Fmake_string):
-	Use proper 64-bit types, e.g. EMACS_INT or size_t instead of int.
-	This should make all arithmetic 64-bit clean.
-
-	Use %ld with (long) casts in print statements of types with sizes
-	possibly larger than int.
-
-	Following functions had mismatched prototypes!!:
-	do_marker_adjustment(), fixup_internal_substring(), scan_lists(),
-	char_quoted(), make_string_from_buffer(),
-	make_string_from_buffer_no_extents()
-
-	The types of Bufpos, Bytind, Memind, Bytecount, Charcount,
-	Extcount are all now EMACS_INT.  I hope to see the day when I can
-	create a buffer with more than INT_MAX characters, without having
-	XEmacs slow down to a crawl.  I also hope to be able to create a
-	list with more than INT_MAX cons cells.
-
-	* redisplay.c (decode_mode_spec): 
-	The %p and %P specs in the mode line were not correct for buffers
-	larger than MAX_INT/100!  The %p spec was off by .5% even for
-	small buffers!
-
-1999-09-27  Martin Buchholz  <martin@xemacs.org>
-
-	* cmdloop.c (num_input_keys):
-	* print.c (debug_temp):
-	* emacs.c (Vinfo_directory):
-	Delete unused variables 
-
-	* console-x.h (x_interline_space):  Mark as unimplemented.
-	* redisplay-x.c (x_interline_space):  Mark as unimplemented.
-
-	* event-Xt.c (pending_timeouts):
-	* linuxplay.c (linuxplay_sndbuf):
-	* profile.c (QS*):
-	* search.c (searchbufs):
-	* specifier.c (specifier_type_entry_dynarr):
-	* undo.c (pending_boundary):
-	* event-stream.c (the_low_level_timeout_blocktype):
-	* extents.c (gap_array_marker_freelist):
-	* extents.c (extent_list_marker_freelist):
-	* print.c (being_printed):
-	* print.c (alternate_do_pointer):
-	* alloc.c (first_string_chars_block):
-	* alloc.c (current_string_chars_block):
-	* emacs.c (initial_argv):
-	* emacs.c (initial_argc):
-	* eval.c (lisp_eval_depth):
-	* free-hook.c (pointer_table):
-	* free-hook.c (free_queue):
-	* free-hook.c (current_free):
-	* free-hook.c (strict_free_check):
-	* redisplay.c (formatted_string_emchar_dynarr):
-	* redisplay.c (formatted_string_display_line):
-	* redisplay.c (formatted_string_extent_dynarr):
-	* redisplay.c (formatted_string_extent_start_dynarr):
-	* redisplay.c (formatted_string_extent_end_dynarr):
-	* redisplay.c (updating_line_start_cache):
-	* redisplay.c (last_display_warning_tick):
-	* redisplay.c (display_warning_tick):
-	* redisplay.c (internal_cache):
-	* window.c (Vwindow_configuration_free_list):
-	Make static.
-
-	* redisplay.c (Vinitial_window_system):  Make CONST.
-
-1999-09-24  Martin Buchholz  <martin@xemacs.org>
-
-	* redisplay-tty.c (term_get_fkeys_1): Minor aesthetic improvements.
-
-	* doprnt.c (get_doprnt_args): Use int, not short, with va_arg.
-
-1999-09-24  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (output_display_line): only clear the borders
- 	if we are not displaying the gutter.
-
-1999-09-24  Jan Vroonhof <vroonhof@math.ethz.ch>
-
-	* frame-x.c (x_any_window_to_frame): Let Xt find the widget and
- 	then use x_any_widget_or_parent_to_frame().
-	(x_find_frame_for_window): remove special cases.
-
-1999-09-24  Andy Piper  <andy@xemacs.org>
-
-	* scrollbar-x.c (x_window_is_scrollbar): deleted.
-	* scrollbar-x.h: ditto.
-	
-1999-09-23  Martin Buchholz  <martin@xemacs.org>
-
-	* alloc.c (this_marks_a_marked_record): Remove.
-
-	* buffer.c (mark_buffer):
-	* buffer.c (nuke_all_buffer_slots):
-	* console.c (mark_console):
-	* console.c (nuke_all_console_slots):
-	* frame.c (mark_frame):
-	* frame.c (nuke_all_frame_slots):
-	Treat MARKED_SLOT() macros consistently.
+2000-01-14  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
 
-	* device.h (error_check_device_type):
-	* faces.c (face_getprop):
-	* fileio.c (DRIVE_LETTER):
-	* filelock.c (lock_file_1):
-	* frame-x.c (x_create_widgets):
-	* frame.h (error_check_frame_type):
-	* keymap.c (print_keymap):
-	* keymap.c (Fkey_description):
-	* keymap.c (where_is_recursive_mapper):
-	* mule-charset.h (CHARSET_LEADING_BYTE):
-	* objects-msw.c (mswindows_color_instance_hash):
-	* objects.c (color_instance_equal):
-	* objects.h (struct color_specifier):
-	* objects.h (struct font_specifier):
-	* objects.h (struct face_boolean_specifier):
-	* opaque.h (get_opaque_ptr):
-	* opaque.h (set_opaque_ptr):
-	* process-unix.c (set_socket_nonblocking_maybe):
-	* specifier.h (SPECIFIER_TYPE_P):
-	* symbols.c (store_symval_forwarding):
-	* syssignal.h (EMACS_KILLPG):
-	* terminfo.c (emacs_tparam):
-	* glyphs.c (glyph_putprop):
-	* glyphs.c (glyph_remprop):
-	* glyphs.c (Fimage_instance_subwindow_id):
-	* window.c (mark_window):
-	* window.c (mark_window_config):
-	* window.c (Fset_window_configuration):
-	* window.c (save_window_save):
-	* eval.c (Fuser_variable_p):
-	* eval.c (Fcommand_execute):
-	* eval.c (Feval):
-	* eval.c (Ffuncall):
-	* lisp.h (XPNTR):
-	* lisp.h (INT_OR_FLOATP):
-	* lisp.h (GC_INT_OR_FLOATP):
-	* lisp.h (XFLOATINT):
-	* lisp.h (IS_ANY_SEP):
-	* mule-ccl.c (Fccl_execute):
-	* mule-ccl.c (Fccl_execute_on_string):
-	* redisplay-x.c (x_output_string):
-	Remove redundant extra parentheses.
-
-1999-09-22  Martin Buchholz  <martin@xemacs.org>
-
-	* chartab.c (word_boundary_p): Add prototype for warning avoidance.
-	* eval.c (PRIMITIVE_FUNCALL): ANSIfy
-	* free-hook.c (fun_ptr): ANSIfy
-	* getloadavg.c: Remove declaration for errno.
-	* gui.c (allocate_gui_item): ANSIfy
-	* gui.h (allocate_gui_item): ANSIfy
-	* mule-ccl.c (resolve_symbol_ccl_program): Make static
-	* realpath.c: Remove K&R support.
-	* redisplay-x.c (x_output_display_block): Don't shadow previous local
-	* glyphs-widget.c (layout_instantiate):  Don't shadow previous local
-	* gutter.c (get_gutter_coords): Make static.
-	* lread.c (locate_file_map_suffixes): Make static.
-	* ralloc.c (relinquish): ANSIfy
-	* redisplay.c:
-	* lisp.h:
-	Move prototypes from redisplay.c to lisp.h
-
-1999-09-22  Martin Buchholz  <martin@xemacs.org>
-
-	* glyphs-x.c (x_widget_set_property):
-	- Remove unnecessary initialization.
-	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
-	* glyphs-x.c (x_widget_instantiate):
-	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
-	* unexelf.c (unexec):
-	Add cast for C++ compilability.
-	* redisplay.h:
-	Fix a typo.
-	* ralloc.c (r_alloc_reinit):
-	SET_FUN_PTR was broken wrt ANSI aliasing!
-	To compensate, use __typeof__ when using gcc, else live with
-	possible (but rare) warnings.
-	* ralloc.c (init_ralloc):
-	Ditto
-	* ralloc.c: Use the real dlmalloc prototype for __morecore.
-	* lread.c (locate_file_map_suffixes):
-	* input-method-xlib.c (XIM_init_frame):
-	- Xlib functions should use XPointer, not XtPointer.
-	* input-method-xlib.c (XIM_delete_frame):
-	- Xlib functions should use XPointer, not XtPointer.
-	* input-method-xlib.c (IMDestroyCallback):
-	- Simplify.
-	- XFRAME (obj) can never be NULL, so don't test for it.
-	* gutter.h:
-	Add GUTTER_POS_LOOP for iterating over all gutter_pos'es
-	* gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG):
-	Run c-backslash-region on macro body.
-	* gutter.c (gutter_was_visible):
-	Remove redundant parens - this is not a macro.
-	* gutter.c (redraw_exposed_gutters):
-	Use GUTTER_POS_LOOP.
-	* gutter.c (gutter_specs_changed):
-	Use GUTTER_POS_LOOP.
-	* gutter.c (gutter_geometry_changed_in_window):
-	Use GUTTER_POS_LOOP.
-	* gutter.c (update_frame_gutters):
-	Use GUTTER_POS_LOOP.
-	* gutter.c (init_frame_gutters):
-	Use GUTTER_POS_LOOP.
-	* file-coding.c (determine_real_coding_system):
-	Fix C++ compile error.
-	* emodules.c (find_make_module):
-	Cast return value from xrealloc
-	* emacs.c (Fkill_emacs):
-	Use __typeof__, when available.
-	* emacs.c (voodoo_free_hook):
-	Use __typeof__, when available.
-	(Unfortunately, the type of __free_hook is glibc-version-dependent)
-	* dired.c (user_cache): Use Bufbyte *, not char *
-	* dired.c (Fuser_name_all_completions): Ditto.
-
-1999-09-22  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.c (redisplay_frame): reset the gutter display lines
- 	when we reset the subwindows.
-
-	* gutter.c (reset_gutter_display_lines): new function.
-
-	* window.c (Flast_nonminibuf_window): new function equivalent to
- 	FRAME_LAST_NONMINIBUF_WINDOW ().
-	(syms_of_window): declare it.
-
-	* redisplay.c (create_string_text_block): don't add bogus eol
- 	markers to gutter display lines.
-
-	* glyphs.c (reset_subwindow_cachels): make sure we unmap
- 	subwindows using unmap_subwindow so that expose events get
- 	registered correctly.
-
-	* window.c (window_scroll): use Vwindow_pixel_scroll_increment to
- 	determine how much to scroll the window.
-	(vars_of_window): Vwindow_pixel_scroll_increment is a new
- 	variable.
-
-1999-09-20  Robert Pluim  <rpluim@nortelnetworks.com>
-
-	* glyphs-x.c (update_widget_face): Guard fontList declaration for
-	non-motif uses.
-
-1999-09-20  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (mswindows_update_subwindow): update faces.
-
-1999-09-19  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (update_frame_subwindows): update if faces have
- 	changed.
-
-	* glyphs-x.c (x_widget_instantiate): create the clip widget using
- 	lwlib rather than directly.
-	(x_finalize_image_instance): delete the clip widget using lwlib.
-	(x_update_subwindow): update widget faces.
-	(update_widget_face): new function for updating the face
- 	properties of a widget.
-	(x_widget_set_property): update widget faces.
-
-	* lwlib-Xlw.c (xlw_create_clip_window): new function. We need to
- 	manage the clip widgets using lwlib so that we can delete them in
- 	a safe manner.
-
-1999-09-16  Martin Buchholz  <martin@xemacs.org>
-
-	* lisp-union.h:
-	* lisp-disunion.h:
-	Define new, potentially faster INT arithmetic macros
-	INT_PLUS, INT_MINUS, INT_PLUS1, INT_MINUS1
-	* bytecode.c (execute_optimized_function):
-	Use new macros.
-	Fix metering code
-	* bytecode.c (bytecode_negate):
-	Optimize for integer case.
-
-1999-08-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
-
-	* m/mips.h: Support for mips-linux: Add !linux around places
-	that are not valid for linux, define TEXT_START, DATA_START,
-	DATA_SEG_BITS.
-
-1999-09-16  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_output_subwindow): clip subwindows
- 	that don't completely fit on-screen rather than just unmapping
- 	them.
-
-	* glyphs.h: change signature of map_subwindow.
-
-	* glyphs.c (map_subwindow): add display_glyph_area to the
- 	signature. make sure the mapped area saved in the subwindow_cachel
- 	reflects this.
-	(Fforce_subwindow_map): make a no-op. I don't think this does
- 	anything useful.
-
-	* glyphs-x.h (struct x_subwindow_data): save the Display rather
- 	than the Screen. Add a clipwindow and clipwidget handle.
-	(IMAGE_INSTANCE_X_CLIPWINDOW): new accessor.
-	(IMAGE_INSTANCE_X_CLIPWIDGET): ditto.
-	(XIMAGE_INSTANCE_X_CLIPWIDGET): ditto.
-	(XIMAGE_INSTANCE_X_CLIPWINDOW): ditto.
-
-	* glyphs-x.c (x_finalize_image_instance): destroy the clipwidget
- 	as well as the widget itself.
-	(x_unmap_subwindow): unmap the clipwindow and clipwidget rather
- 	than the widgets and subwindows themselves. move the widget inside
- 	the clipwidget.
-	(x_subwindow_instantiate): hold onto the Display rather than the
- 	Screen. allocate a clipwindow to put the subwindow inside.
-	(x_resize_subwindow): use saved Display directly.
-	(x_widget_instantiate): allocate a clipwidget of type EmacsManager
- 	to put widgets inside.
-
-	* glyphs-widget.c: remove group stuff.
-
-	* glyphs-msw.h (struct mswindows_subwindow_data): new structure to
- 	hold the clipwindow.
-	(IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): new accessor.
-	(XIMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): ditto.
-
-	* glyphs-msw.c: remove group stuff.
-	(mswindows_finalize_image_instance): destroy clipwindow as well as
- 	the widget itself.
-	(mswindows_unmap_subwindow): unmap the clipwindow rather than the
- 	widget.
-	(mswindows_map_subwindow): ditto. move the widget within the
- 	clipwindow.
-	(mswindows_subwindow_instantiate): allocate and initialize
- 	mswindows_subwindow_data. allocate a clipwindow with the subwindow
- 	as a child.
-	(mswindows_widget_instantiate): ditto.
-	(mswindows_control_wnd_proc): new function that allows us to
- 	propagate events from the widget to the main windows control loop.
-
-	* device-msw.c (mswindows_init_device): register new widget clip window
- 	class.
-
-	* console.h (struct console_methods): add display_glyph_area to
- 	map_window.
-
-	* console-msw.h: declare new window class and wnd proc for
- 	widgets.
-
-1999-09-14  Martin Buchholz  <martin@xemacs.org>
-
-	* general.c:
-	* eldap.c:
-	Move symbols used only by eldap.c into eldap.c as statics.
-
-1999-09-09  Martin Buchholz  <martin@xemacs.org>
-
-	* window.c (syms_of_window):
-	* symbols.c (syms_of_symbols):
-	* redisplay.c (syms_of_redisplay):
-	* print.c (syms_of_print):
-	* lisp.h:
-	* intl.c (syms_of_intl):
-	* general.c (syms_of_general):
-	* frame.c (syms_of_frame):
-	* fileio.c (syms_of_fileio):
+	* md5.c:
+	* file-coding.c:
 	* file-coding.h:
-	* file-coding.c (syms_of_file_coding):
-	* extents.c (syms_of_extents):
-	* event-stream.c (syms_of_event_stream):
-	* event-stream.c (Fnext_event):
-	* device.c (syms_of_device):
-	* data.c (syms_of_data):
-	* casetab.c (syms_of_casetab):
-	* casetab.c (check_case_table):
-	* callint.c (syms_of_callint):
-	* buffer.c (syms_of_buffer):
-	Delete unused C symbols:
-	Qbuffer_file_name, Qbuffer_undo_list, Quser_variable_p,
-	Qcurrent_prefix_arg, Qtranslate_table, Qkeywordp,
-	Qnumber_or_marker_p, Qcons, Qkeyword, Qignore, Qdelete_device,
-	Qcommand_execute, Qglyph_invisible,
-	Qbuffer_file_coding_system, Qfile_name_handler_alist,
-	Qframe_x_p, Qframe_tty_p, Qblack, Qkeyboard, Qmenubar, Qpath,
-	Qvector, Qwhite, Qcase, Qdomain, Qalternate_debugging_output,
-	Qprint_escape_newlines, Qprint_readably, Qfloat_output_format,
-	Qwindow_scroll_functions, Qfboundp, Qscroll_up, Qscroll_down
-
-	Rename symbols as required by the CHECK_RECORD macro:
-	- Qcase_table_p to Qcase_tablep
-	- Qcoding_system_p to Qcoding_systemp
-
-	* debug.h:
-	* debug.c (syms_of_debug):
-	Make debug.c's internal Lisp_Objects static.
-
-	* events.c (vars_of_events):
-	* events.c (syms_of_events):
-	Use regular old defsymbol instead of KEYSYM + staticpro().
-
-	* select-x.c (CHECK_CUTBUFFER):
-	Rewrite in accordance with coding standards.
-
-	* keymap.c (syms_of_keymap):
-	Use SPC in the same way as RET, TAB, etc.
-
-1999-08-27  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* xemacs-20/src/menubar-x.c (make_dummy_xbutton_event): Don't add
-	offset twice if HAVE_WMCOMMAND is defined.
-
-1999-09-13 Mike McEwan <mike@lotusland.demon.co.uk>
-
-	* redisplay-x.c (x_output_vertical_divider): make sure
- 	shadow_thickness is positive.
-
-1999-09-10 Julian Back <jback@rudd.compulink.co.uk>
-
-	* process-nt.c (nt_create_process): fixup to cope with
- 	Vprocess_environment.
-
-1999-09-02  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_output_layout): call output
- 	routines with clear_clip false. output layout borders with text
- 	correctly.
-
-	* redisplay-msw.c (mswindows_output_blank): call output routines
- 	with clear_clip true.
-	(mswindows_output_string): ditto.
-	(mswindows_output_display_block): ditto.
-
-	* redisplay-x.c (x_output_display_block): call output routines
- 	with clear_clip true.
-
-	* redisplay.h: fix output routines for clear_clip parameter.
-
-	* redisplay-output.c (redisplay_output_layout): cope with glyphs
- 	in the border.
+	Change enum eol_type to eol_type_t.
 
-	* glyphs-widget.c (layout_instantiate): deal with border glyphs.
-	(check_valid_glyph_or_instantiator): renamed from
- 	check_valid_glyph_or_image.
-	(check_valid_border): allow glyphs or their instantiators.
-	(check_valid_glyph_or_instantiator_list): renamed from
- 	check_valid_glyph_or_image_list,
-	(glyph_instantiator_to_glyph): new function. make sure a glyph is
- 	a glyph and not an instantiator.
-	(substitute_keyword_value): new function. replace a keyword value
- 	with a new one.
-
-1999-09-01  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (string_set_property): new function to set the data of
- 	a string.
-	(image_instantiator_format_create): use it.
-
-1999-09-07  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fmapc): Rename back to Fmapc_internal.
-
-1999-07-30  Gleb Arshinov  <gleb@cs.stanford.edu>
-
-	* ntheap.h: CONST (semantically constant) name field of file_data
- 	struct
-
-	* unexnt.c (open_output_file): match function definition with
- 	function declaration
-
-	* editfns.c: #include "sysfile.h" for getcwd() prototype
-
-	* gif_io.c:  #include "sysfile.h" for close() prototype
-
-1999-09-02  Martin Buchholz  <martin@xemacs.org>
+2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
 
-	* elhash.c:
-	* elhash.h:
-	Change the :type keyword to :weakness, for compatibility with the
-	GNU Emacs 20.5 hash table implementation.
-	Keep (but don't document) the :type keyword for compatibility.
-	Obsolete function hash-table-type
-	General cleanup.
-	Define function sxhash for compatibility with Common Lisp and GNU Emacs.
-
-1999-09-01  Martin Buchholz  <martin@xemacs.org>
-
-	* floatfns.c (arith_error):
-	* floatfns.c (range_error):
-	* floatfns.c (range_error2):
-	* floatfns.c (domain_error):
-	* floatfns.c (domain_error2):
-	* lrecord.h (LRECORDP):
-	* console-x.h (X_ERROR_OCCURRED):
-	* console-x.h (HANDLING_X_ERROR):
-	* chartab.c (CATEGORYP):
-	* buffer.h (XCHAR_OR_CHAR_INT):
-	Remove redundant and confusing parentheses.
-
-	* redisplay-output.c (redisplay_clear_to_window_end):
-	Remove redundant initialization.
-
-	* redisplay.h:
-	* redisplay-msw.c:
-	* redisplay-x.c:
-	Move declarations of bevel_modeline() into redisplay.h.
-
-1999-08-30  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp.h: Add staticpro_nodump for undumped staticpro-ing.
-	* alloc.c: Add staticpro_nodump for undumped staticpro-ing.  Add
-		  alignment information for dumped data.  Enhance
-		  descriptions.  Phase out Vterminal_* variables while
-		  dumping.
-	* lrecord.h: Add chained descriptions and automagically-reset
-		  lisp_objects to the description system.
-
-	* console-stream.h: Declare the Vterminal_* variables.
+	* gui.c (get_gui_callback): Check cons before accessing car.
 
-	* buffer.c: Don't dump Vbuffer_alist, Vbuffer_defaults and
-		  Vbuffer_local_symbols.
-	* console.c: Don't dump Vconsole_list, Vconsole_defaults and
-		  Vconsole_local_symbols.
-	* eval.c: Don't dump Qunbound_suspended_errors_tag.
-	* lread.c: Don't dump Vread_buffer_stream.
-	* lstream.c: Don't dump Vlstream_free_list[].
-	* search.c: Don't dump last_thing_searched.
-	* window.c: Don't dump minibuf_window and
-		  Vwindow_configuration_free_list[].
-
-	* faces.c: Add face description.
-	* fns.c: Add bit_vector description.
-	* glyphs.c: Add image specifier description.
-	* objects.c: Add color, face and face boolean specifiers descriptions.
-	* opaque.c: Add opaque description.  Don't dump Vopaque_ptr_free_list.
-	* rangetab.c: Add range table description.
-	* specifier.c: Add specifier and specifier methods description.
-	* specifier.h: Add specifier extra description support.
-
-	* symbols.c: Fix symbol_value_buffer_local_description.
-
-	* gdbinit (Lisp): Add opaque_ptr, remove opaque_list.
-
-1999-09-02  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* extents.c (extent_remprop): Get extent's plist address
- 	correctly.
-
-1999-08-31  Andy Piper  <andy@xemacs.org>
-
-	* xmu.h: define Xmu/Converters.h things.
-
-1999-08-31  Andy Piper  <andy@xemacs.org>
-
-	* opaque.c (equal_opaque_ptr): define.
-	(hash_opaque_ptr): define.
-
-	* xmu.h: define Xmu/Misc.h things.
-
-1999-08-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (determine_real_coding_system): Treat `coding:'
-	cookie.
-
-1999-08-16  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (struct decoding_stream): New member `counter'.
-	(reset_decoding_stream): Initialize `counter'.
-	(decode_coding_ucs4): Use `counter'.
-	(decode_coding_utf8): Likewise.
-
-1999-08-31  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_normalize_glyph_area): make sure
- 	the clip offset doesn't exceed the height we have available to
- 	show.
-
-	* window.h (struct window): add top_yoffset and left_xoffset for
- 	pixel scrolling.
-	(WINDOW_TEXT_TOP_CLIP): new macro.
-
-	* window.c (window_scroll): add behaviour for pixel-scrolling of
- 	tall lines.
-
-	* redisplay.h (struct display_line): add top_clip.
-	(DISPLAY_LINE_HEIGHT): adjust for top_clip.
-	(DISPLAY_LINE_YPOS): ditto.
+2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
 
-	* redisplay.c (position_redisplay_data_type): add
- 	start_col_xoffset to prepare for pixel-based h-scrolling.
-	(WINDOW_SCROLLED): new macro.
-	(next_tab_position): use it.
-	(add_glyph_rune): use new hscoll vars.
-	(create_text_block): ditto.
-	(generate_displayable_area): adjust off-by-one error.
-	(regenerate_window): take top_clip into account.
-	(regenerate_window_extents_only_changed): ditto.
-	(regenerate_window_incrementally): ditto.
-
-	* redisplay-x.c (x_output_display_block): use DISPLAY_LINE_YPOS,
- 	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
-	(x_output_string): ditto.
-	(x_output_blank): ditto.
-	(x_output_hline): ditto.
-	(x_output_eol_cursor): ditto.
-
-	* redisplay-output.c (output_display_line): allow for
- 	top_clip. use DISPLAY_LINE_YPOS, DISPLAY_LINE_HEIGHT and
- 	DISPLAY_LINE_YEND macros.
-	(redisplay_output_layout): output strings in layouts correctly.
-	(redisplay_clear_clipped_region): allow for top_clip.
-	(redisplay_calculate_display_boxes): ditto.
-
-	* redisplay-msw.c (mswindows_output_blank): use DISPLAY_LINE_YPOS,
- 	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
-	(mswindows_output_cursor): ditto.
-	(mswindows_output_string): ditto.
-	(mswindows_redraw_exposed_window): ditto.
-	(mswindows_output_display_block): ditto.
+	* specifier.h (XSPECIFIER_TYPE): Add error checking version.
+	(XSETSPECIFIER_TYPE): Ditto.
 
-	* gutter.c: new specifier type gutter-size.
-	(gutter_size_validate): validate gutter-size specifier.
-	(Fgutter_size_specifier_p): predicate for gutter-size.
-	(Fredisplay_gutter_area): allow the gutter area to be redisplayed
- 	under user contol, like Fredisplay_echo_area.
-	(syms_of_gutter): add new functions.
-	(specifier_type_create_gutter): add new specifier.
-	(specifier_vars_of_gutter): change specifier types of *-height to
- 	gutter-size.
-
-	* glyphs.c (glyph_width): make work with image instances.
-
-	* console.h (struct console_methods): change api of output_string.
-
-	* glyphs-x.c (x_map_subwindow): move before mapping as reported by
- 	Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>
-
-1999-08-30  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_finalize_image_instance): X_MASK -> PIXMAP_MASK
- 	for assignment.
-	(init_image_instance_from_x_image): ditto.
-	(x_xpm_instantiate): ditto.
-	(x_colorize_image_instance): ditto. Reported by Richard Cognot
- 	<cognot@ensg.u-nancy.fr>
-
-1999-08-29  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_widget_instantiate): move font initialisation so
- 	that it doesn't get saved in the user defined args.
-	(x_tab_control_instantiate): Set the fg color of the tab's
- 	children.
-	(x_tab_control_set_property): ditto.
-
-1999-08-27  Damon Lipparelli  <lipp@primus.com>
-
-	* events.h (XTIMEOUT): must preface Lisp_Timeout with ``struct''
-	(XSETTIMEOUT): fixup typo
-
-1999-08-11  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* syntax.c (scan_words): Unified Mule and Non-mule scanning.
-	Word boundary search looks back instead of forward so that it
-	doesn't peek over the limit.
-
-1999-08-20  Olivier Galibert  <galibert@pobox.com>
-
-	* config.h.in: Add PDUMP define.
-	* emacs.c (Fdump_emacs): Hackish, call pdump() if configured in.
+2000-01-17  Didier Verna  <didier@xemacs.org>
 
-	* lrecord.h: Enhance description system.
-	* alloc.c: Fix vector and string description.  Add portable
-	dumper enumeration fonctions.
-
-	* symbols.c:  Fix symbols description.   Add  symbol_value_forward
-	description.
-	* eval.c: Add subr description.
-	* elhash.c (CLEAR_HENTRY):   Clean  value pointer  too.   Fix hash
-	table description.
-	(remhash_1): CLEAR_HENTRY evaluates the parameter two times now.
-
-1999-08-20  Olivier Galibert  <galibert@pobox.com>
-
-	* opaque.c: Kill opaque lists, make  Lisp_Opaque_Ptr a lrecord of
-	its own.
-	* opaque.h: Ditto.
-
-	* eval.c (eval_in_buffer_trapping_errors):
-	(run_hook_trapping_errors):
-	(safe_run_hook_trapping_errors):
-	(call0_trapping_errors):
-	(call1_trapping_errors):
-	(call2_trapping_errors): OPAQUEP  -> OPAQUE_PTRP.  make_opaque_ptr
-	now takes a non-const void *.
-
-1999-08-20  Olivier Galibert  <galibert@pobox.com>
-
-	* opaque.c: Remove make_opaque_long.
-
-	* opaque.h: Remove everything opaque_long related.
-
-	* eval.c (vars_of_eval): Make Qunbound_suspended_errors_tag an
-	opaque_ptr.
-
-	* emacs.c (main_1): Remove make_opaque_long from comment.
-
-1999-08-20  Olivier Galibert  <galibert@pobox.com>
-
-	* event-stream.c (mark_timeout):
-	(print_timeout):
-	(event_stream_generate_wakeup):
-	(event_stream_resignal_wakeup):
-	(event_stream_disable_wakeup):
-	(event_stream_wakeup_pending_p):
-	(vars_of_event_stream): Lisp_Timeout is now a lrecord.
-
-	* events.h (struct Lisp_Timeout): Added.
-
-1999-08-24  Andy Piper  <andy@xemacs.org>
-
-	* console-x.h: declare new pixmap signatures.
-
-1999-08-23  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_update_subwindow): make sure the widget size is
- 	maintained after an update.
-
-	* event-Xt.c (emacs_Xt_handle_magic_event): use
- 	find_matching_subwindow to check whether the exposure is totally
- 	inside a subwindow, if it is then ignore it.
-
-	* glyphs.c (find_matching_subwindow): new function.
-
-	* toolbar-x.c (x_draw_blank_toolbar_button): use new
- 	x_output_shadows signature.
-	(x_output_toolbar_button): use new x_output_x_pixmap signature.
-
-	* redisplay.h (struct display_box): new structure.
-	(struct display_glyph_area): ditto.
-  	declare new display_box functions.
-
-	* redisplay-x.c (x_output_pixmap): update for new display
- 	box stuff.
-	(x_bevel_area): update to allow multiple edge styles and border
- 	segments.
-	(x_output_display_block): update for new display_box stuff and
- 	signatures.
-	(x_clear_region): ditto.
-	(x_output_x_pixmap): ditto. adjust offsets rather than clip.
-	(console_type_create_redisplay_x): declare new console methods.
-	(x_output_vertical_divider): update for new bevel_area signature.
-	(x_output_shadows): update to allow selective drawing of edges.
-
-	* redisplay-tty.c (tty_output_display_block): do nothing for
- 	layouts.
-
-	* redisplay-output.c (redisplay_output_subwindow): convert to use
- 	display_box structure, this allows us to put subwindows anywhere
- 	with any offset, useful for layout glyphs.
-	(redisplay_output_layout): new function. output a layout and its
- 	sub-glyphs.
-	(redisplay_output_pixmap): new modular function combining generic
- 	parts of the X and mswindows versions. convert to use display_box
- 	structures.
-	(redisplay_clear_clipped_region): new function. clear the area a
- 	glyph is going into.
-	(redisplay_normalize_glyph_area): new function. calculate the
- 	bounds of a display_glyph_area given a display_box.
-	(redisplay_normalize_display_box): new function. shrink a
- 	display_box to enclose a display_glyph_area.
-	(redisplay_display_boxes_in_window_p): check whether the input
- 	display_box and display_glyph_area are actually in a window.
-	(redisplay_calculate_display_boxes): calculate display boxes based
- 	on conventional display_line metrics.
-	(bevel_modeline): update for new bevel_area signature.
-
-	* redisplay-msw.c (mswindows_output_blank): update for new
- 	display_box stuff.
-	(mswindows_output_string): ditto.
-	(mswindows_output_dibitmap): ditto.
-	(mswindows_output_dibitmap_region): ditto.
-	(mswindows_output_pixmap): ditto.
-	(mswindows_bevel_area): update to allow multiple edge styles and
- 	border segments.
-	(mswindows_output_display_block): update for new display_box stuff
- 	and signatures.
-	(mswindows_clear_region): ditto.
-	(console_type_create_redisplay_mswindows): declare new console methods.
-
-	* lisp.h (edge_style): new enum.
-	declare display_box and display_glyph_area.
-
-	* gutter.c (output_gutter): update for new bevel_area signature.
+	* redisplay.c (generate_fstring_runes): compute string size in
+	characters, not bytes.
 
-	* glyphs.h (image_instance_type): add layout.
-	(IMAGE_LAYOUT_MASK): ditto.
-	(LAYOUT_IMAGE_INSTANCEP): new macro.
-	(CHECK_LAYOUT_IMAGE_INSTANCE): ditto.
-	(struct Lisp_Image_Instance): add offsets for layout and the
- 	layout type itself. move mask here also.
-	(IMAGE_INSTANCE_LAYOUT_CHILDREN): new macro.
-	(IMAGE_INSTANCE_LAYOUT_BORDER): ditto.
-	(XIMAGE_INSTANCE_LAYOUT_CHILDREN): ditto.
-	(XIMAGE_INSTANCE_LAYOUT_BORDER): ditto.
-
-	* glyphs.c (mark_image_instance): update for layouts.
-	(print_image_instance): ditto.
-	(image_instance_equal): ditto.
-	(image_instance_hash): ditto.
-	(allocate_image_instance): initialise offsets for layout.
-	(decode_image_instance_type): update for layouts.
-	(encode_image_instance_type): ditto.
-	(Fimage_instance_height): ditto.
-	(Fimage_instance_width): ditto.
-	(allocate_glyph): ditto.
-	(glyph_width): allow image instances as an argument. update for layouts.
-	(glyph_height_internal): ditto.
-	(syms_of_glyphs): add layout symbols.
-
-	* glyphs-x.h (struct x_image_instance_data): remove mask entry.
-	(IMAGE_INSTANCE_X_MASK): update.
-
-	* glyphs-x.c (x_label_instantiate): new function. instantiate a
- 	label.
-	(image_instantiator_format_create_glyphs_x): initialise new layout
- 	glyph type.
-
-	* glyphs-widget.c: new layout type.
-	(check_valid_orientation): new keyword checker for layouts.
-	(check_valid_justification): ditto.
-	(check_valid_border): ditto.
-	(check_valid_glyph_or_image_list): ditto.
-	(layout_possible_dest_types): new function for layout glyph type.
-	(layout_normalize): ditto.
-	(layout_instantiate): ditto.
-	(syms_of_glyphs_widget): new keywords for layout.
-	(image_instantiator_format_create_glyphs_widget): initialise the
- 	layout glyph type.
-
-	* glyphs-msw.h (struct mswindows_image_instance_data): remove mask
- 	argument.
-	(IMAGE_INSTANCE_MSWINDOWS_MASK): update.
-
-	* glyphs-msw.c: declare layout format.
-	(image_instantiator_format_create_glyphs_mswindows): initialise it.
-
-	* general.c: new symbols for layouts.
-
-	* console.h (struct console_methods): new console methods for
- 	outputting pixmaps and strings.
-
-1999-08-23  Didier Verna  <verna@inf.enst.fr>
-
-	* sound.c: revert the renaming of `bell_volume' to `Vbell_volume'
- 	and `bell_inhibit_time' to `Vbell_inhibit_time'.
-
-1999-08-18  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_output_subwindow): disable
- 	clipping attempt.
-
-1999-08-17  Andy Piper  <andy@xemacs.org>
-
-	* gutter.c (redraw_exposed_gutter): handle degenerate case of no
- 	area to expose or no gutter to display.
-
-1999-08-16  Charles G Waldman  <cgw@fnal.gov>
-
-	* sound.c: rename `bell_volume' to `Vbell_volume' and
-	`bell_inhibit_time' to `Vbell_inhibit_time'.
-
-1999-08-13  Charles G Waldman  <cgw@fnal.gov>
-
-	* sound.c: (bell-inhibit-time): New variable.
-	(ding): Use it.
-	(sound-alist): Fix docstring.
-
-1999-08-17  Andy Piper  <andy@xemacs.org>
-
-	* gui-x.c (button_item_to_widget_value): xstrdup name so that
- 	deleting it is ok.
-
-1999-08-16 Jeff Miller <jmiller@smart.net>
-
-	* syntax.c (scan_words): make compile.
-
-1999-08-16  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_output_subwindow): try and be more
- 	relaxed about clipping possibilities.
-
-	* glyphs-x.c (x_tab_control_set_property): free_widget_value_tree
- 	rather than just the widget_value.
-	(x_update_subwindow): ditto.
-	(x_widget_instantiate): ditto.
-
-	* gutter.c (output_gutter): shrink current display lines if
- 	required.
-
-1999-08-15  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.h: declare free_display_lines.
-
-	* redisplay.c (free_display_lines): make non-static.
-
-	* gutter.c (free_frame_gutters): use free_display_lines instead of
- 	Dynarr_free.
-	(calculate_gutter_size): ditto.
-
-1999-08-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* eval.c (run_hook_with_args_in_buffer): GCPRO globals.
-
-1999-08-14  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (update_subwindow_cachel): make it less brittle.
-
-1999-08-04  Mike Woolley  <mike@bulsara.com>
-
-	* scrollbar-msw.c (mswindows_handle_mousewheel_event): Fixed
- 	problem in wheelmouse code occurring when the horizontal scrollbar
- 	is enabled but not visible.
-
-1999-08-08  Andy Piper  <andyp@beasys.com>
-
-	* toolbar-msw.c (mswindows_redraw_frame_toolbars): new function.
-	(console_type_create_toolbar_mswindows): use it.
-
-	* glyphs.c (Fset_image_instance_property): fiddly reorganisation.
-
-	* redisplay-output.c (redisplay_output_display_block): unmap
- 	subwindows in the block area before outputting the block.
+2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>
 
-	* event-msw.c (mswindows_wnd_proc): check the update rect before
- 	painting and disable expose registration while painting.
-
-	* glyphs.c (register_ignored_expose): check
- 	hold_ignored_expose_registration before registering expose events.
-
-	* redisplay.c (redisplay_frame): reset the subwindow cache before
- 	displaying the gutter.
-
-	* glyphs-msw.c (mswindows_map_subwindow): move the window before
- 	mapping.
-
-	* gutter.c (update_frame_gutters): check for glyphs_changed as if
- 	it is the subwindow cache will have been reset.
-
-1999-08-06  Andy Piper  <andyp@beasys.com>
-
-	* gui-x.c (button_item_to_widget_value): cope with strings.
-
-	* glyphs.h: declare global widget functions.
-	(IIFORMAT_HAS_SHARED_DEVMETHOD): new macro.
-
-	* glyphs-x.c (x_combo_box_instantiate): do generic initialization
- 	here. remove dead code.
-	(image_instantiator_format_create_glyphs_x): enable combo boxes
- 	for Motif 2.0.
-
-	* glyphs-widget.c (widget_instantiate_1): make non-static.
-	(tree_view_instantiate): renamed from combo_box_instantiate.
-	(image_instantiator_format_create_glyphs_widget): use new/changed methods.
-
-	* glyphs-msw.c (mswindows_combo_box_instantiate): do generic
- 	initialization here.
-
-	* lwlib-Xm.c (xm_update_combo_box): new function.
-	(xm_update_one_widget): call it.
-	(xm_update_one_value): deal with combo boxes as well as lists.
-	(xm_create_combo_box): create a drop-down combo box.
-
-	* toolbar-msw.c (mswindows_output_toolbar): call
- 	mswindows_move_toolbar.
-
-1999-08-05  Andy Piper  <andyp@beasys.com>
-
-	* window.c (Fcurrent_pixel_column): new function. use display
- 	lines to calculate pixel position of point.
-	* window.c (syms_of_window): declare it.
-
-1999-08-05  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (check_for_ignored_expose): ignore exposures wholly
- 	contained in our ignore list.
-
-	* buffer.c (Frecord_buffer): add call to record-buffer-hook.
-	(syms_of_buffer): declare record-buffer-hook.
-
-	* s/mingw32.h: define mousewheel things.
-
-1999-08-04  Mike Woolley <mike@bulsara.com>
-
-	* windowsnt.h (_WIN32_WINNT): enable for win95
+	* window.c (Fwindow_minibuffer_p): Make WINDOW optional.
 
-	* s/cygwin32.h: define mousewheel things.
-
-	* scrollbar-msw.h: declare mousewheel handler.
-
-	* scrollbar-msw.c (mswindows_handle_mousewheel_event): new function.
-
-1999-08-04  Andy Piper  <andy@xemacs.org>
-
-	* gui-x.c (gui_items_to_widget_values): remove unused variable.
-	(gui_items_to_widget_values_1): ditto.
-
-	* gui-x.h: unconditionally define since it is used everywhere.
-
-1999-08-04  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_finalize_image_instance): only free pixels if we
- 	have that type of image.
-
-1999-07-30  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_unmap_subwindows): add comparison
- 	subwindow to not unmap if required.
-	(redisplay_unmap_subwindows_maybe): comparison is Qnil.
-	(redisplay_unmap_subwindows_except_us): new function.
-	(redisplay_output_subwindow): use it to unmap windows in the area
- 	we are displaying into.
-
-	* glyphs.c (update_subwindow_cachel_data): always update as we
- 	only ever get called when an update is required.
-	(update_subwindow_cachel): new function. sync a subwindow with its
- 	cachel.
-	(Fresize_subwindow): use it.
-	(register_ignored_expose): make sure we set the tail correctly.
-
-1999-07-28  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_clear_bottom_of_window): remove
- 	unneeded device.
-
-	* gutter.c (redraw_exposed_gutter): unmap subwindows from the
- 	whole gutter.
-
-	* gui.h: declare parse_gui_item_tree_list and
- 	parse_gui_item_tree_children.
-
-	* gui.c (parse_gui_item_tree_item): new function for parsing item
- 	lists into gui-item trees.
-	(parse_gui_item_tree_children): ditto.
-	(parse_gui_item_tree_list): ditto.
-
-	* gui-x.h: declare gui_items_to_widget_values.
-
-	* gui-x.c (gui_items_to_widget_values_1): new function for
- 	recursively parsing gui-items into widget_values.
-	(gui_item_children_to_widget_values): ditto.
-	(gui_items_to_widget_values): ditto.
-	(sanity_check_lwlib): add widgets macrolets.
-
-	* glyphs.h (IMAGE_INSTANCE_WIDGET_ITEMS): rename from *ITEM.
-	(XIMAGE_INSTANCE_WIDGET_ITEMS): ditto.
-	(IMAGE_INSTANCE_WIDGET_ITEM): rename from *SINGLE_ITEM.
-	(XIMAGE_INSTANCE_WIDGET_ITEM): ditto.
-	(struct expose_ignore): new structure for storing ignorable expose
- 	events.
+2000-01-14  Hrvoje Niksic  <hniksic@iskon.hr>
 
-	* glyphs.c (valid_image_instantiator_format_p): fix so that using
- 	a console-type as a locale works.
-	(mark_image_instance): ITEM->ITEMS.
-	(image_instance_equal): ditto.
-	(image_instance_hash): ditto.
-	(struct expose_ignore_blocktype): new blocktype.
-	(check_for_ignored_expose): new function. checks frame exposure
- 	list for events to ignore.
-	(register_ignored_expose): new function. registers an expose event
- 	as ignorable.
-	(unmap_subwindow): register the expose event as ignorable.
-	(vars_of_glyphs): initialise the exposure blocktype.
-
-	* glyphs-x.c (x_finalize_image_instance): use lw_destroy_widget.
-	(x_update_subwindow): modify all widgets using widget_value tree
- 	rather than just a single widget value.
-	(x_widget_instantiate): LWLIB_USES_MOTIF -> LWLIB_WIDGETS_MOTIF.
-	make sure widgets don't resize themselves.
-	(x_tab_control_instantiate): new function. use lwlib tab functions.
-	(x_tab_control_set_property): new function.
-	(image_instantiator_format_create_glyphs_x): add tab_control.
-
-	* glyphs-widget.c (widget_text_to_pixel_conversion): calculate
- 	slightly more sensibly.
-	(initialize_widget_image_instance): ITEM->ITEMS.
-	(widget_instantiate_1): parse gui items generically into the ITEMS
- 	entry.
-
-	* glyphs-msw.c (mswindows_update_subwindow): replace
- 	SINGLE_ITEM->ITEM.
-	(mswindows_register_widget_instance): ditto.
-	(add_tree_item): modify to use new pre-initialised gui-item
- 	structure.
-	(add_tab_item): ditto.
-	(mswindows_tab_control_instantiate): ditto.
-	(mswindows_tab_control_set_property): ditto.
-	(image_instantiator_format_create_glyphs_mswindows): predicate
- 	existance of widgets on HAVE_WIDGETS.
-
-	* frame.h (struct frame): add subwindow_exposures variables.
-
-	* frame.c (allocate_frame_core): reset subwindow_exposures links.
-
-	* event-msw.c (mswindows_wnd_proc): check for ignored
- 	expose events before redrawing.
-
-	* event-Xt.c (emacs_Xt_handle_magic_event): check for ignored
- 	expose events before redrawing.
-
-1999-07-30  SL Baur  <steve@xemacs.org>
-
-	* scrollbar-x.c: should include EmacsFrame.h.
-	From Jeff Miller <jmiller@smart.net>
-
-1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.19 is released
-
-1999-07-27  Jeff Miller  <jmiller@smart.net>
-
-	* add a "#ifdef HAVE_MENUBARS"  wrapper to gui.c around
-	  menubar_show_keybindings.
-
-1999-07-23  SL Baur  <steve@miho>
-
-	* mule-charset.c (syms_of_mule_charset): Delete duplicated
-	definition of Qccl_program.
+	* print.c (print_error_message): Call print_prepare().
 
-	* mule-ccl.h: Make a global declaration of it here.
-
-1999-07-20  Bob Weiner  <weiner@beopen.com>
-
-	* s/sco7.h: Added from rr@sco.com.
-
-1999-06-25  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'.
-
-1999-06-24  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (mule_decode): Setup `str->ccl.last_block'.
-	(mule_encode): Likewise.
-
-	* mule-ccl.c (Qccl_program): New variable.
-	(CCL_SUSPEND): New macro.
-	(CCL_INVALID_CMD): New macro.
-	(CCL_READ_CHAR): Don't regard as invalid command while processing
-	the last block even if input is empty; use
-	`CCL_STAT_SUSPEND_BY_SRC' instead of `CCL_STAT_SUSPEND'.
-	(vars_of_mule_ccl): Setup `Qccl_program' and `Qccl_program_idx'.
-
-	* mule-ccl.h (CCL_STAT_SUCCESS): Moved from mule-ccl.c.
-	(CCL_STAT_SUSPEND_BY_SRC): Imported from Emacs 20.3.10.
-	(CCL_STAT_SUSPEND_BY_DST): Likewise.
-	(CCL_STAT_INVALID_CMD): Moved from mule-ccl.c; change value from 2.
-	(CCL_STAT_QUIT): Moved from mule-ccl.c; change value from 3.
-
-1999-05-04  Ken'ichi Handa  <handa@gnu.org>
-
-	* mule-ccl.h (struct ccl_program): New member stack_idx.
-
-	* mule-ccl.c (ccl_prog_stack_struct): Declare it as static.
-	(ccl_driver): Setup stack_idx and ccl_prog correctly.  Update them
-	before returing.
-	(setup_ccl_program): Initialize ccl->stack_idx to 0.
-
-1998-10-12  Kenichi Handa  <handa@etl.go.jp>
-
-	* mule-ccl.c (CCL_DECODE_SJIS, CCL_ENCODE_SJIS): Swap the
-	definitions.
-
-1998-08-18  Kenichi Handa  <handa@etl.go.jp>
-
-	* mule-ccl.c (CCL_READ_CHAR): If eof is encounterd while
-	processing the last block, don't just finish but processes eol
-	block of the current CCL program.
-	(ccl_driver): Add a new jump label ccl_repeat for the above
-	change.
-
-1998-04-15  Kenichi Handa  <handa@etl.go.jp>
-
-	* mule-ccl.c: Typo in comments fixed.
-	(Qccl_program_idx): New variables.
-	(CCL_ReadMultibyteChar2): Macro name changed from
-	CCL_ReadMultibyteCharacter.
-	(CCL_WriteMultibyteChar2): Macro name changed from
-	CCL_WriteMultibyteChar2.
-	(ccl_driver): Adjusted for the above changes.
-	(resolve_symbol_ccl_program): New function.
-	(Fccl_execute): The arg CCL-PROGRAM can be a symbol of CCL
-	program.  If CCL-PRGRAM is a vector, convert symbols in it to ID
-	numbers by resolve_symbol_ccl_program.
-	(Fccl_execute_on_string): Likewise.
-	(Fregister_ccl_program): If the arg CCL-PRGRAM is a vector,
-	convert symbols in it to ID numbers by resolve_symbol_ccl_program.
+2000-01-14  Martin Buchholz  <martin@xemacs.org>
 
-1998-01-21  Kenichi Handa  <handa@etl.go.jp>
-
-	* mule-ccl.h: (struct ccl_program): New member private_state.
-
-	* mule-ccl.c
-	(CCL_Call): Fix the comment.
-	(CCL_ReadMultibyteCharacter, CCL_WriteMultibyteCharacter): New
-	macros for CCL Commands.
-	(EXCMD): New macro.
-	(ccl_driver): New case lable `CCL_Extention'.
-	(setup_ccl_program): Initialize the member `private_state' of CCL.
-
-1999-07-08  Katsumi Yamaoka <yamaoka@jpl.org>
-
-	* keymap.c (copy_keymap_internal): Inherit the default binding.
-
-1999-07-14  Kazuyuki IENAGA <kazz@imasy.or.jp>
-
-	* event-Xt.c (handle_focus_event_1): Re-enable Motif/XIM to get
-	focus the event (XIM_focus_event).
-	(emacs_Xt_handle_magic_event): No side effect on Motif/XIM because
-	XIM_SetGeometry does nothing in input_method_motif.c, but re-unify
-	the interface for future use (XIM_SetGeometry).
-	* redisplay-x.c (x_output_string): Re-enable Motif/XIM to set spot
-	location (XIM_SetSpotLocation).
-	(x_output_eol_cursor): Ditto.
-
-1999-07-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* gdbinit (pobj): change lrecord_foo to &lrecord_foo to match
-	Olivier's change to lrecord.h of 1999-04-22
-
-1999-07-20  Robert Pluim  <rpluim@bigfoot.com>
-
-	* gutter.c (redraw_exposed_gutter): Change type of pos from
-	enum toolbar_pos -> enum gutter_pos, since former is only defined
-	if toolbar support is.
-
-1999-07-19  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_resize_subwindow): cope with widgets as well as
- 	subwindows.
-
-	* gutter.c (gutter_validate): new function for the gutter specifier.
-	(specifier_type_create_gutter): declare specifier validator.
-
-	* buffer.h (INC_CHARBYTIND): add for no error checking version.
-
-1999-07-18  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
-
-	* glyphs-msw.c (console_type_create_glyphs_mswindows): add
- 	resize_subwindow.
-	(mswindows_resize_subwindow): new function.
-
-	* gutter.c (redraw_exposed_gutter): only reset the
- 	current_display_lines if non-zero.
-	(Fgutter_pixel_height): new function.
-	(Fgutter_pixel_width): new function.
-
-	* event-msw.c (mswindows_wnd_proc): set the mask of the parameter
- 	we want to retrive from the tab control.
-
-1999-07-17  Andy Piper  <andy@xemacs.org>
-
-	* window.c (change_window_height): mark gutters changed when we're
- 	done.
-
-	* gutter.c (specifier_vars_of_gutter): make defaults more
- 	sensible.
-
-	* gutter.h (WINDOW_REAL_GUTTER_BORDER_WIDTH): adjust to be 0 for 0
- 	height gutter.
-	(DEFAULT_GUTTER_WIDTH): change.
-	(DEFAULT_GUTTER_BORDER_WIDTH): change.
-
-1999-07-18  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
-
-1999-07-16  Andy Piper  <andy@xemacs.org>
-
-	* frame.c (Fmake_frame): call init_frame_gutters().
-
-	* redisplay.c (add_emchar_rune): use string functions if we are
- 	working with a string.
-	(position_redisplay_data_type): add string element.
-
-1999-07-15  Andy Piper  <andy@xemacs.org>
-
-	* winslots.h: add real_gutter_size slots to hold the actual gutter
- 	size. This is important for autodetected sizes.
-
-	* gutter.c (calculate_gutter_size): calculate size for gutters
- 	that have 'autodetect size.
-
-	* redisplay-msw.c (mswindows_output_vertical_divider): adjust
- 	extent of divider for gutters.
-
-	* redisplay-x.c (x_output_vertical_divider): adjust extent of
- 	divider for gutters.
-
-	* scrollbar.c (update_scrollbar_instance): adjust scrollbar
- 	position to take into account the gutters.
-
-	* redisplay.c (generate_modeline): adjust modeline position to
- 	take into account the gutters.
-
-1999-07-14  Andy Piper  <andy@xemacs.org>
-
-	* gutter.c (frame_topmost_window): new function.
-	(frame_bottommost_window): ditto.
-	(frame_leftmost_window): ditto.
-	(frame_rightmost_window): ditto.
-
-1999-07-13  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.c (calculate_display_line_boundaries): use text
- 	boundaries so that gutters get handled properly.
-
-1999-07-12  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c (x_widget_instantiate): set the font Motif-style if
- 	we're using Motif.
-
-	* redisplay-output.c (redisplay_clear_to_window_end): generalised
- 	from redisplay-x.c
+	* .dbxrc: Renamed from dbxrc.
 
-	* redisplay-x.c (redisplay_clear_to_window_end): moved to
- 	redisplay.c
-
-	* redisplay-msw.c (redisplay_clear_to_window_end): deleted.
-
-	* gutter.c: new file - implements gutters. All new functions are
- 	semantically equivalent to the toolbar functions.
-	(gutter_was_visible): new function.
-	(get_gutter_coords): ditto.
-	(output_gutter): ditto.
-	(clear_gutter): ditto.
-	(update_frame_gutters): ditto.
-	(redraw_exposed_gutter): ditto.
-	(redraw_exposed_gutters): ditto.
-	(free_frame_gutters): ditto.
-	(init_frame_gutters): ditto.
-	(decode_gutter_position): ditto.
-	(Fset_default_gutter_position): ditto.
-	(Fset_default_gutter_position): ditto.
-	(Fdefault_gutter_position): ditto.
-	(gutter_after_change): ditto.
-	(Fgutter_specifier_p): ditto.
-	(recompute_overlaying_specifier): ditto.
-	(gutter_specs_changed): ditto.
-	(default_gutter_specs_changed): ditto.
-	(gutter_geometry_changed_in_window): ditto.
-	(default_gutter_size_changed_in_window): ditto.
-	(default_gutter_border_width_changed_in_window): ditto.
-	(default_gutter_visible_p_changed_in_window): ditto.
-	(syms_of_gutter): ditto.
-	(vars_of_gutter): ditto.
-	(specifier_type_create_gutter): ditto.
-	(specifier_vars_of_gutter): ditto.
-
-	* gutter.h: new file. Contains gutter constants and sizing macros
- 	similar to those for the toolbar.
-
-	* winslots.h: add gutter variables.
-
-	* window.h: declare window_is_* functions.
-
-	* window.c (window_is_lowest): make non-static.
-	(window_is_highest): ditto.
-	(window_top_toolbar_height): deleted.
-	(window_bottom_toolbar_height): deleted.
-	(window_left_toolbar_width): deleted.
-	(window_right_toolbar_width): deleted.
-	(window_top_gutter_height): add gutter sizing.
-	(window_bottom_gutter_height): ditto.
-	(window_left_gutter_width): ditto.
-	(window_right_gutter_width): ditto.
-
-	* symsinit.h: declarations for gutters vars etc.
-
-	* search.c (bi_find_next_emchar_in_string): new function.
-
-	* scrollbar.c (update_scrollbar_instance): remove reference to
- 	window_bottom_toolbar_height which did nothing.
-
-	* redisplay.h (struct display_line): add face indices for
- 	overriding defaults in output_display_line.
-	Add gutter_changed flags and declarations.
-
-	* redisplay.c (create_string_text_block): new function, similar to
- 	create_text_block but for strings. Display tables etc are used
- 	from the currently selected window.
-	(generate_string_display_line): ditto. Similar to
- 	generate_display_line.
-	(generate_displayable_area): generate display lines for a given
- 	area on a frame. Input is the string, with associated extents, to
- 	display.
-	(redisplay_frame): add gutter_changed check.
-	(redisplay_device): ditto.
-	(redisplay_without_hooks): ditto.
-
-	* redisplay-x.c (bevel_modeline): moved to redisplay.c.
-	(x_redraw_exposed_area): redraw exposed gutters.
-	(x_bevel_area): new redisplay device method.
-	(x_type_create_redisplay_mswindows): add bevel_area device method.
-	(x_output_display_block): fiddly Martin-style cleanup.
-	(x_output_vertical_divider): use bevel_area.
-
-	* redisplay-output.c (output_display_line): check display_lines
- 	for face information before using defaults.
-	(bevel_modeline): new function, calls bevel_area with appropriate
- 	values.
-
-	* redisplay-msw.c (bevel_modeline): moved to redisplay.c.
-	(mswindows_redraw_exposed_area): redraw exposed gutters.
-	(mswindows_bevel_area): new redisplay device method.
-	(console_type_create_redisplay_mswindows): add bevel_area device
- 	method.
-
-	* indent.c (string_column_at_point): add column_at_point but for
- 	strings.
-
-	* glyphs-x.c (image_instantiator_format_create_glyphs_x): only
- 	instantiate widgets that we have a toolkit for.
-
-	* general.c: add Qgutter.
-
-	* frame.h (struct frame): add display lines for gutters and
- 	visibility flags.
-
-	* frame.c (set_frame_selected_window): mark gutters changed.
-
-	* emacs.c (main_1): add gutter initialisation.
-
-	* device.h (struct device): add gutter_changed flag and macros to
- 	manipulate it.
-
-	* console.h (struct console_methods): new bevel area redisplay
- 	method.
-
-	* buffer.h (REAL_INC_CHARBYTIND): new macro for strings as
- 	REAL_INC_BYTIND is for buffers.
-	(INC_CHARPTR): ditto.
-
-	* Makefile.in.in (objs): add gutter.o
-
-1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.18 is released
-
-1999-07-08  SL Baur  <steve@mule.m17n.org>
-
-	* event-Xt.c (handle_focus_event_1): Guard FRAME_X_XIC with
-	XIM_XLIB.
-	(emacs_Xt_handle_magic_event): Ditto.
-	* redisplay-x.c (x_output_string): Ditto.
-	(x_output_eol_cursor): Ditto.
-
-1999-06-30  Kazuyuki IENAGA <kazz@imasy.or.jp>
+	* events.c (event_to_character):
+	Use `assert (foo)' instead of `if (!foo) abort()'
 
-	*  event-Xt.c, input-method-xlib.c, redisplay-x.c: Avoid the
-	problem that when XIM is destroyed or missed with some reason,
-	xemacs will die.  Now xim=xlib waits the XIM will be ready and
-	endures the case of XIM end up.
-
-1999-07-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* tooltalk.c (init_tooltalk): save signal actions for SIGQUIT,
-	SIGINT and SIGCHLD before calling tt_open and restore the
-	afterwards. This fixes e.g. the zombie subprocesses on Solaris
-
-1999-07-06  SL Baur  <steve@xemacs.org>
-
-	* s/linux.h: gcc-2.8 changes for powerpc
-	From Justin Vallon <vallon@mindspring.com>
-
-1999-07-05  Didier Verna  <verna@inf.enst.fr>
-
-	* indent.c: new symbol Qcoerce.
-	(Fmove_to_column): use it + doc string update.
-
-1999-07-04  Andy Piper  <andy@xemacs.org>
-
-	* console.c: undo earlier Fprovide changes.
-	* fns.c: ditto.
-	* console.h: ditto.
-
-	* console-tty.c (image_instantiator_format_create_glyphs_tty): new
- 	function. validate appropriate image formats for tty.
-
-	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM):
- 	initialize consoles parameter.
-	(struct image_instantiator_methods): add consoles parameter.
-	(IIFORMAT_VALID_CONSOLE): new function. validate the format on the
- 	console.
-	(INITIALIZE_DEVICE_IIFORMAT): validate the format on the given
- 	console.
-
-	* glyphs-msw.c: declare instantiators for later use.
-	(image_instantiator_format_create_glyphs_mswindows): validate xpm
- 	and friends on the mswindows console.
-	* glyphs-x.c: ditto.
-
-	* glyphs.c (valid_image_instantiator_format_p): disallow glyphs
- 	that have not been registered on the supplied device.
-	(Fvalid_image_instantiator_format_p): add locale argument.
-	(instantiate_image_instantiator): valid image instantiator on the
- 	device.
-
-	* symsinit.h: add image_instantiator_format_create_glyphs_tty()
- 	declaration.
-
-	* emacs.c (main_1): add call to
- 	image_instantiator_format_create_glyphs_tty().
-
-1999-06-29  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp.h: Add #include <stddef.h>.
-
-	* sysdep.c: Remove #include <stddef.h>.
-	* symbols.c: Remove #include <stddef.h>.
-	* sheap.c: Remove #include <stddef.h>.
-	* opaque.c: Remove #include <stddef.h>.
-	* nt.c: Remove #include <stddef.h>.
-	* mule-charset.c: Remove #include <stddef.h>.
-	* marker.c: Remove #include <stddef.h>.
-	* file-coding.c: Remove #include <stddef.h>.
-	* extents.c: Remove #include <stddef.h>.
-	* elhash.c: Remove #include <stddef.h>.
-	* data.c: Remove #include <stddef.h>.
-	* chartab.c: Remove #include <stddef.h>.
-	* bytecode.c: Remove #include <stddef.h>.
-	* alloc.c: Remove #include <stddef.h>.  Fix vector description
-
-1999-06-30  SL Baur  <steve@miho.m17n.org>
-
-	* editfns.c: Document "%s" format spec.
-	Suggested by Bob Weiner <weiner@altrasoft.com>
-
-1999-06-29  Andy Piper  <andy@xemacs.org>
-
-	* event-msw.c: fix definition booboo.
-
-1999-06-28  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-x.c: change tree -> tree-view, progress ->
- 	progress_gauge, edit -> edit-field, tab -> tab-control, combo ->
- 	combo-box.
-	(complex_vars_of_glyphs_x): provide-on-console the implemented
- 	widget types.
-
-	* glyphs-msw.c: ditto.
-	(complex_vars_of_glyphs_mswindows): ditto.
-
-	* lisp.h: add Fprovide_on_console.
-
-	* fns.c (Ffeaturep): add extra optional console argument.
-	(Fprovide_on_console): like Fprovide but provides only on the
- 	specified console-type.
-	(Frequire): check console-features as well as global features.
-
-	* console.c (Fconsole_features): new function. return features for
- 	this console.
-	(syms_of_console): add Fconsole_features.
-
-	* console.h (CONMETH_FEATURES): new function for accessing features.
-	(CONSOLE_FEATURES): ditto.
-	(struct console_methods): add features slot.
-	(INITIALIZE_CONSOLE_TYPE): initialize features slot.
-
-1999-06-28  Andy Piper  <andy@xemacs.org>
-
-	* event-Xt.c (handle_focus_event_1): conditionally compile for
- 	X11R5.
-
-	* s/cygwin32.h: fix me website address.
-
-	* event-msw.c: add NMHDR for pre b20 cygwin builds.
-
-	* gui-x.c (button_item_to_widget_value): only add callback if it
- 	is non-nil.
+	* .gdbinit (xtype): Add documentation.
+	* .gdbinit (check-temacs): New function.
+	* .gdbinit (check-xemacs): New function.
+	* dbxrc (check-xemacs): New function.
+	* dbxrc (check-xemacs): New function.
 
-	* glyphs-x.c: add progress, edit and combo instantiators.
-	(x_widget_set_property): new function. uses lwlib to set widget
- 	values.
-	(x_widget_property): new function. uses lwlib to get widget
- 	values.
-	(x_button_instantiate): support images in buttons.
-	(x_button_property): new function. use lwlib to get the selected
- 	state.
-	(x_progress_instantiate): new function for instantiating progress
- 	gauges.
-	(x_progress_set_property): new function. sets the progress gauge
- 	position.
-	(x_edit_instantiate): new function. for instantiating edit fields.
-	(x_combo_instantiate): new function. for instantiating combo
- 	boxes.
-	(image_instantiator_format_create_glyphs_x): add new device ii
- 	formats.
-
-	* glyphs-msw.c (mswindows_tab_instantiate): remove redundant var.
-
-	* console.h (CONSOLE_FEATURES): new features accesor.
-
-	* conslots.h (MARKED_SLOT): add features entry.
-
-1999-06-25  Andy Piper  <andy@xemacs.org>
-
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1): use new
- 	gui functions.
-
-	* menubar-msw.c: move MAX_MENUITEM_LENGTH to gui.h
-
-	* gui.h (struct Lisp_Gui_Item): add accelerator.
-
-	* gui.c (gui_item_add_keyval_pair): deal with accelerators.
-	(gui_item_init): ditto.
-	(gui_add_item_keywords_to_plist): ditto.
-	(mark_gui_item): ditto.
-	(gui_item_hash): ditto.
-	(gui_item_accelerator): new function.
-	(gui_name_accelerator): new function stolen from gui-x.c
-
-	* gui-x.c (popup_selection_callback): always define. mark
- 	subwindows changed after calling a callback.
-	(menu_name_to_accelerator): deleted.
-	(button_item_to_widget_value): forward gui_item things to gui_item
- 	functions.
-
-	* glyphs-x.h (struct x_subwindow_data): add data for widgets. add
- 	appropriate accesors.
-
-	* glyphs-x.c: declare new glyph formats.
-	(x_finalize_image_instance): unmanage and destroy widgets if they
- 	exist.
-	(x_unmap_subwindow): handle widgets specially.
-	(x_map_subwindow): ditto. offset display of widgets by offset of
- 	text widget within container.
-	(x_update_subwindow): new function. call lw_modify_all_widgets
- 	when we are a widget.
-	(x_widget_instantiate): new function for generically creating
- 	widgets-glyphs. toolkit specifics forwarded to lwlib.
-	(x_button_instantiate): new function for instantiating
- 	widgets-glyph buttons.
-	(console_type_create_glyphs_x): register update_subwindow.
-	(image_instantiator_format_create_glyphs_x): register widget and
- 	button types.
-
-	* event-msw.c (mswindows_wnd_proc): remove redundant variable.
-
-	* event-Xt.c (x_event_to_emacs_event): call handle_focus_event_1
- 	when we get a button press in case we do not have the focus.
-	(handle_focus_event_1): set the keyboard focus to the text widget
- 	if we do not have it.
-
-	* dialog-x.c (dbox_descriptor_to_widget_value): use new gui_item
- 	functions.
-
-1999-06-24  SL Baur  <steve@miho.m17n.org>
-
-	* syntax.c (scan_words): Restore non-Mule code.
-	(word_constituent_p): Restore.
-
-1999-06-23  Olivier Galibert  <galibert@pobox.com>
-
-	* config.h.in: Add missing #undef *_USER_DEFINED.
-
-1999-06-23  SL Baur  <steve@miho.m17n.org>
-
-	* lisp.h (set_bit_vector_bit): Force promotion to unsigned long
-	int (fixes a 64-bit problem).
-
-	* chartab.c (word_boundary_p): Use EQ not == for lisp_object
-	comparison.
-
-1999-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* paths.h.in (PATH_DOC): Made doc-directory configurable.
-
-1999-06-22  Olivier Galibert  <galibert@pobox.com>
-
-	* lrecord.h: Added basic external description system.
-
-	* symbols.c: Added symbol, symbol-value-buffer-local,
- 	symbol-value-lisp-magic and symbol-value-varalias description.
-	* mule-charset.c: Added charset description.
-	* marker.c: Added marker description.
-	* keymap.c: Added keymap description.
-	* glyphs.c: Added glyph description.
-	* floatfns.c: Added float description.
-	* file-coding.c: Added coding-system description.
-	* extents.c: Added extent description.
-	* elhash.c: Added hash-table description.
-	* data.c: Added weak-list desciption.
-	* chartab.c: Added char-table-entry and char-table description.
-	* bytecode.c: Added compiled-function description.
-	* alloc.c: Added cons, vector and string description.
-
-1999-06-22  Olivier Galibert  <galibert@pobox.com>
-
-	* lrecord.h (struct lrecord_header): Reduced size to 4 bytes.
-	Updated everything to the removal of the "flags" substructure.
-
-	* lisp.h (subr_lheader_initializer): Updated.
-	* symeval.h (symbol_value_forward_lheader_initializer): Updated.
-
-1999-06-20  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* syntax.c (word_constituent_p): Deleted.
-	(scan_words): Use `WORD_BOUNDARY_P'.
-
-	* chartab.c (Vword_combining_categories): New variable.
-	(Vword_separating_categories): Likewise.
-	(CATEGORYP): New macro.
-	(CATEGORY_SET): Likewise.
-	(CATEGORY_MEMBER): Likewise.
-	(word_boundary_p): New function.
-	(complex_vars_of_chartab): Set up new variable
-	`word-combining-categories' and `word-separating-categories'.
-
-1999-06-18  Olivier Galibert  <galibert@pobox.com>
-
-	* lrecord.h: Added description as a placehold in the lrecord
- 	implementation structures.  Added the parameter to all constructor
- 	defines.
+2000-01-14  Andy Piper  <andy@xemacs.org>
 
-	* alloc.c: Added placeholders.
-	* buffer.c: Ditto.
-	* bytecode.c: Ditto.
-	* chartab.c: Ditto.
-	* console.c: Ditto.
-	* data.c: Ditto.
-	* database.c: Ditto.
-	* device.c: Ditto.
-	* eldap.c: Ditto.
-	* elhash.c: Ditto.
-	* eval.c: Ditto.
-	* event-stream.c: Ditto.
-	* events.c: Ditto.
-	* extents.c: Ditto.
-	* faces.c: Ditto.
-	* file-coding.c: Ditto.
-	* floatfns.c: Ditto.
-	* fns.c: Ditto.
-	* frame.c: Ditto.
-	* glyphs.c: Ditto.
-	* gui-x.c: Ditto.
-	* keymap.c: Ditto.
-	* lstream.c: Ditto.
-	* marker.c: Ditto.
-	* mule-charset.c: Ditto.
-	* objects.c: Ditto.
-	* opaque.c: Ditto.
-	* process.c: Ditto.
-	* rangetab.c: Ditto.
-	* specifier.c: Ditto.
-	* symbols.c: Ditto.
-	* toolbar.c: Ditto.
-	* tooltalk.c: Ditto.
-	* window.c: Ditto.
-
-1999-06-22  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.17 is released
-
-1999-06-13  Oscar Figueiredo  <oscar@xemacs.org>
-
-	* config.h.in (HAVE_LDAP_SET_OPTION): New define
-	(HAVE_LDAP_GET_LDERRNO): Ditto
-	(HAVE_LDAP_RESULT2ERROR): Ditto
-	(HAVE_LDAP_PARSE_RESULT): Ditto
-	(HAVE_UMICH_LDAP): Removed
-	(HAVE_NS_LDAP): Removed
-
-	* eldap.h (struct Lisp_LDAP): Removed the `livep' member as
-	suggested by Olivier Galibert
-	(CHECK_LIVE_LDAP): Test on `ld' instead of `livep'
-
-	* eldap.c: Take the removal of `livep' into account in all the
-	necessary functions
-	(signal_ldap_error): Take two additional parameters
-	Added new finer compilation conditions in order to use
-	ldap_parse_result or ldap_result2error if available
-	(Fldap_open): Conform to this new API
-	(Fldap_search_internal): Ditto
-
-1999-06-17  SL Baur  <steve@miho.m17n.org>
-
-	* data.c (struct int_or_double): Should use EMACS_INT not int.
-
-1999-06-16  Norbert Koch  <n.koch@eai-delta.de>
-
-	* redisplay-msw.c: Run 'ccl_driver' with 'CCL_MODE_ENCODING' as in
-	redisplay-x.c
-
-1999-06-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* redisplay-x.c (separate_textual_runs): Run `ccl_driver' with
-	`CCL_MODE_ENCODING'.
-
-	* file-coding.c (mule_decode): Run `ccl_driver' with
-	`CCL_MODE_DECODING'.
-	(mule_encode): Run `ccl_driver' with `CCL_MODE_ENCODING'.
-
-	* mule-ccl.c (CCL_WRITE_CHAR): Refer `conversion_mode'.
-	(ccl_driver): Add new argument `conversion_mode'.
-	(Fccl_execute): Run `ccl_driver' with `CCL_MODE_ENCODING'.
-	(Fccl_execute_on_string): Likewise [perhaps it is better to add
-	new optional argument].
-
-	* mule-ccl.h (CCL_MODE_ENCODING): New macro.
-	(CCL_MODE_DECODING): New macro.
-	(ccl_driver): Add new argument `conversion_mode'.
-
-1999-06-15  SL Baur  <steve@miho.m17n.org>
-
-	* mule-charset.c (Fsplit_char): New subr.
-	(Fchar_octet): delete.
-	(syms_of_mule_charset): DEFSUBR it.
-
-1999-06-13  Andy Piper  <andy@xemacs.org>
-
-	* menubar.h: update declarations involving gui_items.
-
-	* lisp.h: declare Lisp_Gui_Item.
-
-	* glyphs.h (struct Lisp_Image_Instance): update type of gui_item.
-
-	* glyphs.c (mark_image_instance): modify for new lisp-based gui_items.
-	(print_image_instance): ditto.
-	(image_instance_equal): ditto.
-	(image_instance_hash): ditto.
-
-	* event-msw.c (mswindows_need_event): assert badly_p status.
-	(mswindows_wnd_proc): modify WM_NOTIFY handling to cope with
- 	callbacks in tree-view and tab-control widgets.
-	(emacs_mswindows_next_event): modify use of
- 	mswindows_dequeue_dispatch_event.
-
-	* dialog-msw.c (mswindows_popup_dialog_box): modify for new
- 	lisp-based gui_items.
+	* glyphs-widget.c (widget_query_geometry): Make sure that we
+	calculate default dimensions correctly.
 
-	* glyphs-msw.c (mswindows_update_subwindow): update use of
- 	gui_items.
-	(mswindows_register_gui_item): new function.
-	(mswindows_register_gui_item): fix to use lisp gui_items.
-	(mswindows_widget_instantiate): ditto.
-	(mswindows_button_instantiate): ditto.
-	(add_tree_item): new function to recursively add tree view
- 	elements.
-	(add_tree_item_list): ditto.
-	(mswindows_tree_instantiate): new function. instantiate tree view
- 	controls.
-	(add_tab_item): new function to add tabs to a tab control.
-	(mswindows_tab_instantiate): new function. instantiate tab
- 	controls.
-	(image_instantiator_format_create_glyphs_mswindows): add tree view
- 	and tab controls.
-	(vars_of_glyphs_mswindows): ditto.
-
-	* glyphs-widget.c (check_valid_item_list_1): allow nested lists in
- 	item lists.
-	(check_valid_item_list): ditto.
-	(initialize_widget_image_instance): fix to use new lisp gui_item.
-	(widget_instantiate_1): allow the setting of default textwidth in
- 	characters.
-	(widget_instantiate): change to use new widget_instantiate_1
- 	signature.
-	(combo_instantiate): ditto.
-	(static_instantiate): ditto.
-	(tab_instantiate): new function for tab widgets.
-	(image_instantiator_format_create_glyphs_widget): add tab and tree
- 	view widgets.
-
-	* menubar-msw.c (displayable_menu_item): convert to use lisp
- 	gui_items.
-	(populate_menu_add_item): ditto.
-	(populate_or_checksum_helper): ditto.
-
-	* menubar.c (menu_parse_submenu_keywords): convert to use lisp
- 	gui_items.
-	(Fmenu_find_real_submenu): ditto.
-
-	* gui.h (struct Lisp_Gui_Item): make gui_item a lisp oebjct.
-
-	* gui.c (gui_item_add_keyval_pair): gui_items are now lisp
- 	objects, convert functions that use them accordingly.
-	(gui_item_init): ditto.
-	(gui_item_active_p): ditto.
-	(gui_item_selected_p): ditto.
-	(gui_item_included_p): ditto.
-	(gui_item_display_flush_left): ditto.
-	(gui_item_display_flush_right): ditto.
-	(mark_gui_item): ditto.
-	(allocate_gui_item): new function to create a gui_item.
-	(make_gui_item_from_keywords_internal): ditto. create and return a
- 	gui_item as well as setting keywords.
-	(gui_parse_item_keywords): ditto.
-	(gui_parse_item_keywords_no_errors): ditto.
-	(gui_add_item_keywords_to_plist): new function, not yet used.
-	(gui_item_hash): new function.
-	(gui_item_id_hash): use gui_item_hash.
-	(gui_item_equal): new function.
-	(print_gui_item): new function.
-
-1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.16 is released
-
-1999-06-10  Andy Piper  <andy@xemacs.org>
-
-	* select-msw.c (mswindows_own_selection): only set the clipboard
- 	if asked.
-	(mswindows_get_foreign_selection): only get the clipboard if
- 	asked.
-	(mswindows_disown_selection): only disown the clipboard if asked.
-
-1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (coding_system_from_mask): Use `raw-text' instead
-	of `no-conversion'.
-	(complex_vars_of_mule_coding): Use `raw-text' as the coding-system
-	of coding-category `no-conversion'.
-
-1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (Qraw_text): New variable.
-	(syms_of_mule_coding): Add new symbol `raw-text'.
-	(complex_vars_of_mule_coding): Add new coding-system `raw-text';
-	define coding-system `binary' independently; define coding-system
-	`no-conversion' as an alias for `raw-text'.
-
-	* file-coding.h (Qraw_text): New variable.
-
-1999-06-08  SL Baur  <steve@xemacs.org>
-
-	* s/decosf4-0.h: Explicitly #undef SYSTEM_MALLOC.
-
-1999-06-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (MIME_LINE_LENGTH): Default to 72, as in mimencode and
- 	base64.el.
-	(base64_decode_1): Signal errors instead of returning -1.
-
-1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* mule-charset.c (Fmake_char): Update docstring.
-
-1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fstring_lessp): Actually increment the Bufbyte pointers.
-
-1999-06-05  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (base64_decode_1): Allow and ignore any non-base64
- 	characters in input.
-
-1999-05-27  Olivier Galibert  <galibert@pobox.com>
-
-	* emacs.c (Fdump_emacs): Add clear_message() lost with the removal
-	of report_pure_usage().
-
-1999-06-04  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fstring_lessp): Remove O(n^2) under Mule.
-
-1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.15 is released
-
-1999-06-01  Hirokazu FUKUI  <fukui@atesoft.advantest.co.jp>
-
-	* frame.c (Fset_mouse_position):
-	(Fset_mouse_pixel_position):
-	* window.c (Fsplit_window):
-	(Fmove_to_window_line):
-	Fix crash when invoking functions with an already-deleted window
-	argument.
-
-	* indent.c (vertical_motion_1):
-	(vmotion_pixels):
-	(Fvertical_motion_pixels):
-	* window.c (Fwindow_displayed_text_pixel_height):
-	Fix error message when invoking functions with an already-deleted
-	window argument.
-
-1999-06-01  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* sysdep.c (request_sigio_on_device): Guard against glibc
-	2.1's stub streams implementation.
+2000-01-13  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
 
-1999-06-03  SL Baur  <steve@xemacs.org>
-
-	* config.h.in:
-	* emacs.c:  Implement x.y.z version numbers
-	From Jan Vroonhof <vroonhof@math.ethz.ch>
-
-1999-05-20  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* mule-charset.c (complex_vars_of_mule_charset): Registry of
-	japanese-jisx0208-1978 should not match with "jisx0208.1983" nor
-	"jisc6226.1983".
-
-1999-06-03  SL Baur  <steve@xemacs.org>
-
-	* frame-x.c:
-	* device-x.c: rename session option to wmcommand.
-	From Oliver Graf <ograf@rhein-zeitung.de>
-
-1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fsubstring): Don't traverse the same region twice with
- 	charcount_to_bytecount().
-
-1999-06-03  SL Baur  <steve@steve1.m17n.org>
-
-	* m/alpha.h (SYSTEM_MALLOC): Fix indented preprocessor directive
-	garbage.
-
-	* s/decosf4-0.h: Defining ORDINARY_LINK here is redundant (and it
-	doesn't really work as is implied by the commentary).
-	Don't define SYSTEM_MALLOC so the old GNU malloc can be used.
-
-1999-06-02  SL Baur  <steve@steve1.m17n.org>
-
-	* symsinit.h: Declare vars_of_ntproc.
-	* emacs.c (main_1): Call it.
-
-	* ntproc.c (syms_of_ntproc): Move variable initializations from
-	here ...
-	(vars_of_ntproc): ... to here [new function].
-
-	* file-coding.c (syms_of_file_coding): Rename.
-	(vars_of_file_coding): Ditto.
-	(complex_vars_of_file_coding): Ditto.
-
-	* symsinit.h: Rename *_mule_coding to *_file_coding.
-
-	* emacs.c (main_1): Call them by the proper name.
-
-	* device-msw.c (syms_of_device_mswindows): Move variable
-	initializations from here ...
-	(vars_of_device_mswindows): ... to here.
-
-	* chartab.c (vars_of_chartab): New function.
-
-	* symsinit.h: New function, vars_of_chartab.
-
-	* emacs.c (main_1): Call it.
-
-	* mule-canna.c (syms_of_mule_canna): Move CANNA initialization ...
-	(vars_of_mule_canna): ... to here.
-
-	* mule-ccl.c (vars_of_mule_ccl): New function.  Move variable
-	initializations out of syms_of_mule_ccl.
-
-	* symsinit.h: Declare new function vars_of_mule_ccl.
-
-	* emacs.c (main_1): Call it.
-
-1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (base64_decode_1): Ignore whitespace.
-
-1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* mule-charset.c (Fmake_char): Strip the eighth bit off ARG1 and
- 	ARG2.
-
-1999-05-21  Andy Piper  <andy@xemacs.org>
-
-	* xselect.c: deleted.
-
-	* symsinit.h: declare select initialisation.
-
-	* select.h: new file. declare commonly used select functions and
- 	variables.
-
-	* select.c: new file. generalised from xselect.c.
-	(clean_local_selection_data): moved from xselect.c.
-	(get_local_selection): ditto. device specific pieces called via a
- 	devmeth.
-	(handle_selection_clear): ditto.
-	(Fown_selection_internal): renamed and generalised from
- 	Fx_own_selection_internal. moved from xselect.c.
-	(Fdisown_selection_internal): ditto.
-	(Fselection_owner_p): ditto.
-	(Fselection_exists_p): ditto.
-	(Fget_selection_internal): ditto.
-	(syms_of_select): new function. QXXXX values moved from xselect.c
-	(vars_of_select): new function. selection_converter_alist,
- 	lost_selection_hooks moved and renamed from xselect.c
-
-	* select-x.c: renamed from xselect.c.
- 	(x_own_selection): converted to device specific. non-X-specific
- 	bits moved to select.c.
-	(x_get_foreign_selection): ditto.
-	(x_disown_selection): ditto.
-	(x_selection_exists_p): ditto.
-	(console_type_create_select_x): new function.
-
-	* select-msw.c (mswindows_own_selection): new device method to set
- 	the clipboard when we 'own' the selection.
-	(mswindows_get_foreign_selection): new device method to get the
- 	clipboard.
-	(mswindows_disown_selection): new device method to delete the
- 	selection when we 'disown' it.
-	(console_type_create_select_mswindows): new function.
-
-	* emacs.c (main_1): add select to things to initialise.
-
-	* console.h (struct console_methods): new console methods for
- 	selection.
-
-	* Makefile.in.in (x_objs): xselect.c renamed to select-x.c
-
-1999-05-20  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* print.c (long_to_string): Install a faster version.
-
-1999-05-16  Andy Piper  <andy@xemacs.org>
+	* symsinit.h: Added prototype for reinit_vars_of_frame_mswindows.
 
-	* ntproc.c (syms_of_ntproc): default
- 	win32-start-process-share-console to t.
-
-1999-05-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* config.h.in: Do it here.
-
-	* bytecode.c: Don't define ERROR_CHECK_TYPECHECK here.
-
-1999-05-14  Andy Piper  <andy@xemacs.org>
-
-	* toolbar-msw.c (mswindows_output_toolbar): hash on something
- 	hashable.
-
-1999-05-14  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.14 is released
-
-1999-05-12  Andy Piper  <andy@xemacs.org>
-
-	* ntproc.c (sys_spawnve): kludge argv[0] in a MS compatible way.
-
-1999-05-11  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* emacs.c (Frun_emacs_from_temacs): (re)alloc natgs+2 entries for
-	run_temacs_argv array -- fixes random memory corruption crash
-
-1999-05-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* window.c (Fcurrent_window_configuration):
-	Save minibuffer height;
-
-	* window.c (set_window_configuration): use it.
-
-1999-05-10  Robert Pluim  <rpluim@bigfoot.com>
-
-	* lisp.h (NNUNGCPRO): fix typo in name of DEBUG_GCPRO version
-
-1999-04-21  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* redisplay.c (redisplay_window): Do not put data
-	in the line start cache if it is not guaranteed to be correct
-
-1999-04-02  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* window.c (struct window_config): Removed frame
-	size members.
-	(window_config_equal): No longer compare frame sizes.
-	(Fset_window_configuration): Resize old top window to fit in the
-	current frame directly, no longer use a fake frame resize.
-	(Fcurrent_window_configuration): No longer save frame size
-
-1999-05-11  Andy Piper  <andy@xemacs.org>
-
-	* ntproc.c (sys_spawnve): actually assign argv[0] instead of the
- 	first character.
-
-1999-05-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* sysdep.c (init_system_name): If gethostname gives a proper
-	domain name, don't look further for one.
-
-1999-05-09  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* symbols.c (Fintern): Avoid frequent XSYMBOL (foo).
-	(Fintern_soft): Accept a symbol argument.
+	* event-msw.c (vars_of_event_mswindows): Fixed a mistyped
+	pdump_wire'd variable.
 
-1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* symbols.c (Fintern): ...do it here.
-
-	* lread.c (read_atom): Don't handle keywords here.
-
-1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* symbols.c (reject_constant_symbols): Just use SYMBOL_IS_KEYWORD.
-
-1999-05-03  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp.h (SYMBOL_IS_KEYWORD): A symbol can be a keyword only if it
-	is interned in the main obarray.
-
-1999-04-23  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* menubar-x.c (pre_activate_callback): set accelerator field in
-	"No menu" entries to nil. Avoid crash in
-	command_builder_operate_menu_accelerator
-
-1999-05-03  Olivier Galibert  <galibert@pobox.com>
-
-	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.
-
-	* lisp.h (DEFUN): Fix lrecord header initialisation.
-
-1999-05-02  Andy Piper  <andy@xemacs.org>
-
-	* objects-msw.c (mswindows_font_instance_truename): add a ';'.
-
-	* ntproc.c (sys_kill): cast using MS mandated defines.
-
-1999-04-29  Andy Piper  <andy@xemacs.org>
-
-	* m/intel386.h: remove redundant definitions.
-
-	* s/mingw32.h: new header for mingw32.
-
-	* unexnt.c: (open_input_file): function moved to nt.c.
-	(close_file_data): ditto.
-	(rva_to_section): function moved to ntproc.
-
-	* symsinit.h: declare syms_of_ntproc();
-
-	* objects-msw.c (mswindows_font_instance_truename): new function.
-
-	* ntproc.c: remove many warnings.
-	(_sys_read_ahead): moved from nt.c and made static.
-	(rva_to_section): moved from unexnt.c but not defined under
- 	mingw32.
-	(win32_executable_type): implement what we can for mingw32
- 	headers.
-	(sys_spawnve): fix bad MULE/GCPRO bug in filename handling.
-
-	* ntheap.h: remove declarations of functions that are now static.
-
-	* ntheap.c: support static heap.
-
-	* nt.h: conditionalise X_OK definition.
-
-	* nt.c: eliminate many warnings and support mingw32.
-	(open_input_file): function moved from unexnt.c and made static
-	(close_file_data): ditto.
-	(_sys_read_ahead): moved to ntproc.c
-
-	* emacs.c: make sure syms_of_ntptroc gets called under windows.
+	* emacs.c: (main_1): Conditionalized calls to
+	reinit_vars_of_scrollbar_x and reinit_vars_of_module.
 
-	* console-msw.h: support mingw32.
-	* getloadavg.c: ditto.
-	* ntplay.c: ditto.
-	* sysdep.c: ditto.
-	* sysdir.h: ditto.
-	* systime.h: ditto.
-	* systty.h: ditto.
-
-	* config.h.in: dont turn on DEBUG_ENCAPSULATION by default because
- 	some systems don't have all of the encapsulated system calls.
-
-	* callproc.c: warning elimination.
-	* dired-msw.c: ditto.
-	* process-nt.c: ditto.
-	* realpath.c: ditto.
-
-	* Makefile.in.in: tweak : and ; for building under mswindows.
-
-1999-04-26  Michael Harnois  <mharnois@willinet.net>
-
-	* eldap.c (allocate_ldap): Adapt to the new semantics of
-	alloc_lcrecord_type().
-
-1999-03-16  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-	* file-coding.c (DECODE_HANDLE_END_OF_CONVERSION): fixed.
-
-1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* Delete mule-coding.c and mule-coding.h because they are not
-	used.
-
-1999-04-22  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* objects.c (print_font_instance): Check for NILP(f->device),
-	i.e. Vthe_null_font_instance.
-	(font_instance_truename_internal): ditto.
-	(Ffont_instance_properties): ditto.
-
-1999-04-22  Olivier Galibert  <galibert@pobox.com>
-
-	* lrecord.h (DECLARE_LRECORD): lrecord_implementation isn't an
-	array anymore.
-
-1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* Makefile.in.in (tests): Don't mention tests explicitly -- makes
-	it easier to add new ones.
-
-1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* symbols.c (reject_constant_symbols): Ditto.
-	(init_symbols_once_early): Ditto.
-
-	* print.c (print_symbol): Don't use ->obarray.
-
-	* symbols.c (Funintern): Ditto.
-
-	* alloc.c (Fmake_symbol): Don't set ->obarray.
-
-	* lisp.h (struct Lisp_Symbol): Removed .obarray field.
-
-	* symbols.c (init_symbols_once_early): Removed
- 	Vpure_uninterned_symbol_table.
-	(Fintern): Don't store to ->obarray field.
-
-1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* data.c (vars_of_data): Default debug_issue_ebola_notices to 0.
-	(eq_with_ebola_notice): Remove abracadabra support.
-
-1999-04-11  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (Fldap_search_internal): Add a new parameter `withdn' to
- 	retrieve the distinguished names of entries
-
-1999-03-08  Martin Buchholz  <martin@xemacs.org>
-
-	* lread.c (read_escape): Make hex escapes read only two hex digits.
-
-1999-04-05  Olivier Galibert  <galibert@pobox.com>
-
-	* Makefile.in.in: Remove puresize-adjust.h and recursive makes.
-	* make-src-depend: Remove puresize-adjust.h.
-	* src-headers: Remove puresize-adjust.h.
-	* config.h.in: Kill everything purespace/gung-ho related.
-
-	* dbxrc: Make gung-ho mandatory.
-	* gdbinit: Ditto.
-
-	* lrecord.h: Make gung-ho mandatory.  Remove pure flag and add
- 	c_readonly and lisp_readonly.  Remove implementation arrays.
-	(C_READONLY_RECORD_HEADER_P): Added.
-	(LISP_READONLY_RECORD_HEADER_P): Added.
-	(SET_C_READONLY_RECORD_HEADER): Added.
-	(SET_LISP_READONLY_RECORD_HEADER): Added.
-
-	* lisp.h: Kill everything purespace/non gung-ho related.
-	(CHECK_C_WRITEABLE): Added.
-	(CHECK_LISP_WRITEABLE): Added.
-	(C_READONLY): Added.
-	(LISP_READONLY): Added.
-
-	* lisp-union.h: Make gung-ho mandatory.
-	* lisp-disunion.h: Ditto.
-
-	* alloc.c: Kill everything purespace/non  gung-ho related. Fix all
- 	set_lheader_implementation calls.
-	(c_readonly): Added.
-	(lisp_readonly): Added.
-	(make_string_nocopy): Added.
-	(Fpurecopy):  Changed to do  nothing.   Kept the old documentation
- 	for reference purposes for the next patches.
-	(sweep_lcrecords_1): Don't free C readonly lcrecords.
-	(sweep_bit_vectors_1): Don't free C readonly bitvectors.
-	(SWEEP_FIXED_TYPE_BLOCK): Don't free C readonly lrecords.
-
-	* fns.c: Make gung-ho mandatory.
- 	(Fput): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
-	(Fremprop): Ditto.
-	(Ffillarray): Ditto.
-
-	* data.c: Make gung-ho mandatory.
-	(pure_write_error): Removed.
-	(c_write_error): Added.
-	(lisp_write_error): Added.
-	(Fsetcar): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
-	(Fsetcdr): Ditto.
-	(Faset): Ditto.
-
-	* symbols.c: Make gung-ho mandatory.  make_pure_pname ->
- 		  make_string or make_string_nocopy.  Fix various
-	 	  alloc_lcrecord_type.
-
-	* lread.c: Remove everything purespace related.
-	(Flocate_file_clear_hashing): purified -> c_readonly.
-	(locate_file): Ditto.
-	(read_atom): make_pure_pname -> make_string.
-
-	* emacs.c (Frun_emacs_from_temacs): Remove purespace stats
- 		  reporting.
-	(Fdump_emacs): Ditto.
-
-	* print.c (print_internal): Make gung-ho mandatory.
-	* ntheap.c (sbrk): Ditto.
-	* mem-limits.h (EXCEEDS_LISP_PTR): Ditto
-	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.
-
-	* sheap.c (more_static_core): Remove puresize-adjust.h from
- 		  message.
-
-	* syntax.c (complex_vars_of_syntax): make_pure_string ->
- 		  make_string_nocopy.
-	* keymap.c (make_keymap): Fix alloc_lcrecord_type.
-	(vars_of_keymap): make_pure_string -> make_string_nocopy.
-	* events.c (deinitialize_event): Fix set_lheader_implementation.
-	(zero_event): Ditto.
-	* specifier.c (make_specifier_internal): Fix alloc_lcrecord.
-	* menubar-x.c (set_frame_menubar): Fix alloc_lcrecord_type.
-	* mule-charset.c (make_charset): Ditto.
-	* console.c (allocate_console): Ditto.
-	(complex_vars_of_console): Ditto.
-	* file-coding.c (allocate_coding_system): Ditto.
-	* device.c (allocate_device): Ditto
-	* gui-x.c (gcpro_popup_callbacks): Ditto.
-	* extents.c (allocate_extent_auxiliary): Ditto.
-	(allocate_extent_info): Ditto.
-	(copy_extent): Ditto.
-	* glyphs.c (allocate_image_instance): Ditto.
-	(allocate_glyph): Ditto.
-	* frame.c (allocate_frame_core): Ditto.
-	* database.c (allocate_database): Ditto.
-	* tooltalk.c (make_tooltalk_message): Ditto.
-	(make_tooltalk_pattern): Ditto.
-	* rangetab.c (Fmake_range_table): Ditto.
-	(Fcopy_range_table): Ditto.
-	* process.c (make_process_internal): Ditto.
-	* chartab.c (Fmake_char_table): Ditto.
-	(make_char_table_entry): Ditto.
-	(copy_char_table_entry): Ditto.
-	(Fcopy_char_table): Ditto.
-	* elhash.c (make_general_lisp_hash_table): Ditto.
-	(Fcopy_hash_table): Ditto.
-	* buffer.c (allocate_buffer): Ditto.
-	(complex_vars_of_buffer): Ditto.
-	* event-stream.c (allocate_command_builder): Ditto.
-	* objects.c (Fmake_color_instance): Ditto.
-	(Fmake_font_instance): Ditto.
-	(vars_of_objects): Ditto.
-	* toolbar.c (update_toolbar_button): Ditto.
-	* window.c (allocate_window): Ditto.
-	(make_dummy_parent): Ditto.
-	(Fcurrent_window_configuration): Fix alloc_lcrecord.
-	(vars_of_window): Fix make_lcrecord_list.
-	* faces.c (allocate_face): Fix alloc_lcrecord_type. pure_list ->
- 		  Flist.
-	* lstream.c (Lstream_new): Fix make_lcrecord_list.
-	* opaque.c (make_opaque): Fix alloc_lrecord.
-	(make_opaque_list): Fix alloc_lrecord_type.
-
-1999-04-19  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* process.c (Fstart_process_internal): Ditto.
-
-	* ntproc.c (sys_spawnve): Use Vlisp_EXEC_SUFFIXES when calling
- 	locate_file().
-
-	* glyphs-x.c (x_locate_pixmap_file): Ditto.
-
-	* glyphs-msw.c (mswindows_locate_pixmap_file): Fix call to
- 	locate_file().
-
-	* emodules.c (vars_of_module): New variable Vmodule_extensions.
-	(emodules_load): Use it when calling locate_file().
-
-	* emacs.c (main_1): Use Vlisp_EXEC_SUFFIXES when calling
- 	locate_file().
-
-	* callproc.c: Vlisp_EXEC_SUFFIXES: New variable.
-	(vars_of_callproc): Initialize it.
-	(Fcall_process_internal): Use it when calling locate_file().
-
-	* alloc.c (disksave_object_finalization): Use
- 	Flocate_file_clear_hashing().
-
-	* lread.c (Flocate_file_clear_hashing): Clear all hasing when
-	given `t' as argument.
-
-1999-04-18  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* lread.c (locate_file): Expand `pathel' when appropriate.
-	(Flocate_file_clear_hashing): Expand path elements.
-	(Flocate_file_clear_hashing): Use Vlocate_file_hash_table.
-
-	* dired.c (make_directory_hash_table): Create the hash-table only
-	if the directory open is successful.
-
-	* lread.c (decode_mode_1): New function.
-	(decode_mode): Ditto.
-	(Flocate_file): Use them.
-	(Flocate_file): Expand FILENAME.
-	(locate_file_map_suffixes): New function.
-	(locate_file_in_directory_mapper): New function.
-	(locate_file_in_directory): Use locate_file_in_directory_mapper()
- 	and locate_file_map_suffixes().
-	(locate_file_construct_suffixed_files): Use
- 	locate_file_map_suffixes().
-	(locate_file_without_hash): Don't GCPRO path.
-	(Flocate_file_clear_hashing): Use EXTERNAL_LIST_LOOP.
-	(syms_of_lread): Remove Qlocate_file_hash_table.
-	(locate_file_find_directory_hash_table): Use
- 	Vlocate_file_hash_table.
-	(locate_file_refresh_hashing): Ditto.
-
-	* lread.c: Renamed read_objects to Vread_objects.
-
-1999-04-16  Olivier Galibert  <galibert@pobox.com>
+2000-01-13  Martin Buchholz  <martin@xemacs.org>
 
-	* mule-charset.c: Generally resync with fsf 20.3 charset
- 	interface.
-	(make_charset): Add long and short name.  Use id instead of
- 	leading byte.
-	(Fmake_charset): Ditto.
-	(Fmake_reverse_direction_charset): Ditto.
-	(Fcharset_property): Ditto.
-	(Fcharset_short_name): Added.
-	(Fcharset_long_name): Added.
-	(Fcharset_description): Renamed from charset-doc-string.
-	(syms_of_mule_charset): Synced symbols.
-	(complex_vars_of_mule_charset): Synced charsets.
-
-	* mule-charset.h: Removed leading byte (uses id instead), added
- 	short and long name.
-
-1999-04-15  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* file-coding.c (Fdefine_coding_system_alias): New function.
-
-1999-04-08  Olivier Galibert  <galibert@pobox.com>
-
-	* mule-charset.c (complex_vars_of_mule_charset): Allow all iso8859
- 	and -ascii fonts for displaying ascii instead of iso8859-1 only.
-
-1998-12-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* extents.c (set_extent_glyph_1): Make sure that the glyph we
-	attach to the extent is valid.
-
-1998-12-12  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* dired.c (user_name_completion): Mule-ize.
-	(user_name_completion): Use xmalloc/xrealloc/xfree.
-	(user_name_completion): Use DO_REALLOC.
-	(user_name_completion): Cut down the number of static variables;
- 	use a structure.
-	(user_name_completion): Username completion is always
- 	case-sensitive.
-
-1998-12-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (base64_decode_1): Remove COUNTER.
-	(base64_decode_1): Accept CRLF in addition to CR.
-	(base64_decode_1): Disallow a stray character after final EOF; the
-	check was probably a remnant of buggy recode code.
-
-1998-12-05  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (init_provide_once): Provide `base64'.
-
-1998-12-04  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (XMALLOC_UNBIND): Include SPECCOUNT argument, for clarity.
-	(Fbase64_encode_region): If buffer is read-only, bail out early.
-	(Fbase64_decode_region): Ditto.
-	(Fbase64_encode_region): Initialize SPECCOUNT to pacify the
- 	compiler.
-	(Fbase64_encode_string): Ditto.
-	(Fbase64_decode_region): Ditto.
-	(Fbase64_decode_string): Ditto.
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* dired.c (Fdirectory_files): Remove redundant code.
-
-1999-03-05  Philip Aston  <philipa@parallax.co.uk>
-
-	* frame-msw.c Make raise-frame restore minimised windows.
-
-1999-03-05  Philip Aston  <philipa@parallax.co.uk>
-
-	* device-msw.c: Fix DEFVAR format - Death to phantom quote, and
- 	add magic newline.
-
-1999-03-05  Philip Aston  <philipa@parallax.co.uk>
-
-	* toolbar-msw.c Consider captions when deciding whether to rebuild
- 	toolbar. This fixes the initial toolbar display for those of us
- 	who don't like captions. These patches applied by Andy Piper.
-
-1999-03-12  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.13 is released
-
-1999-03-12  SL Baur  <steve@xemacs.org>
-
-	* file-coding.c: Guard ucs table initialization with ifdef MULE.
-
-1999-03-10  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>
-
-	* file-coding.c:  docstring and comment improvements.
-	(decode_ucs4)  flag possible data loss with comment.
-
-1999-03-10  Martin Buchholz  <martin@xemacs.org>
-
-	* file-coding.c (Fset_ucs_char): add CHECK_INT, CHECK_CHAR
-	(ucs_to_char):
-	(Fucs_char):
-	(Fset_char_ucs):
-	(decode_coding_ucs4):
-	(encode_coding_ucs4):
-	(detect_coding_utf8):
-	(decode_coding_utf8):
-	(encode_utf8):
-	(encode_coding_utf8):
-	Add CHECK_* macros where needed to avoid crashes.
-	#ifdef out all composite character support using
-	#ifdef ENABLE_COMPOSITE_CHARS
-	Use normal XEmacs coding standards.
-	Fix docstrings.
-	Remove CODING_STREAM_COMPOSE, CODING_STREAM_DECOMPOSE.
-
-1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (make-coding-system): Add description about
-	`ucs-4' and `utf-8'.
-	(detection_state): Modify to implement ucs-4 and utf-8.
-	(detect_coding_type): Likewise.
-	(detect_coding_ucs4): New implementation.
-	(detect_coding_utf8): New implementation.
-	(encode_utf8): fixed.
-	(syms_of_mule_coding): Rename `ucs4' and `utf8' to `ucs-4' and
-	`utf-8'.
-
-1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (mule_char_to_ucs4): Encode 94x94 chars in ISO
-	2022 registry to private area.
-
-1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (encode_utf8): New function.
-	(encode_coding_utf8): New implementation.
-
-1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+	* window.c (Fset_window_configuration):
+	* sysdep.c (_start):
+	* input-method-motif.c (res):
+	* event-Xt.c (Xt_process_to_emacs_event):
+	Simple compiler warning fixes.
 
-	* file-coding.c (ucs_to_mule_table): New variable; abolish
-	`Vucs_to_mule_table'
-	(mule_to_ucs_table): renamed from `Vmule_to_ucs_table'.
-	(set-ucs-char): New function.
-	(ucs_to_char): New function.
-	(ucs-char): New function.
-	(set-char-ucs): New function.
-	(char-ucs): New function.
-	(decode_ucs4): Use `ucs_to_char'.
-	(complex_vars_of_mule_coding): Abolish `ucs-to-mule-table' and
-	`mule-to-ucs-table'.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* chartab.h: EXFUN `Fget_char_table'.
-
-	* file-coding.c (encode_ucs4): New function.
-	(encode_coding_ucs4): Use `encode_ucs4'.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (decode_coding_ucs4): New implementation.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (decode_coding_ucs4): fixed.
-
-	* file-coding.c (Vmule_to_ucs_table): New variable.
-	(mule_char_to_ucs4): New function.
-	(encode_coding_ucs4): New implementation.
-	(complex_vars_of_mule_coding): Define variable
-	`mule-to-ucs-table'.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (decode_coding_utf8): New implementation.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (decode_coding_utf8): fixed.
-
-1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (Vucs_to_mule_table): New variable.
-	(decode_ucs4): Refer `Vucs_to_mule_table'.
-	(complex_vars_of_mule_coding): Define variable
-	`ucs-to-mule-table'.
-
-1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* file-coding.c (detect_coding_ucs4): New function (not
-	implemented yet).
-	(decode_coding_ucs4): New function.
-	(encode_coding_ucs4): New function (not implemented yet).
-	(detect_coding_utf8): New function (not implemented yet).
-	(decode_coding_utf8): New function.
-	(encode_coding_utf8): New function (not implemented yet).
-	(make-coding-system): New type `ucs4' and `utf8'.
-	(coding-system-type): Likewise.
-	(detection_state): Add `ucs4' and `utf8'.
-	(detect_coding_type): Likewise.
-	(mule_decode): Use `decode_coding_ucs4' and `decode_coding_utf8'.
-	(mule_encode): Use `encode_coding_ucs4' and `encode_coding_utf8'.
-	(decode_ucs4): New function (very incomplete).
-	(syms_of_mule_coding): Add `ucs4' and `utf8'.
-
-	* file-coding.h: Add definitions for UCS-4 and UTF-8.
+	* bytecode.c (funcall_compiled_function): Use the original
+	function symbol on the backtrace list in preference to the
+	compiled_function object in error messages.
 
-1999-03-08  Martin Buchholz  <martin@xemacs.org>
-
-	* mule-charset.c:
-	(non_ascii_valid_char_p):
-	(lookup_composite_char):
-	(composite_char_string):
-	(make-composite-char):
-	(composite-char-string):
-	(syms_of_mule_charset):
-	(complex_vars_of_mule_charset):
-	* mule-charset.h (LEADING_BYTE_COMPOSITE):
-	(CHAR_LEADING_BYTE):
-	(MAKE_CHAR):
-	* file-coding.h (CODING_STATE_COMPOSITE):
-	(CODING_STATE_ISO2022_LOCK):
-	(iso_esc_flag):
-	(LEADING_BYTE_COMPOSITE):
-	* file-coding.c (struct iso2022_decoder):
-	(decoding_closer):
-	(reset_iso2022):
-	(parse_iso2022_esc):
-	(encode_coding_iso2022):
-	#ifdef out all composite character support using
-	#ifdef ENABLE_COMPOSITE_CHARS
-
-	* alloc.c: Define lrecord_coding_system only if ! FILE_CODING
-
-1999-03-04  Takeshi YAMADA <yamada@cslab.kecl.ntt.co.jp>
-
-	* fns.c (Fbase64_encode_string): Calculate `allength' in the same
-	way of `Fbase64_encode_region'.
-
-1999-02-18  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-	* fns.c (base64_encode_1): Don't add a newline at the tail.
-
-1999-03-08  Andy Piper  <andy@xemacs.org>
-
-	* menubar-msw.c (displayable_menu_item): correct off-by-one &
-	handling.
-
-1999-03-07  Martin Buchholz  <martin@xemacs.org>
-
-	* console-stream.h (struct stream_console):
-	* event-unixoid.c (event_stream_unixoid_select_console):
-	(event_stream_unixoid_unselect_console):
-	* print.c (Fexternal_debugging_output):
-	* sysdep.c (reset_one_device):
-	* console-stream.c (stream_init_console):
-	(stream_delete_console):
-	(allocate_stream_console_struct): move into stream_init_console.
-	(free_stream_console_struct): move into stream_delete_console.
-	Use `fd' only for file descriptors.
-	Therefore, rename members of struct stream_console.
-
-	* systime.h: Unix98 says sys/time.h should define select(), but
-	some systems define that in unistd.h.  So include that file always.
-
-	* glyphs.h (MAYBE_IIFORMAT_METH): Don't use leading `_'.  Avoid
-	multiple evaluation of first arg.  Do proper do {} while (0) wrapping.
-	(HAS_IIFORMAT_METH_P): Prevent macro from being used in
-	non-boolean context
-	(MAYBE_IIFORMAT_DEVMETH): Use standard internal macro naming convention.
-
-	* EmacsShell.c:
-	* balloon_help.c:
-	Add #include <stdio.h>.
-	Some versions of assert.h use printf() without #include'ing stdio.h
+2000-01-13  Andy Piper  <andy@xemacs.org>
 
-	* free-hook.c (blocktype): Add gcpro5_type to blocktype.
-	(log_gcpro): Remove unused variable FRAME.
-	(show_gcprohist): Ansify.
-	Comment the #endif's
-
-	* frame-x.c (x_delete_frame): Don't use FRAME_X_SHELL_WIDGET(f)
-	after it's just been XtDestroy'ed!
-
-1999-02-18  Martin Buchholz  <martin@xemacs.org>
-
-	* opaque.c (print_opaque):
-	(sizeof_opaque):
-	(equal_opaque):
-	(hash_opaque):
-	Egcs 1.1.1 seems to have a bug where
-	INTP (p->size_or_chain)
-	will crash XEmacs.  Fix by introducing intermediate variable.
-
-	* sound.c (Fdevice_sound_enabled_p): Fix compiler warning.
-
-	* dired.c (Fdirectory_files):
-	(Ffile_name_completion):
-	(Ffile_name_all_completions):
-	(file_name_completion):
-	- Use `directory' instead of `dirname' to sync with FSF Emacs and
-	avoid compiler warnings.
-	- Fix up docstrings so that C variables match documentation.
-
-1999-03-05  Martin Buchholz  <martin@xemacs.org>
-
-	* alloc.c: (garbage_collect_1): Reorg code to make scope of local
-	variables as small as possible to help out the compiler and the maintainer.
-
-	* alloc.c: (disksave_object_finalization):
-	Set all the *-load-path variables to
-	nil, not just load-path itself.  This gets the locate-file hash
-	tables garbage collected BEFORE dump, and has the side effect of
-	preventing crashes on OSF4.0+egcs.
-
-	* alloc.c:
-	* gdbinit:
-	* dbxrc:
-	- Clean up gdb/dbx debugging support.
-	- Storing an EMACS_INT in an enum is not 64-bit clean!
-	- So change the enum to a set of separate variables.
-	- Add test cases to help debug the debugging support!
-	- Add `lisp-shadows' and `run-temacs' targets for dbx.
-	- Both dbx and gdb have been tested now.
-
-1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.12 is released
-
-1999-02-16  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
-
-	* device-x.c: Support to find best visual without flashing.
-
-1999-03-02  Paul Keusemann  <pkeusem@visi.com>
-
-	* database.c (berkdb_map): Add flags argument to cursor call (must
-	  be 0 according to docs) required for Berkeley DB 2.6.4 and later.
-
-1999-03-03  Martin Buchholz  <martin@xemacs.org>
-
-	* hash.c:
-	* hash.h:
-	General cleanup.  Get free-hook.c working again.
-	Remove unused functions:
-	make_strings_hash_table, copy_hash, expand_hash_table.
-
-	* malloc.c:
-	* mem-limits.h:
-	Always use new ANSI-style function prototypes.
-
-	* unexalpha.c (unexec): Never use implicit int.
-
-	* sgiplay.c (close_sound_file):
-	(play_sound_file):
-	(restore_audio_port):
-	(play_sound_data):
-	(audio_initialize):
-	(play_internal):
-	(drain_audio_port):
-	(write_mulaw_8_chunk):
-	(write_linear_chunk):
-	(write_linear_32_chunk):
-	(initialize_audio_port):
-	(open_audio_port):
-	(set_channels):
-	(set_output_format):
-	(adjust_audio_volume):
-	(get_current_volumes):
-	(parse_snd_header):
-	Always use new ANSI-style function prototypes.
-	Use unistd.h for missing prototypes.
-
-	* unexelfsgi.c (round_up):
-	(find_section):
-	(unexec): Always use new ANSI-style function prototypes
-
-	* elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio
-
-	* console.h (struct console_methods): Always use full ANSI prototypes
-
-	* emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes
-
-1999-03-02  Andy Piper  <andy@xemacs.org>
-
-	* event-stream.c (init_event_stream): make sure native mswindows
- 	gets an appropriate event loop.
-
-1999-02-22  Andy Piper  <andy@xemacs.org>
-
-	* frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather
-	than SW_SHOWNORMAL to prevent resizing of maximised frames.
-	(mswindows_raise_frame): remove comment.
-
-1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.11 is released
-
-1999-02-25  SL Baur  <steve@xemacs.org>
-
-	* mule-charset.c (Qleading_byte): New variable to implement
-	charset-leading-byte function.
-	(Fcharset_property): Use it.
-	(syms_of_mule_charset): Initialize it.
-	From Kazuyuki IENAGA <ienaga@jsys.co.jp>
-
-1999-02-17  Kazuo Oishi <oishi@ae.agr.yamaguchi-u.ac.jp>
+	* glyphs-x.c (update_widget_face): Make sure we update the widget
+	background as well as foreground.
 
-	* glyphs-x.c (cononvert_EImage_to_XImage): correct
-	bytes per pixel counting.
-
-1999-02-15  Andy Piper  <andy@xemacs.org>
-
-	* s/cygwin32.h (BROKEN_SIGIO): don't define this as it causes
-	major lockups.
-
-1999-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-	* fns.c (Fbase64_encode_string): New optional argument
-	`NO_LINE_BREAK'.
-
-1999-02-16  Martin Buchholz  <martin@xemacs.org>
-
-	* gdbinit:  Fix up commands to run temacs.  Add lisp-shadows command.
-	* alloc.c (xcalloc):  undef xcalloc, just like xmalloc
-
-1999-02-10  Martin Buchholz  <martin@xemacs.org>
-
-	* s/bsdos4.h: New file.  Port to BSDI BSD/OS 4.0.
-	* xintrinsic.h:  Redo CONST support for X11 R4 compatibility.
-
-1999-02-05  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.10 is released
-
-1999-02-02  Gleb Arshinov  <gleb@cs.stanford.edu>
-
-	* process-nt.c (nt_send_process):
- 	Fix for process-send-region/process-send-string breaking when size
-	of the input > 128 chars: change maximum chunk size for process
-	stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer
-	succeeds.
-
-1999-02-02  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.9 is released
-
-1999-01-30  Martin Buchholz  <martin@xemacs.org>
-
-	* bytecode.c (funcall_compiled_function): Call
-	UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY.
-
-	* backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
-	#ifdef 0 out unused macro.
-
-1999-01-27  Martin Buchholz  <martin@xemacs.org>
-
-	* gui.c (gui_parse_item_keywords_internal): Make static.
-
-1999-01-21  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c: add xface support.
-	(mswindows_xface_instantiate): new function copied from glyphs-x.c
-	(image_instantiator_format_create_glyphs_mswindows): do device
- 	specific initialisation for xfaces.
-	(xbm_create_bitmap_from_data): line data must be padded to a word
- 	boundary.
-
-	* glyphs-x.c (xface_validate): moved to glyphs.c
-	(xface_normalize): ditto.
-	(xface_possible_dest_types): ditto.
-	(image_instantiator_format_create_glyphs_x): do device specific
- 	initialisation for xfaces.
-
-	* glyphs.h: declare xface symbol.
-
-	* glyphs.c: move generic xface support here.
-	(xface_validate): moved from glyphs-x.c
-	(xface_normalize): ditto.
-	(xface_possible_dest_types): ditto.
-	(image_instantiator_format_create): xface declarations moved from
- 	glyphs-x.c.
-
-1999-01-14  Adrian Aichner  <adrian@xemacs.org>
-
-	* event-stream.c (vars_of_event_stream): Fixing documentation.
-
-1999-01-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* glyphs-eimage.c (gif_instantiate): Correct handling of
-	interlaced gifs to avoid writing past the end of the eimage
-	buffer.
-
-1999-01-13  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* search.c (Freplace_match): Handle single backslash at end of
-	NEWTEXT correctly.
-
-1999-01-12  William M. Perry  <wmperry@aventail.com>
-
-	* eldap.c (Fldap_open): slow down interrupts around ldap_open to
-	  avoid connection errors.
-
-1999-01-12  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_update_line): backout change that
- 	shouldn't have gone ine.
-
-1999-01-09  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (vars_of_ldap): Do no provide `ldap' here since it may
- 	collide with ldap.el
-
-1999-01-11  Andy Piper  <andy@xemacs.org>
-
-	* redisplay.h (DISPLAY_LINE_HEIGHT): new macro.
-	(DISPLAY_LINE_YPOS): new macro.
-
-	* redisplay-msw.c (mswindows_output_string): use it.
-	(mswindows_output_pixmap): ditto.
-	(mswindows_output_display_block): ditto.
-
-	* redisplay-output.c (redisplay_output_display_block): new
- 	function. just call the devmeth, maybe insert some generic code
- 	here later.
-	(compare_display_blocks): use it.
-	(output_display_line): ditto.
-	(redisplay_unmap_subwindows_maybe): new function. potentially
- 	unmap subwindows in the given area.
-
-	* glyphs.c (reset_subwindow_cachels): unmap subwindows that we are
- 	resetting.
-
-1999-01-10  J. Kean Johnston  <jkj@sco.com>
-
-	* Makefile.in.in: Set value of moduledir
-	- Changed DUMPENV to include $(MODULEPATH)
-	- Added install rule to install header files for use by ellcc.
+2000-01-13  Andy Piper  <andy@xemacs.org>
 
-	* config.h.in: Added INHIBIT_SITE_MODULES
-	- Added HAVE__DLERROR
-	- Added HAVE_DLFCN_H
-	- Added DLSYM_NEEDS_UNDERSCORE
-
-	* dll.c: Removed.
-
-	* emodules.c: New file containing dynamic loading code.
-
-	* emodules.h: New file.
-
-	* emacs.c: Added variables Vmodule_directory,
-	Vsite_module_directory, Vconfigure_module_directory and
-	Vconfigure_site_module_directory.
-	- (main_1): Added new variable inhibit_site_modules and command
-	line options `-no-site-modules' and `--no-site-modules'.
-	- (main_1): Call syms_of_module() instead of syms_of_dll().
-	- (main_1): Call vars_of_module().
-	- (vars_of_emacs): Introduce inhibit-site-modules,
-	module-directory, configure-module-directory,
-	site-module-directory, and configure-site-module-directory to the
-	Lisp reader.
-
-	* lisp.h: Declare load_module and list_modules, as well as
-	Vmodule_directory, Vsite_module_directory,
-	Vconfigure_module_directory and Vconfigure_site_module_directory.
-
-	* paths.h.in: Added PATH_MODULESEARCH and PATH_SITE_MODULES.
-	- Added correct support for site-lisp directory.
-
-	* symbols.c (defsubr): Modified to allow modules to add new subrs
-	after dump time.
-	- (defsubr_macro): Same.
-	- (defvar_magick): Only use purespace when not initialized, so
-	that loaded modules can still add symbols.
-
-	* symsinit.h: Add definitions for syms_of_module(),
-	vars_of_module().  Removed syms_of_dll().
-
-	* sysdll.c: Include dlfcn.h if HAVE_DLFCN_H is defined.
-	- (dll_variable): Take DLSYM_NEEDS_UNDERSCORE into account.
-	- (dll_error): use _dlerror() if HAVE__DLERROR is defined.
-
-	* s/sco5-shr.h (C_SWITCH_SYSTEM): Correct for modern gcc and
-	explicitly pass -belf for native cc.
-
-	* s/sco5.h (LIB_GCC): Use -print-libgcc-file-name instead of
-	hard-coding the library name.
-
-1999-01-01    <martin@xemacs.org>
-
-	* device-x.c (Fx_set_font_path):
-	Add proper cast to permit compilation under C++.
-
-	* buffer.c (directory_is_current_directory):
-	Add proper casts to permit compilation under C++.
-
-1998-12-30  Damon Lipparelli  <lipp@primus.com>
-
-	* event-msw.c (mswindows_wnd_proc):
-	  Fixed failure when building with MSVC 5.
-
-1998-12-29  Martin Buchholz  <martin@xemacs.org>
-
-	* file-coding.c (decode_coding_iso2022):
-	- Prevent crash when decoding ISO7/Lock detected files
-	- the usual martin fiddling
-
-1998-12-29  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c:
-	  glyphs-msw.c:
-	  Fixed failures when building with MSVC.
-	* unexnt.c (dump_bss_and_heap):
-	  Removed compiler warning by removing bss_data variable.
-
-1998-12-18  Jim Radford  <radford@robby.caltech.edu>
-
-	* device-x.c (Fx_set_font_path, Fx_get_font_path): New functions
- 	so that packages that distribute their own fonts can access them.
-
-1998-12-28  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (mswindows_button_instantiate): cope with buttons
- 	that have an image provided.
-
-	* glyphs.h: add Q_image decl.
-
-	* glyphs-widget.c new functionality allowing images in
- 	widgets.
- 	(check_valid_glyph_or_image): new function to validate
- 	glyphs passed in through :image.
-	(widget_normalize): new function. convert :image parameters into
- 	real glyphs if not already so.
-	(widget_instantiate_1): mess with size parameters to be similar to
- 	:image if provided.
-	(syms_of_glyphs_widget): new keyword :image.
-	(image_instantiator_format_create_glyphs_widget): normalize
- 	buttons and allow :image.
-
-1998-12-27  Andy Piper  <andy@xemacs.org>
-
-	* frame-msw.c (mswindows_init_frame_1): warning elimination.
-
-	* glyphs-widget.c (check_valid_anything): no-op function.
-	(check_valid_callback): check callbacks in gui_items.
-	(check_valid_symbol): as it sounds.
-	(check_valid_string_or_vector): ditto.
-	(widget_validate): modified for descriptors that are vectors or
- 	sequences of keyword/val pairs.
-	(widget_instantiate_1): ditto.
-	(image_instantiator_format_create_glyphs_widget): allow gui_item
- 	keywords in the instantiator.
-
-	* gui.c (gui_parse_item_keywords_internal): renamed from
- 	gui_parse_item_keywords but taking error behaviour.
-	(gui_parse_item_keywords): use it.
-	(gui_parse_item_keywords_no_errors): ditto.
-	(gui_item_add_keyval_pair): add Error_behavior flag and only
- 	signal invalid keywords if required.
-
-	* gui.h: new gui signatures.
-
-	* menubar.c (menu_parse_submenu_keywords): use new
- 	gui_item_add_keyval_pair signature.
-
-	* s/cygwin32.h: modify PTY_ITERATION to eliminate warnings.
-
-1998-12-28  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.8 is released.
-
-1998-12-28  Martin Buchholz  <martin@xemacs.org>
-
-	* editfns.c (get_home_directory):
-	(user-home-directory): Simplify.
-
-
-	* callproc.c (child_setup):
-	- Environment variables were being passed to inferior processes
-	  using internal encoding.
-	- Convert to external encoding.
-	- Rename local var `tem' to better name `tail'.
-	- Use Flength instead of `manual' calculation.
-
-	* buffer.c (kill-buffer):
-	(record-buffer):
-	(set-buffer-major-mode):
-	(current-buffer):
-	- Fix up parameter names to correspond to docstrings.
-	- Don't use `bufname' when a buffer will do as well.
-	- Remove one unneeded GCPRO.
-
-	* buffer.h (initial_directory):
-	* buffer.c (init_initial_directory):
-	- use correct conversions between internal and external format.
-	(directory_is_current_directory): new function
-	(init_buffer): convert initial_directory to internal format.
-	- solve crashes when current working directory is non-ASCII.
-
-	* alloc.c (xmalloc):
-	(xcalloc):
-	(xrealloc):
-	- remove stupid casts, since XEmacs requires an ANSI C system.
-	(lrecord_type_index): replace abort() with more readable assert().
-
-	(reset_lcrecord_stats): remove.
-	(sweep_lcrecords_1):
-	- replace call to reset_lcrecord_stats() with call to xzero().
-
-1998-12-27  Martin Buchholz  <martin@xemacs.org>
-
-	* process-unix.c (unix_create_process):
-	- Fix crash invoking program with non-ASCII name.
-	  Try invoking xemacs with SHELL=/bin/sh, then M-x shell.
-	- Remove unused variable `env'.
-	- Rename `temp' to better name `save_errno'.
-	- Reorganize code for clarity.  But still too chicken to nuke the
-	  BSD 4.2 support.
-
-1998-12-24  Martin Buchholz <martin@xemacs.org>
-
-	* XEmacs 21.2.7 is released.
-
-1998-12-23  Martin Buchholz  <martin@xemacs.org>
-
-	* glyphs.c (decode_device_ii_format):
-	- Fix indentation.
-	- Use GET_C_STRING_FILENAME_DATA_ALLOCA with char *, not Extbyte *.
-
-	* glyphs-x.c (x_subwindow_instantiate):
-	- A image instance mask was being assigned to a image instance type!
-	- X_SUBWINDOW_INSTANCE_DATA (ii) is not an lvalue in C++.
-
-	* glyphs-msw.c (mswindows_initialize_dibitmap_image_instance):
-	Fix indentation.
-	* glyphs-x.h: Make indentation consistent.
-
-	* emacs.c (Fdump_emacs): Remove Steve Martin merge artifacts.
-
-	* glyphs-widget.c (check_valid_glyph): Warning suppression.
-	- Make it static
-	- #ifdef it out, since it's not actually used yet (FIX THIS!)
-
-	* glyphs-widget.c:
-	* glyphs.h:
-	Move declarations of decode_device_ii_format and
-	decode_image_instantiator_format into glyphs.h where they belong.
-
-1998-12-22  Martin Buchholz  <martin@xemacs.org>
-
-	* frame-x.c (x_delete_frame): Revert part of my changes at the
-	suggestion of Gunnar Evermann - unfortunately no one really
-	understands this code.
-
-	* callproc.c (init_callproc): code cleanup.
-
-	* free-hook.c (malloc):
-	(check_malloc):
-	(__free_hook):
-	(__malloc_hook):
-	(__realloc_hook):
-	(block_input_malloc):
-	(block_input_realloc):
-	* device-x.c (x_delete_device):
-	* emacs.c (voodoo_free_hook):
-	* events.c (print_event):
-	(CHECK_EVENT_TYPE):
-	(CHECK_EVENT_TYPE2):
-	(CHECK_EVENT_TYPE3):
-	Use proper prototypes.
-	Make C_E_T macros a little faster.
-	Pedantic fiddly little changes.  You really don't care.
-
-1998-12-22  Andy Piper  <andy@xemacs.org>
-
-	* redisplay-output.c (redisplay_clear_region): make sure that
- 	fg/bg colors get set even when we are in the border area.
-
-1998-12-13  Martin Buchholz  <martin@xemacs.org>
-
-	* console-msw.c: Function definitions follow coding standards
-	- This prevents e.g. find-tag on Lisp_Event finding DEVENT
-
-1998-12-11  Martin Buchholz  <martin@xemacs.org>
-
-	* events.h (struct timeout_data):
-	* event-tty.c (tty_timeout_to_emacs_event):
-	* event-msw.c (mswindows_wm_timer_callback):
-	* event-Xt.c (Xt_timeout_to_emacs_event):
-	* event-msw.c (mswindows_cancel_dispatch_event):
-	Make sure Lisp_Objects inside events are initialized to Qnil, not
-	Qnull_pointer, which is now illegal.
-
-1998-12-10  Martin Buchholz  <martin@xemacs.org>
-
-	* lisp.h: Fix up prototypes to match alloc.c
-
-1998-12-08  Martin Buchholz  <martin@xemacs.org>
-
-	* windowsnt.h: Remove `support' for using index and rindex
+	* glyphs.h (struct Lisp_Image_Instance): Move justify and orient
+	fields to subwindow.
+	(IMAGE_INSTANCE_SUBWINDOW_JUSTIFY): new macro.
+	(XIMAGE_INSTANCE_SUBWINDOW_JUSTIFY): ditto.
+	(IMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto.
+	(XIMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto.
 
-	* filelock.c (current_lock_owner):
-	- Change uses of index -> strchr, rindex -> strrchr
-
-1998-12-07  Martin Buchholz  <martin@xemacs.org>
-
-	* sysdep.c (set_descriptor_non_blocking):
-	Since O_NONBLOCK is now always #defined, make use of fcntl
-	conditional on F_SETFL being defined.
-
-	* console-msw.c (DHEADgER):
-	(DOPAQUE_DATA):
-	(DEVENT):
-	(DCONS):
-	(DCONSCDR):
-	(DSTRING):
-	(DVECTOR):
-	(DSYMBOL):
-	(DSYMNAME):
-	- max_align_t should not be visible to the user of the
-	  XOPAQUE_DATA macro.
-	- use Bufbyte instead of char
-	- parens around (FOOP (obj)) are always redundant.
-	  If they were necessary, we should fix the macro instead.
-	- Always use string_data(foo) instead of foo->data.
-
-
-1998-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* frame-msw.c (mswindows_init_frame_1):
-	- use make_lisp_hash_table, not Fmake_hash_table
-	- include elhash.h
-
-	* lisp.h:
-	* alloc.c (make_vector): remove travesty
-	(Fmake_vector):
-	(make_pure_vector):
-	(pure_cons):
-	(make_bit_vector_internal):
-	(make_bit_vector):
-	(make_bit_vector_from_byte_vector):
-	(Fmake_bit_vector):
-	- make vector_equal a little faster.
-	- Don't use variable name `new'.
-	- Use size_t instead of EMACS_INT.
-	- usual Martin-style pointless bit-twiddling.
-
-	* fns.c (mapcar1):
-	(Fmapconcat):
-	(Fmapcar):
-	(Fmapvector):
-	Make mapcar faster.  In particular, make
-	  (mapc #'identity long-string)
-	MUCH faster under Mule.
-	* tests/automated/lisp-tests.el: Test 'em!
-
-	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
-	bytecode.
-
-1998-12-01  Martin Buchholz  <martin@xemacs.org>
-
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Always use
-	Qnil, not NULL, to initialize `null' Lisp_Objects.
-
-1998-11-29  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* specifier.c (display_table_validate): Update.
-
-	* redisplay.c (create_text_block): Use them.
-
-	* glyphs.c (display_table_entry): New function.
-	(get_display_tables): Ditto.
-
-1998-12-15  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (toplevel): Mention that eldap.c compiles with
-	OpenLDAP libs
-	(Fldap_open): Use `GET_C_STRING_OS_DATA_ALLOCA'
-	(Fldap_search_internal): Ditto
-
-1998-12-11  Martin Buchholz  <martin@xemacs.org>
-
-	* event-msw.c (mswindows_cancel_dispatch_event):
-	Gratuitous code prettification
-
-
-1998-12-07  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fnconc): Fix use of wrong_type_argument().
-
-	* floatfns.c (Ffloat): Fix docstring.
-	(Ffloat): Fix use of wrong_type_argument().
-	(Fabs): Ditto.
-	(extract_float): Ditto.
-	(Fceiling): Ditto.
-	(Fround): Ditto.
-	(Ftruncate): Ditto.
-
-1998-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* frame-msw.c (mswindows_init_frame_1):
-	- use make_lisp_hash_table, not Fmake_hash_table
-	- include elhash.h
-
-	* lisp.h:
-	* alloc.c (make_vector): remove travesty
-	(Fmake_vector):
-	(make_pure_vector):
-	(pure_cons):
-	(make_bit_vector_internal):
-	(make_bit_vector):
-	(make_bit_vector_from_byte_vector):
-	(Fmake_bit_vector):
-	- make vector_equal a little faster.
-	- Don't use variable name `new'.
-	- Use size_t instead of EMACS_INT.
-	- usual Martin-style pointless bit-twiddling.
-
-	* fns.c (mapcar1):
-	(Fmapconcat):
-	(Fmapcar):
-	(Fmapvector):
-	Make mapcar faster.  In particular, make
-	  (mapc #'identity long-string)
-	MUCH faster under Mule.
-	* tests/automated/lisp-tests.el: Test 'em!
-
-	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
-	bytecode.
-
-1998-12-02  Didier Verna  <verna@inf.enst.fr>
-
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1): set the
-	accelerator field to nil for labels.
-
-1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* menubar-msw.c (displayable_menu_item):
-	  Escape occurrences of '&' and support occurrences of the
-	 '%_' accelerator indicator in menus.
-
-1998-11-26  Didier Verna  <verna@inf.enst.fr>
-
-	* dired.c (Fdirectory_files): use make_string instead of
-	make_ext_string on the filename. The conversion external->internal
-	format is already done in sys_readdir.
-
-1998-12-15  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* glyphs.c (normalize_image_instantiator): GCPRO instantiator
-
-1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c
-	  (Belatedly) added Kirill to list of file's authors.
-	  emacs_mswindows_quit_p: Don't process WM_PAINT messages in
-	  quit checking. WM_PAINT messages cause redisplay, but
-	  windows' states are not necessarily stable when this function
-	  gets called.
-
-1998-12-17  Andy Piper  <andy@xemacs.org>
-
-	* strftime.c (zone_name): CONSTify.
-
-1998-12-15  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (mswindows_combo_instantiate): ditto.
-	(mswindows_widget_property): return Qunbound when no property available.
-	(mswindows_button_property): ditto.
-	(mswindows_combo_property): ditto.
-	(mswindows_widget_set_property): ditto.
-
-	* glyphs-widget.c (check_valid_item_list): use properties.
-
-	* glyphs.h (struct Lisp_Image_Instance): we have properties now.
-
-	* glyphs.c (Fset_image_instance_property): allow setting of arbitrary properties.
-	(Fimage_instance_property): ditto.
-	* glyphs-widget.c (widget_property): ditto.
-	(widget_set_property): ditto.
-
-	* frame-msw.c (mswindows_set_frame_pointer): SetCursor() as well
- 	as setting the class cursor so that GC actually changes the
- 	cursor.
-
-	* config.h: don't undef MAIL_USE_POP.
-
-1998-12-13  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c
- 	(image_instantiator_format_create_glyphs_mswindows): line ->
- 	label.
-	(mswindows_label_instantiate): ditto. Play with window flags.
-	(image_instantiator_format_create_glyphs_mswindows): ditto.
-	(vars_of_glyphs_mswindows): provide Qlabel as we support it now.
-
-	* glyphs-widget.c (widget_instantiate_1): re-jig autosizing to
- 	cope with lines and labels.
-	(static_instantiate): use widget_instantiate_1.
-	line -> label.
-	(image_instantiator_format_create_glyphs_widget): ditto.
-
-1998-12-10  Andy Piper  <andy@xemacs.org>
-
-	* Makefile.in.in (objs): add gui.o
-
-1998-12-10  Andy Piper  <andy@xemacs.org>
-
-	* gui.c: adjust defines of HAVE_POPUPS so that we can build with
- 	no window system.
-
-1998-12-09  Andy Piper  <andy@xemacs.org>
-
-	* glyphs.c (finalize_image_instance): mark glyphs changed when an
- 	image instance is removed so that the subwindow cache gets reset
- 	and thus destroyed images get GC'd.
-
-1998-12-08  Andy Piper  <andy@xemacs.org>
-
-	* gui-msw.c (mswindows_handle_gui_wm_command): call
- 	MARK_SUBWINDOWS_CHANGED.
-
-	* glyphs-msw.c (mswindows_finalize_image_instance): make sure
- 	subwindows really get deleted.
-
-	* redisplay.c: new variable subwindows_changed[_set].
-	(redisplay_window): use it.
-	(redisplay_frame): ditto.
-	(redisplay_device): ditto.
-	(redisplay_without_hooks): ditto.
-
-	* device.h (MARK_DEVICE_SUBWINDOWS_CHANGED): new macro for
- 	subwindows redisplay as per glyphs equivalent.
-	* redisplay.h: ditto.
-	(MARK_SUBWINDOWS_CHANGED): ditto.
-	(RESET_CHANGED_SET_FLAGS): ditto.
-	* frame.h (MARK_FRAME_SUBWINDOWS_CHANGED): ditto.
-
-1998-12-07  Andy Piper  <andy@xemacs.org>
-
-	* frame.c (Fmake_frame): reset subwindow cachels on non-stream
- 	frames.
-
-	* redisplay.c (redisplay_frame): invalidate subwindow cachels.
-
-	* event-msw.c (mswindows_wnd_proc): catch the various WM_CTLCOLOR*
- 	messages and paint widget glyphs as appropriate with their face fg
- 	& bg.
-
-1998-12-06  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (vars_of_glyphs_mswindows): provide widget types
- 	here rather than in glyphs-widget - do this because we only want
- 	to provide what is really available.
-
-	* glyphs.c (Fimage_instance_property): new function to get the
- 	properties of image instances. wires through to console specific
- 	methods and then to widget specific methods.
-	(Fset_image_instance_property): ditto but for setting widget properties.
-	(check_valid_face): make extern so that it can be used elsewhere.
+	* glyphs-widget.c (check_valid_tab_orientation): new function.
+	(initialize_widget_image_instance): zero orientation and
+	justification.
+	(widget_instantiate): pick up orientation.
+	(tab_control_query_geometry): return appropriate values for
+	vertical tabs.
 
-	* glyphs-widget.c (widget_property): new function. gets the
- 	properties of widgets in general and wires the function through to
- 	widget specific ones.
-	(widget_set_property): ditto but for setting widget properties.
-
-	* glyphs-msw.c (mswindows_combo_instantiate): Add functionality to
- 	add items to the list. Play with window styles a bit to get the
- 	desired effect.
-	(mswindows_widget_property): break out specific widget properties.
-	(mswindows_button_property): new function. gets the checked state
- 	of a button.
-	(mswindows_combo_property): new function. gets the current
- 	selection in the combo box.
-	(mswindows_widget_set_property): new function. sets specific
- 	properties of specific widgets.
-
-	* glyphs-widget.c (check_valid_item_list): new function. check
- 	that items for a combo-box are just a list of strings.
-	(combo_validate): new function. check there is an item list.
-	(widget_instantiate_1): new function. renamed from
- 	widget_instantiate so that we can do slightly different things for
- 	other widgets.
-	(widget_instantiate): call widget_instantiate_1.
-	(combo_instantiate): new function to instantiate combo boxes,
- 	defaults height to the pixel height of the number of items in the
- 	box.
-	(syms_of_glyphs_widget): move widget keywords here.
-	(image_instantiator_format_create_glyphs_widget): use new combo
- 	functions.
-
-1998-12-04  Andy Piper  <andy@xemacs.org>
-
-	* event-msw.c (mswindows_wnd_proc): mule-ize.
-
-	* glyphs.c (pixmap_to_lisp_data): mule-ize.
-
-	* glyphs-msw.c (extract_xpm_color_names): mule-ize.
-	(resource_name_to_resource): ditto.
-	(mswindows_resource_instantiate): ditto.
-	(mswindows_widget_instantiate): ditto.
-	(mswindows_widget_set_property): ditto.
-
-	* redisplay-output.c (redisplay_output_subwindow): don't show
- 	subwindows if they are obscured at the edge of the frame, emacs
- 	gets into some sort of redisplay loop otherwise.
-
-	* gui.h: prototype gui_item_selected_p.
-
-	* gui.c (gui_item_selected_p): new function to determine the
- 	selected state of a gui_item.
-
-	* frame.h (struct frame): add subwindows_changed flag.
-
-	* redisplay.c (redisplay_frame): call update_frame_subwindows ().
-
-	* glyphs.c (update_subwindow): new function to update a
- 	subwindow's state.
-	(update_frame_subwindows): new function to update all the
- 	subwindows on a frame.
-
-	* console.h (struct console_methods): add update_subwindow.
-
-	* glyphs-msw.c (mswindows_widget_property): return selected state
- 	for selected property.
-	(mswindows_update_subwindow): new function. updates widget glyphs
- 	in redisplay as per menubars or toolbars e.g. selected state.
-	(console_type_create_glyphs_mswindows): add update_subwindow.
-
-1998-12-03  Andy Piper  <andy@xemacs.org>
-
-	* console-tty.c (syms_of_console_tty): MULE -> FILE_CODING since
- 	tty coding system things are such.
-
-	* glyphs-widget.c (widget_face_font_info): new function for
- 	pulling out height and width metrics for a widget's face.
-	(widget_text_to_pixel_conversion): calculate pixel sizes of text
- 	for widgets.
-
-	* event-msw.c (mswindows_drain_windows_queue): translate messages
- 	that are destined for subwindows. This makes edit fields interact
- 	with the keyboard correctly.
-	nuke warnings by #ifndef'ing out stuff not required by msg select().
-
-	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): new
- 	macro defining the iiforma without the symbol required by widget.
-	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): use it.
-
-	* general.c (syms_of_general): add Qwidget, Qselected.
-
-	* faces.c (complex_vars_of_faces): add widget face inheriting from
- 	gui-element face.
-
-1998-11-09  Andy Piper  <andy@xemacs.org>
-
-	* window.h (struct window): add a cache of subwindows on a
- 	per-window basis.
-
-	* window.c (mark_window): mark the subwindow_instance_cache.
-	(allocate_window): initialise the subwindow instance_cache.
-
-	* toolbar-x.c (x_output_toolbar): call redisplay_clear_region
- 	instead of the devmeth.
-	(x_clear_toolbar): ditto.
-
-	* redisplay-x.c (x_output_display_block): call
- 	redisplay_output_subwindow for subwindows and widgets.
-
-	* redisplay-tty.c (tty_output_display_block): add IMAGE_WIDGET to
- 	types to do nothing for.
-
-	* lisp.h: declare new widget/subwindow symbols.
-
-	* glyphs.c (image_instantiate): cache subwindows on a per-window
- 	basis.
-	(subwindow_possible_dest_types): new function for subwindow dest
- 	types.
-	(subwindow_instantiate): generic instantiation of a
- 	subwindow. specialised by device multi-methods.
-	(Fsubwindowp): moved from glyphs-x.c. adapted for glyph-based
- 	subwindows.
-	(Fimage_instance_subwindow_id): ditto.
-	(Fresize_subwindow): ditto.
-	(Fforce_subwindow_map): ditto.
+	* glyphs-msw.c: (mswindows_tab_control_instantiate): assign
+	appropriate creation flags for left, right and bottom tabs.
 
-	* glyphs-x.c (x_print_image_instance): remove subwindow
- 	stuff. Handled genrically in glyphs.c.
-	(x_image_instance_equal): ditto.
-	(x_image_instance_hash): ditto.
-	(x_finalize_image_instance): delete subwindows when required.
-	(mark_subwindow) (print_subwindow) (finalize_subwindow)
- 	(subwindow_hash) (Fmake_subwindow): deleted because of new,
- 	glyph-based, subwindow implementation.
-	(Fsubwindow_height) (Fsubwindow_width) (Fsubwindow_xid): aliased
- 	in glyphs.el
-	(Fsubwindowp) (Fresize_subwindow) (Fforce_subwindow_map): moved to
- 	glyphs.c.
-	(x_unmap_subwindow): new function to unmap X subwindows.
-	(x_map_subwindow): new function to map X subwindows.
-	(x_subwindow_instantiate): new function to instantiate X
- 	subwindows.
-	(x_resize_subwindow): new function to resize X subwindows.
-	(console_type_create_glyphs_x): add subwindow functions.
-	(image_instantiator_format_create_glyphs_x): add device
- 	multi-methods for xpm, xbm and subwindow.
-
-	* glyphs.el (subwindow-xid): old alias for new subwindow functions.
-	(subwindow-width): ditto.
-	(subwindow-height): ditto.
-
-	* glyphs-msw.c (mswindows_widget_instantiate): new function for
- 	generally instantiating ms subwindows. Used by
- 	mswindows_*_instantiate.
-	(mswindows_edit_instantiate): instantiate an edit field on a
- 	mswindows frame.
-
-1998-11-04  Andy Piper  <andy@xemacs.org>
-
-	* symsinit.h: declare new functions.
-
-	* redisplay.h: declare new functions.
-
-	* redisplay-x.c (x_output_display_block): call
- 	redisplay_clear_region rather than x_clear_region.
-	(x_output_string): ditto.
-	(x_output_pixmap): ditto.
-	(x_clear_to_window_end): ditto.
-	(x_output_eol_cursor): ditto.
-	(x_clear_region): only do X specific things. other duties handled
- 	in redisplay_clear_region.
-
-	* redisplay-tty.c (tty_clear_region): do tty specific things - some
- 	duties moved to redisplay_clear_region.
-
-	* redisplay-output.c (clear_left_border): use
- 	redisplay_clear_region instead of device method.
-	(clear_right_border): ditto.
-	(output_display_line): ditto.
-	(redisplay_output_subwindow): ditto.
-	(redisplay_clear_top_of_window): ditto.
-	(redisplay_clear_region): perform duties previously handled by
- 	device methods. call the appropriate device method at the
- 	end. unmap subwindows if necessary.
-
-	* redisplay-msw.c (mswindows_output_string): use
- 	redisplay_clear_region instead of mswindows_clear_region.
-	(mswindows_clear_to_window_end): ditto.
-	(mswindows_output_display_block): output subwindows when required.
-	(mswindows_clear_region): only do mswindows specific things,
- 	everything else is now handled in redisplay_clear_region.
-
-	* gui.h: add item id hash defines and declare function prototypes.
-
-	* gui.c (mark_gui_item): new function for marking gui_items.
-	(gui_item_hash): generic hash function for generating command ids
- 	for gui_items.
-
-	* gui-msw.c: new file.
-	(mswindows_handle_gui_wm_command): new function to handle widget
- 	callbacks.
-
-	* glyphs.h (MAYBE_IIFORMAT_DEVMETH): new function for device
- 	multi-methods.
-	(IIFORMAT_HAS_SHARED_METHOD): ditto.
-	(DEFINE_DEVICE_IIFORMAT): ditto.
-	(INITIALIZE_DEVICE_IIFORMAT): ditto.
-	(struct Lisp_Image_Instance): add widget and subwindow data plus
- 	appropriate access functions.
-
-	* glyphs.c (decode_device_ii_format): new function for decoding
- 	image instantiator functions based on a device type as well as an
- 	image format.
-	(decode_image_instantiator_format): just call
- 	decode_device_ii_format with nil device.
-	(add_entry_to_device_ii_format_list): new function for per device
- 	method instances.
-	(add_entry_to_image_instantiator_format_list): just call
- 	add_entry_to_device_ii_format_list with nil device.
-	(check_valid_vector): new function.
-	(instantiate_image_instantiator): instantiate using per-format
- 	method and then per-format-per-device method (device
- 	multi-methods). signal an error if neither is possible.
-	(mark_image_instance): cope with subwindows and widgets.
-	(print_image_instance): ditto.
-	(image_instance_equal): ditto.
-	(image_instance_hash): ditto.
-	(allocate_glyph): ditto.
-	(glyph_width): ditto.
-	(glyph_height_internal): ditto.
-	(xpm_instantiate): removed because of device multi-methods.
-	(mark_subwindow_cachels): new cachel functions for caching
- 	instantiated subwindows on a per-frame basis. mostly copied from
- 	glyph cachel functions.
-	(update_subwindow_cachel_data): ditto.
-	(add_subwindow_cachel): ditto.
-	(get_subwindow_cachel_index): ditto.
-	(reset_subwindow_cachels): ditto.
-	(mark_subwindow_cachels_as_not_updated): ditto.
-	(unmap_subwindow): generic unmapping of subwindows based on cachel
- 	data.
-	(map_subwindow): ditto.
-	(initialize_subwindow_image_instance): generic initialisation of
- 	subwindow data.
-	(syms_of_glyphs): add widget keywords.
-
-	* glyphs-x.h (struct x_subwindow_data): convert Lisp_Subwindow to
- 	x_subwindow_data.
-
-1998-11-04  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-widget.c: new file for instantiating widget type glyphs.
-	(widget_possible_dest_types): new general dest type function for
- 	widgets.
-	(widget_validate): ditto.
-	(initialize_widget_image_instance): ditto
-	(widget_instantiate): ditto. Sets up fg/bg, gui_item parsing
- 	before handing on control to device multi-methods.
-	(syms_of_glyphs_widget): new function.
-	(image_instantiator_format_create_glyphs_widget): new function,
- 	added placeholders for button, edit, combo, scrollbar
-	(vars_of_glyphs_widget): new function.
-
-	* glyphs-msw.h (WIDGET_INSTANCE_MSWINDOWS_HANDLE): new define for
- 	storing window ids of widgets.
+	* s/cygwin32.h: add tab definitions.
 
-	* glyphs-msw.c (mswindows_finalize_image_instance): cope with
- 	deletion of widget and subwindow glyphs.
-	(mswindows_unmap_subwindow): new device function for unmapping
- 	subwindows on a msw frame.
-	(mswindows_map_subwindow): ditto.
-	(mswindows_register_image_instance): register instantiated widgets
- 	with the widget hastable.
-	(mswindows_button_instantiate): instantiate a button type widget
- 	on an msw frame.
-	(mswindows_subwindow_instantiate): instanttiate a subwindow on a
- 	mswindows frame.
-	(image_instantiator_format_create_glyphs_mswindows): add device
- 	multi-methods for xbm, xpm, subwindow, edit and button.
-
-	* frame.h (struct frame): add subwindow_cachels dynarr for caching
- 	information about subwindows visible on the current frame. used by
- 	redisplay_clear_region to unmap subwindows as required.
-
-	* frame.c (mark_frame): mark subwindow_cachels.
-	(allocate_frame_core): instantiate subwindow_cachels.
-
-	* frame-msw.c (mswindows_init_frame_1): instntiate and mark the
- 	widget hashtable.
-
-	* event-msw.c (mswindows_wnd_proc): add call to
- 	mswindows_handle_gui_wm_command to handle widget callbacks.
-
-	* emacs.c (main_1): add calls to glyphs-widget initialisation
- 	routines.
-
-	* console.h (struct console_methods): add
- 	unmap/map_subwindow_method for use be redisplay_clear_region to
- 	map and unmap subwindows. Remove xpm and xbm stuff - now dealt
- 	with by image instantiator multi-methods. Add
- 	resize_subwindow_method.
-
-	* console-stream.c (stream_clear_region): change signature to
- 	match new generic clear region function.
-
-	* Makefile.in.in: add glyphs-widget.o to list of objects.
-
-	* console-msw.h (struct mswindows_frame): add widget hashtable for
- 	wiring command ids to callbacks.
-
-1998-12-16  Andy Piper  <andy@xemacs.org>
-
-	* XEmacs 21.2.6 is released
-
-1998-12-08  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* md5.c (Fmd5): Correctly initiate string input stream.
-
-	* Makefile.in.in (tests): Add md5-tests.el.
-
-1998-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* lisp.h:
-	* alloc.c (make_vector): remove travesty
-	(Fmake_vector):
-	(make_pure_vector):
-	(pure_cons):
-	(make_bit_vector_internal):
-	(make_bit_vector):
-	(make_bit_vector_from_byte_vector):
-	(Fmake_bit_vector):
-	- make vector_equal a little faster.
-	- Don't use variable name `new'.
-	- Use size_t instead of EMACS_INT.
-	- usual Martin-style pointless bit-twiddling.
-
-	* fns.c (mapcar1):
-	(Fmapconcat):
-	(Fmapcar):
-	(Fmapvector):
-	Make mapcar faster.  In particular, make
-	  (mapc #'identity long-string)
-	MUCH faster under Mule.
-	* tests/automated/lisp-tests.el: Test 'em!
-
-1998-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
-	bytecode.
-
-1998-12-13  Martin Buchholz  <martin@xemacs.org>
-
-	* console-msw.c: Function definitions follow coding standards
-	- This prevents e.g. find-tag on Lisp_Event finding DEVENT
-
-1998-12-11  Martin Buchholz  <martin@xemacs.org>
-
-	* events.h (struct timeout_data):
-	* event-tty.c (tty_timeout_to_emacs_event):
-	* event-msw.c (mswindows_wm_timer_callback):
-	* event-Xt.c (Xt_timeout_to_emacs_event):
-	* event-msw.c (mswindows_cancel_dispatch_event):
-	Make sure Lisp_Objects inside events are initialized to Qnil, not
-	Qnull_pointer, which is now illegal.
-
-1998-12-10  Martin Buchholz  <martin@xemacs.org>
-
-	* lisp.h: Fix up prototypes to match alloc.c
-
-1998-12-09  Andy Piper  <andy@xemacs.org>
-
-	* glyphs-msw.c (init_image_instance_from_xbm_inline): don't use
- 	XSETINT for assigning lisp objects.
-
-1998-12-07  Martin Buchholz  <martin@xemacs.org>
-
-	* opaque.h:
-	* console-msw.c (DHEADER):
-	(DOPAQUE_DATA):
-	(DEVENT):
-	(DCONS):
-	(DCONSCDR):
-	(DSTRING):
-	(DVECTOR):
-	(DSYMBOL):
-	(DSYMNAME):
-	- max_align_t should not be visible to the user of the
-	  XOPAQUE_DATA macro.
-	- use Bufbyte instead of char
-	- parens around (FOOP (obj)) are always redundant.
-	  If they were necessary, we should fix the macro instead.
-	- Always use string_data(foo) instead of foo->data.
-
-1998-12-07  Martin Buchholz  <martin@xemacs.org>
-
-	* sysdep.c (set_descriptor_non_blocking):
-	Since O_NONBLOCK is now always #defined, make use of fcntl
-	conditional on F_SETFL being defined.
-
-1998-12-09  Andy Piper  <andy@xemacs.org>
-
-	* menubar-msw.c (mswindows_handle_wm_command): add back in checks
- 	that got removed in the merge
-
-1998-11-30  Greg Klanderman  <greg@alphatech.com>
-
-	* dired.c (vars_of_dired): bugfix for previous conditionalization
-	of user-name-completion on non- Windows NT.
-
-1998-12-08  Martin Buchholz  <martin@xemacs.org>
-
-	* windowsnt.h: Remove `support' for using index and rindex
-
-	* filelock.c (current_lock_owner):
-	- Change uses of index -> strchr, rindex -> strrchr
-
-1998-12-06  Martin Buchholz  <martin@xemacs.org>
-
-	* frame-msw.c (mswindows_init_frame_1):
-	- use make_lisp_hash_table, not Fmake_hash_table
-	- include elhash.h
-
-1998-12-05  XEmacs Build Bot <builds@cvs.xemacs.org>
-
-	* XEmacs 21.2.5 is released
-
-1998-11-30  Martin Buchholz  <martin@xemacs.org>
+2000-01-12  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
 
-	* xselect.c (receive_incremental_selection):
-	* xselect.c (x_get_window_property):
-	* xmu.c (XmuReadBitmapDataFromFile):
-	* xmu.c (XmuCursorNameToIndex):
-	* xgccache.c (describe_gc_cache):
-	* xgccache.c (gc_cache_lookup):
-	* xgccache.c (free_gc_cache):
-	* xgccache.c (make_gc_cache):
-	* window.h:
-	* window.c (map_windows_1):
-	* window.c (Fother_window_for_scrolling):
-	* window.c (window_scroll):
-	* window.c (change_window_height):
-	* window.c (Fsplit_window):
-	* window.c (window_left_gutter_width):
-	* window.c (window_modeline_height):
-	* window.c (invalidate_vertical_divider_cache_in_window):
-	* window.c (window_needs_vertical_divider_1):
-	* window.c (update_mirror_internal):
-	* window.c (SET_LAST_FACECHANGE):
-	* widget.c (Fwidget_plist_member):
-	* unexec.c (copy_text_and_data):
-	* unexcw.c (copy_executable_and_dump_data_section):
-	* tooltalk.doc:
-	* tooltalk.c (struct Lisp_Tooltalk_Pattern):
-	* tooltalk.c (struct Lisp_Tooltalk_Message):
-	* toolbar.h (struct toolbar_button):
-	* toolbar.c (default_toolbar_visible_p_changed_in_window):
-	* toolbar.c (recompute_overlaying_specifier):
-	* toolbar.c (toolbar_validate):
-	* toolbar.c (toolbar_button_at_pixpos):
-	* toolbar.c (get_toolbar_coords):
-	* toolbar.c (update_frame_toolbars):
-	* toolbar-x.c:
-	* toolbar-msw.c (mswindows_handle_toolbar_wm_command):
-	* toolbar-msw.c (mswindows_find_toolbar_pos):
-	* toolbar-msw.c (mswindows_output_toolbar):
-	* toolbar-msw.c (mswindows_clear_toolbar):
-	* toolbar-msw.c:
-	* systty.h:
-	* syssignal.h:
-	* sysproc.h:
-	* sysfile.h:
-	* sysdll.c:
-	* sysdep.h:
-	* sysdep.c (rmdir):
-	* sysdep.c (sys_fopen):
-	* sysdep.c (sys_open):
-	* sysdep.c (tty_init_sys_modes_on_device):
-	* sysdep.c (get_eof_char):
-	* sysdep.c (child_setup_tty):
-	* sysdep.c (set_descriptor_non_blocking):
-	* syntax.h:
-	* syntax.c (scan_words):
-	* syntax.c:
-	* symsinit.h:
-	* symeval.h (struct symbol_value_varalias):
-	* symeval.h (struct symbol_value_forward):
-	* symbols.c (syms_of_symbols):
-	* symbols.c (init_symbols_once_early):
-	* symbols.c (Fbuilt_in_variable_type):
-	* symbols.c (Fsymbol_value_in_buffer):
-	* symbols.c (default_value):
-	* symbols.c (Fset):
-	* symbols.c (find_symbol_value_quickly):
-	* symbols.c (store_symval_forwarding):
-	* symbols.c (set_default_console_slot_variable):
-	* symbols.c (set_default_buffer_slot_variable):
-	* symbols.c (verify_ok_for_buffer_local):
-	* symbols.c (symbol_is_constant):
-	* symbols.c (oblookup):
-	* symbols.c (Funintern):
-	* symbols.c (Fintern):
-	* symbols.c (check_obarray):
-	* sunplay.c:
-	* specifier.h (struct specifier_methods):
-	* specifier.h:
-	* specifier.c (specifier_instance):
-	* specifier.c (specifier_instance_from_inst_list):
-	* specifier.c (decode_locale_type):
-	* specifier.c (specifier_equal):
-	* specifier.c (finalize_specifier):
-	* specifier.c (prune_specifiers):
-	* specifier.c (kill_specifier_buffer_locals):
-	* sound.c (init_native_sound):
-	* sound.c:
-	* signal.c (alarm):
-	* search.c (Fmatch_data):
-	* search.c (match_limit):
-	* search.c (Freplace_match):
-	* search.c (skip_chars):
-	* search.c (scan_buffer):
-	* search.c:
-	* scrollbar.c (specifier_vars_of_scrollbar):
-	* scrollbar.c (Fscrollbar_set_hscroll):
-	* scrollbar.c (vertical_scrollbar_changed_in_window):
-	* scrollbar.c (release_window_mirror_scrollbars):
-	* scrollbar.c (free_scrollbar_instance):
-	* scrollbar-x.c:
-	* scrollbar-msw.c:
-	* s/msdos.h (O_BINARY):
-	* s/linux.h:
-	* s/freebsd.h (LIBS_TERMCAP):
-	* regex.c (re_match_2_internal):
-	* regex.c (compile_extended_range):
-	* regex.c (POP_FAILURE_POINT):
-	* regex.c (PUSH_FAILURE_POINT):
-	* redisplay.h (RESET_CHANGED_SET_FLAGS):
-	* redisplay.h:
-	* redisplay.h (struct display_line):
-	* redisplay.h (struct rune):
-	* redisplay.c (vars_of_redisplay):
-	* redisplay.c (redisplay_variable_changed):
-	* redisplay.c (UPDATE_CACHE_RETURN):
-	* redisplay.c (validate_line_start_cache):
-	* redisplay.c (mark_redisplay_structs):
-	* redisplay.c (mark_glyph_block_dynarr):
-	* redisplay.c (window_line_number):
-	* redisplay.c (redisplay_frame):
-	* redisplay.c (redisplay_window):
-	* redisplay.c (generate_modeline):
-	* redisplay.c (create_right_glyph_block):
-	* redisplay.c (create_left_glyph_block):
-	* redisplay.c (create_text_block):
-	* redisplay.c:
-	* redisplay-x.c (x_output_hline):
-	* redisplay-x.c (x_output_vertical_divider):
-	* redisplay-tty.c (tty_output_display_block):
-	* redisplay-output.c (output_display_line):
-	* redisplay-output.c:
-	* redisplay-msw.c (mswindows_output_vertical_divider):
-	* redisplay-msw.c (mswindows_ring_bell):
-	* redisplay-msw.c (mswindows_output_cursor):
-	* redisplay-msw.c:
-	* rangetab.c:
-	* ralloc.c:
-	* puresize.h (RAW_PURESIZE):
-	* profile.c (syms_of_profile):
-	* profile.c (Fstart_profiling):
-	* profile.c (sigprof_handler):
-	* profile.c:
-	* procimpl.h:
-	* process.c (vars_of_process):
-	* process.c (read_process_output):
-	* process.c (get_process):
-	* process.c:
-	* process-unix.c (unix_open_multicast_group):
-	* process-unix.c (unix_get_tty_name):
-	* process-unix.c (unix_send_process):
-	* process-unix.c (unix_reap_exited_processes):
-	* process-unix.c (unix_create_process):
-	* process-unix.c (unix_init_process_io_handles):
-	* process-unix.c (allocate_pty):
-	* process-unix.c:
-	* process-nt.c (nt_open_network_stream):
-	* process-nt.c (nt_update_status_if_terminated):
-	* process-nt.c (nt_finalize_process_data):
-	* process-nt.c:
-	* print.c (debug_short_backtrace):
-	* print.c (debug_backtrace):
-	* print.c (print_symbol):
-	* print.c (print_internal):
-	* print.c (print_cons):
-	* print.c (Fwrite_char):
-	* print.c (print_prepare):
-	* print.c (canonicalize_printcharfun):
-	* print.c (output_string):
-	* print.c:
-	* opaque.h:
-	* opaque.c (allocate_managed_opaque):
-	* opaque.c:
-	* offix.c (DndSetData):
-	* objects.c (face_boolean_create):
-	* objects.c (font_instantiate):
-	* objects.c (font_create):
-	* objects.c (color_create):
-	* objects.c (finalize_font_instance):
-	* objects.c (finalize_color_instance):
-	* objects.c:
-	* objects-x.c (x_font_instance_truename):
-	* objects-x.c:
-	* objects-x.c (x_initialize_font_instance):
-	* objects-x.c (allocate_nearest_color):
-	* objects-tty.c (tty_initialize_font_instance):
-	* objects-tty.c (tty_initialize_color_instance):
-	* objects-msw.c (mswindows_initialize_color_instance):
-	* ntproc.c (syms_of_ntproc):
-	* ntproc.c (Fwin32_set_process_priority):
-	* ntproc.c (sys_spawnve):
-	* ntproc.c:
-	* ntheap.c (get_data_end):
-	* nt.c (period):
-	* nt.c:
-	* nt.c (stat):
-	* nt.c (generate_inode_val):
-	* nt.c (sys_rename):
-	* nas.c:
-	* mule-wnnfns.c (Fwnn_hinsi_number):
-	* mule-wnnfns.c (Fwnn_yuragi):
-	* mule-wnnfns.c (Fwnn_common_learn):
-	* mule-wnnfns.c (Fwnn_suffix_learn):
-	* mule-wnnfns.c (Fwnn_prefix_learn):
-	* mule-wnnfns.c (Fwnn_okuri_learn):
-	* mule-wnnfns.c (Fwnn_complex_conv):
-	* mule-wnnfns.c (Fwnn_last_is_first):
-	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
-	* mule-wnnfns.c (Fwnn_notrans_dict_add):
-	* mule-wnnfns.c (Fwnn_fiusr_dict_add):
-	* mule-wnnfns.c (Fwnn_fisys_dict_add):
-	* mule-wnnfns.c (Fwnn_hinsi_list):
-	* mule-wnnfns.c (Fwnn_fuzokugo_set):
-	* mule-wnnfns.c (Fwnn_dict_search):
-	* mule-wnnfns.c (Fwnn_word_toroku):
-	* mule-wnnfns.c (Fwnn_hindo_update):
-	* mule-wnnfns.c (Fwnn_bunsetu_henkou):
-	* mule-wnnfns.c (Fwnn_kakutei):
-	* mule-wnnfns.c (Fwnn_begin_henkan):
-	* mule-wnnfns.c (Fwnn_dict_comment):
-	* mule-wnnfns.c (Fwnn_dict_add):
-	* mule-wnnfns.c (Fwnn_open):
-	* mule-mcpath.c (mc_getcwd):
-	* mule-coding.c (vars_of_mule_coding):
-	* mule-coding.c (convert_to_external_format):
-	* mule-coding.c (encoding_marker):
-	* mule-coding.c (decoding_marker):
-	* mule-coding.c (Fcopy_coding_system):
-	* mule-coding.c (Fmake_coding_system):
-	* mule-coding.c (Fcoding_system_list):
-	* mule-coding.c (Ffind_coding_system):
-	* mule-coding.c (symbol_to_eol_type):
-	* mule-coding.c:
-	* mule-charset.c (complex_vars_of_mule_charset):
-	* mule-charset.c (vars_of_mule_charset):
-	* mule-charset.c (Fset_charset_ccl_program):
-	* mule-charset.c (struct charset_list_closure):
-	* mule-charset.c (Ffind_charset):
-	* mule-charset.c (make_charset):
-	* mule-charset.c (non_ascii_valid_char_p):
-	* mule-charset.c:
-	* mule-ccl.c (ccl_driver):
-	* mule-canna.c (c2mu):
-	* mule-canna.c (Fcanna_henkan_begin):
-	* mule-canna.c (Fcanna_parse):
-	* mule-canna.c (Fcanna_store_yomi):
-	* mule-canna.c (Fcanna_touroku_string):
-	* mule-canna.c (Fcanna_initialize):
-	* minibuf.c:
-	* menubar.c (menu_parse_submenu_keywords):
-	* menubar-x.c (make_dummy_xbutton_event):
-	* menubar-x.c (set_frame_menubar):
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
-	* menubar-x.c:
-	* menubar-msw.h:
-	* menubar-msw.c (mswindows_popup_menu):
-	* menubar-msw.c (mswindows_update_frame_menubars):
-	* menubar-msw.c (mswindows_handle_wm_command):
-	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
-	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1):
-	* menubar-msw.c (update_frame_menubar_maybe):
-	* menubar-msw.c (populate_or_checksum_helper):
-	* menubar-msw.c (empty_menu):
-	* menubar-msw.c:
-	* md5.c:
-	* marker.c (set_marker_internal):
-	* marker.c (print_marker):
-	* malloc.c:
-	* make-src-depend:
-	* lstream.c (lisp_buffer_rewinder):
-	* lstream.c (mark_lstream):
-	* lrecord.h:
-	* lrecord.h (struct lrecord_header):
-	* lread.c (readevalloop):
-	* lread.c (locate_file):
-	* lread.c (locate_file_in_directory):
-	* lread.c (Flocate_file):
-	* lread.c (load_force_doc_string_unwind):
-	* lread.c (ebolify_bytecode_constants):
-	* lread.c:
-	* lisp.h:
-	* lisp-union.h:
-	* lisp-disunion.h:
-	* linuxplay.c (linux_play_data_or_file):
-	* linuxplay.c (audio_init):
-	* line-number.c:
-	* keymap.h:
-	* keymap.c (describe_map):
-	* keymap.c (describe_map_mapper):
-	* keymap.c (Fdescribe_bindings_internal):
-	* keymap.c (Fsingle_key_description):
-	* keymap.c (map_keymap_sorted):
-	* keymap.c (get_relevant_keymaps):
-	* keymap.c (Flookup_key):
-	* keymap.c (raw_lookup_key_mapper):
-	* keymap.c (Fdefine_key):
-	* keymap.c (Fevent_matches_key_specifier_p):
-	* keymap.c (key_desc_list_to_event):
-	* keymap.c (define_key_parser):
-	* keymap.c (define_key_check_and_coerce_keysym):
-	* keymap.c (keymap_submaps):
-	* keymap.c (keymap_store_internal):
-	* keymap.c (keymap_delete_inverse_internal):
-	* keymap.c (keymap_store_inverse_internal):
-	* keymap.c (print_keymap):
-	* keymap.c (Lisp_Keymap):
-	* keymap.c:
-	* intl.c:
-	* insdel.c (convert_bufbyte_string_into_emchar_dynarr):
-	* insdel.c (make_gap):
-	* input-method-xlib.c (get_XIM_input):
-	* input-method-xlib.c (XIM_init_frame):
-	* imgproc.c:
-	* hash.h:
-	* hash.c:
-	* gui.c:
-	* gui-x.c (button_item_to_widget_value):
-	* gui-x.c (popup_selection_callback):
-	* glyphs.h (struct image_instantiator_methods):
-	* glyphs.c (mark_glyph_cachels):
-	* glyphs.c (Fglyph_type):
-	* glyphs.c (image_instantiate):
-	* glyphs.c (image_create):
-	* glyphs.c (make_image_instance_1):
-	* glyphs.c (finalize_image_instance):
-	* glyphs.c:
-	* glyphs-x.c (finalize_subwindow):
-	* glyphs-x.c (xface_validate):
-	* glyphs-x.c (x_locate_pixmap_file):
-	* glyphs-x.c (convert_EImage_to_XImage):
-	* glyphs-msw.c:
-	* glyphs-msw.c (mswindows_resource_instantiate):
-	* glyphs-msw.c (xpm_to_eimage):
-	* glyphs-msw.c (convert_EImage_to_DIBitmap):
-	* glyphs-eimage.c (tiff_instantiate):
-	* glyphs-eimage.c (png_instantiate):
-	* glyphs-eimage.c (struct png_error_struct):
-	* glyphs-eimage.c (gif_memory_storage):
-	* glyphs-eimage.c:
-	* gifrlib.h:
-	* getloadavg.c (getloadavg):
-	* getloadavg.c:
-	* gdbinit:
-	* free-hook.c (log_gcpro):
-	* free-hook.c (check_malloc):
-	* free-hook.c (check_free):
-	* free-hook.c (ROUND_UP_TO_PAGE):
-	* free-hook.c:
-	* frame.h (struct frame):
-	* frame.h:
-	* frame.c (change_frame_size_1):
-	* frame.c (allocate_frame_core):
-	* frame.c:
-	* frame-x.c (x_focus_on_frame):
-	* frame-x.c (x_init_frame_2):
-	* frame-x.c (x_popup_frame):
-	* frame-x.c (xemacs_XtPopup):
-	* frame-x.c:
-	* frame-x.c (Foffix_start_drag_internal):
-	* frame-x.c (x_cde_destroy_callback):
-	* frame-x.c (x_wm_hack_wm_protocols):
-	* frame-tty.c (tty_frame_visible_p):
-	* frame-msw.c (mswindows_make_frame_invisible):
-	* frame-msw.c (mswindows_after_init_frame):
-	* frame-msw.c (mswindows_init_frame_1):
-	* fns.c (syms_of_fns):
-	* fns.c (Fbase64_decode_string):
-	* fns.c (Fnconc):
-	* fns.c (Ffillarray):
-	* fns.c (Fobject_plist):
-	* fns.c (Fget):
-	* fns.c (Fcanonicalize_lax_plist):
-	* fns.c (Fcanonicalize_plist):
-	* fns.c (Fplist_remprop):
-	* fns.c (Fplist_get):
-	* fns.c (advance_plist_pointers):
-	* fns.c (internal_plist_put):
-	* fns.c (Fnreverse):
-	* fns.c (Fremassq):
-	* fns.c (Felt):
-	* fns.c (Fsubstring):
-	* fns.c (Fbvconcat):
-	* fns.c (Flength):
-	* fns.c (length_with_bytecode_hack):
-	* fns.c (print_bit_vector):
-	* fns.c:
-	* floatfns.c (Ffloor):
-	* floatfns.c:
-	* floatfns.c (in_float_error):
-	* fileio.c (Ffile_modes):
-	* fileio.c (Fexpand_file_name):
-	* fileio.c (Fmake_temp_name):
-	* fileio.c (Ffile_name_nondirectory):
-	* fileio.c (Ffile_name_directory):
-	* file-coding.h:
-	* file-coding.c (vars_of_mule_coding):
-	* file-coding.c (convert_to_external_format):
-	* file-coding.c (encoding_marker):
-	* file-coding.c (decoding_marker):
-	* file-coding.c (Fcopy_coding_system):
-	* file-coding.c (Fmake_coding_system):
-	* file-coding.c (struct coding_system_list_closure):
-	* file-coding.c (Ffind_coding_system):
-	* file-coding.c (symbol_to_eol_type):
-	* file-coding.c:
-	* faces.h (struct face_cachel):
-	* faces.c (vars_of_faces):
-	* faces.c (face_property_was_changed):
-	* faces.c (mark_face_cachels):
-	* faces.c (temporary_faces_list):
-	* faces.c (struct face_list_closure):
-	* faces.c:
-	* extents.h (struct extent):
-	* extents.c (vars_of_extents):
-	* extents.c (struct copy_string_extents_1_arg):
-	* extents.c (add_string_extents_mapper):
-	* extents.c (Fextent_property):
-	* extents.c (Fset_extent_property):
-	* extents.c (symbol_to_glyph_layout):
-	* extents.c (properties_equal):
-	* extents.c (print_extent):
-	* extents.c (print_extent_1):
-	* extents.c (extent_in_region_p):
-	* extents.c (gap_array_make_gap):
-	* extents.c:
-	* events.h (struct Lisp_Event):
-	* events.h:
-	* events.c (Fevent_properties):
-	* events.c (format_event_object):
-	* events.c (Fmake_event):
-	* events.c (event_equal):
-	* events.c (print_event):
-	* events.c (mark_event):
-	* event-stream.c ((read-char)
-	* event-stream.c (vars_of_event_stream):
-	* event-stream.c (syms_of_event_stream):
-	* event-stream.c (Fset_recent_keys_ring_size):
-	* event-stream.c (Fsit_for):
-	* event-stream.c (Fnext_event):
-	* event-stream.c (execute_help_form):
-	* event-stream.c (maybe_kbd_translate):
-	* event-stream.c:
-	* event-msw.c (vars_of_event_mswindows):
-	* event-msw.c (mswindows_wnd_proc):
-	* event-msw.c (mswindows_need_event):
-	* event-msw.c (mswindows_drain_windows_queue):
-	* event-msw.c (mswindows_pump_outstanding_events):
-	* event-msw.c:
-	* event-msw.c (slurp_thread):
-	* event-msw.c (struct ntpipe_slurp_stream):
-	* event-msw.c (HANDLE_TO_USID):
-	* event-Xt.c (emacs_Xt_handle_magic_event):
-	* event-Xt.c (x_event_to_emacs_event):
-	* event-Xt.c (x_reset_modifier_mapping):
-	* event-Xt.c (x_reset_key_mapping):
-	* event-Xt.c:
-	* eval.c (syms_of_eval):
-	* eval.c (warn_when_safe):
-	* eval.c (warn_when_safe_lispobj):
-	* eval.c (Fbacktrace_frame):
-	* eval.c (Fbacktrace):
-	* eval.c (top_level_set):
-	* eval.c (unbind_to_hairy):
-	* eval.c (specbind_magic):
-	* eval.c (specbind_unwind_wasnt_local):
-	* eval.c (call2_trapping_errors):
-	* eval.c (call1_trapping_errors):
-	* eval.c (catch_them_squirmers_call2):
-	* eval.c (call0_trapping_errors):
-	* eval.c (run_hook_trapping_errors):
-	* eval.c (catch_them_squirmers_eval_in_buffer):
-	* eval.c (call4_in_buffer):
-	* eval.c (call3_in_buffer):
-	* eval.c (call2_in_buffer):
-	* eval.c (call1_in_buffer):
-	* eval.c (call0_in_buffer):
-	* eval.c (run_hook):
-	* eval.c (run_hook_with_args_in_buffer):
-	* eval.c (Fapply):
-	* eval.c (Feval):
-	* eval.c (do_autoload):
-	* eval.c (un_autoload):
-	* eval.c (Fautoload):
-	* eval.c (Finteractive_p):
-	* eval.c (Fcommand_execute):
-	* eval.c (signal_quit):
-	* eval.c (call_with_suspended_errors):
-	* eval.c (signal_error):
-	* eval.c (return_from_signal):
-	* eval.c (Fcall_with_condition_handler):
-	* eval.c (run_condition_case_handlers):
-	* eval.c (condition_case_1):
-	* eval.c (Funwind_protect):
-	* eval.c (unwind_to_catch):
-	* eval.c (internal_catch):
-	* eval.c (Fmacroexpand_internal):
-	* eval.c (Fuser_variable_p):
-	* eval.c (Fdefconst):
-	* eval.c (Fdefvar):
-	* eval.c (Ffunction):
-	* eval.c (signal_call_debugger):
-	* eval.c (call_debugger):
-	* eval.c:
-	* emacs.c (main):
-	* emacs.c (sort_args):
-	* emacs.c (main_1):
-	* elhash.h:
-	* elhash.c:
-	* editfns.c (Fencode_time):
-	* editfns.c (Fdecode_time):
-	* editfns.c (Fuser_full_name):
-	* editfns.c:
-	* editfns.c (save_excursion_restore):
-	* ecrt0.c:
-	* dynarr.c:
-	* doprnt.c (emacs_doprnt_1):
-	* doc.c (verify_doc_mapper):
-	* doc.c (Fsnarf_documentation):
-	* doc.c (Fdocumentation):
-	* dll.c:
-	* dired.c (user_name_completion):
-	* dired.c (Fdirectory_files):
-	* dialog-x.c:
-	* dialog-msw.c:
-	* dgif_lib.c (FreeSavedImages):
-	* dgif_lib.c (DGifGetImageDesc):
-	* device.h:
-	* device.h (struct device):
-	* device.c (Fselect_device):
-	* device.c (allocate_device):
-	* device.c:
-	* device-x.c (Fx_keysym_on_keyboard_p):
-	* device-x.c (Fx_valid_keysym_name_p):
-	* device-x.c (x_IO_error_handler):
-	* device-x.c (x_delete_device):
-	* device-x.c (x_finish_init_device):
-	* device-x.c (x_init_device):
-	* device-x.c:
-	* device-msw.c (mswindows_init_device):
-	* dbxrc:
-	* database.c (vars_of_database):
-	* database.c (Fput_database):
-	* database.c (Fopen_database):
-	* database.c (berkdb_remove):
-	* database.c (berkdb_put):
-	* database.c (Fdatabasep):
-	* database.c (print_database):
-	* database.c:
-	* data.c (vars_of_data):
-	* data.c (syms_of_data):
-	* data.c (init_errors_once_early):
-	* data.c (prune_weak_lists):
-	* data.c (finish_marking_weak_lists):
-	* data.c (print_weak_list):
-	* data.c (Fmod):
-	* data.c (Fstring_to_number):
-	* data.c (Fnumber_to_string):
-	* data.c (Findirect_function):
-	* data.c (Fsetcdr):
-	* data.c (Ffloatp):
-	* data.c (Fsubr_interactive):
-	* data.c (Farrayp):
-	* data.c (Fkeywordp):
-	* data.c (Fnull):
-	* data.c:
-	* console.h (CONSOLE_NAME):
-	* console.h:
-	* console.c (vars_of_console):
-	* console.c (Fselect_console):
-	* console.c:
-	* console-x.h (DEVICE_X_COLORMAP):
-	* console-x.h (struct x_device):
-	* console-x.c (x_device_to_console_connection):
-	* console-tty.h (CONSOLE_TTY_FINAL_CURSOR_Y):
-	* console-tty.c (tty_init_console):
-	* console-tty.c:
-	* console-msw.h (struct mswindows_frame):
-	* conslots.h:
-	* config.h.in:
-	* cmds.c (internal_self_insert):
-	* cmds.c (Fforward_line):
-	* cmds.c (Fforward_char):
-	* cmds.c:
-	* cmdloop.c:
-	* chartab.c (mark_char_table_entry):
-	* chartab.c:
-	* casefiddle.c (casify_word):
-	* callproc.c (child_setup):
-	* callproc.c (Fcall_process_internal):
-	* callproc.c:
-	* callint.c (Fcall_interactively):
-	* bytecode.h:
-	* bytecode.c (execute_rare_opcode):
-	* bytecode.c (execute_optimized_program):
-	* bytecode.c:
-	* bufslots.h:
-	* buffer.h (BUFFER_REALLOC):
-	* buffer.h (GET_CHARPTR_INT_DATA_ALLOCA):
-	* buffer.h (GET_CHARPTR_EXT_DATA_ALLOCA):
-	* buffer.h:
-	* buffer.h (MAP_INDIRECT_BUFFERS):
-	* buffer.h (CHECK_LIVE_BUFFER):
-	* buffer.c (init_initial_directory):
-	* buffer.c (complex_vars_of_buffer):
-	* buffer.c (vars_of_buffer):
-	* buffer.c (finish_init_buffer):
-	* buffer.c (Fget_file_buffer):
-	* buffer.c (Fbuffer_list):
-	* buffer.c (mark_buffer):
-	* balloon_help.c (balloon_help_move_to_pointer):
-	* balloon_help.c (show_help):
-	* balloon_help.c:
-	* backtrace.h:
-	* alloc.c (garbage_collect_1):
-	* alloc.c (sweep_strings):
-	* alloc.c (sweep_compiled_functions):
-	* alloc.c (sweep_bit_vectors_1):
-	* alloc.c (sweep_vectors_1):
-	* alloc.c (sweep_lcrecords_1):
-	* alloc.c (tick_lcrecord_stats):
-	* alloc.c (pure_string_sizeof):
-	* alloc.c (mark_conses_in_list):
-	* alloc.c (mark_object):
-	* alloc.c (report_pure_usage):
-	* alloc.c (make_pure_float):
-	* alloc.c (make_pure_string):
-	* alloc.c (free_managed_lcrecord):
-	* alloc.c (mark_string):
-	* alloc.c (noseeum_make_marker):
-	* alloc.c (allocate_event):
-	* alloc.c (Fbit_vector):
-	* alloc.c (Fvector):
-	* alloc.c (make_float):
-	* alloc.c (Fmake_list):
-	* alloc.c (Flist):
-	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
-	* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST):
-	* alloc.c (DECLARE_FIXED_TYPE_ALLOC):
-	* alloc.c (dbg_constants):
-	* alloc.c (gc_record_type_p):
-	* alloc.c (free_lcrecord):
-	* alloc.c (xmalloc):
-	* alloc.c (NOSEEUM_INCREMENT_CONS_COUNTER):
-	* abbrev.c:
-	* Makefile.in.in (mostlyclean):
-	* Makefile.in.in (external_client_xlib_objs_nonshared):
-	* Makefile.in.in (temacs_link_args):
-	* Makefile.in.in (release):
-	* Makefile.in.in (dnd_objs):
-	* Makefile.in.in (objs):
-	* Makefile.in.in (PROGNAME):
-	* EmacsShell.c: cast strings to (XtPointer)
-	* EmacsFrame.c: cast strings to (XtPointer)
-	- mega patch
-	- rewrite basic lisp functions for speed
-	- rewrite bytecode interpreter for speed
-	- rewrite list looping constructs for speed and safety using
-	  tortoise/hare.
-	- use size_t where appropriate.
-	- new hashtable implementation
-	- cleanup implementation of opaques
-	- opaques can now be purecopy'ed
-	- move some cl functionality into C for speed.
-	- remove last remaining VMS support
-	- spelling fixes
-	- improve gdb/dbx debugger support
-	- move pure.c back into alloc.c for performance
-	- enable report_pure_usage() if --memory-usage-stats
-	- remove remnants of Energize support (EMACS_BTL, cadillac...)
-	- don't use symbols with leading `_' or embedded `__'
-	- globally cleanup duplicated semicolons `;;'
-	- I give in on %p vs %lx - we use printf("%lx",(long) p)
-	  globally.
-	- globally replace O_NDELAY with O_NONBLOCK.
-	- globally replace CDISABLE with _POSIX_VDISABLE.
-	- use O_RDONLY and O_RDWR instead of magic `0' and `2'.
-	- define (and maybe use!) STDERR_FILENO and friends.
-	- add support for macros defined in C
-	- `when', `unless', `not' and `defalias' now defined in C,
-	  so that they are universally available.
-	- rename defvar_mumble to defvar_magic
-	- rename RETURN__ to RETURN_SANS_WARNINGS
-	- use consistent style of initial caps in error messages
-	- implement last, butlast, nbutlast, copy-list in C.
-	- provide typedefs for all struct Lisp_foo types
-	- Lisp_Objects must be initialized to Qnil rather than 0.
-	- make sure XEmacs runs (slowly) with always_gc == 1;
-	- fast and safe LOOP_* macros
-	- change calls to XSETOBJ to XSETFOO
-	- replace calls to XSETINT by make_int()
-	- plug up memory leaks
-	- use style markobj (foo), not silly ((markobj) (foo))
-	- use XFLOAT_DATA (obj) instead of float_data (XFLOAT (obj))
-
-1998-12-02  P. E. Jareth Hein  <jareth@camelot.co.jp>
-
-	* unexec.c: Changed a #ifndef statement to fix XEmacs on BSDI 3.0
-
-1998-11-28  SL Baur  <steve@altair.xemacs.org>
-
-	* XEmacs 21.2-beta4 is released.
-
-1998-11-27  SL Baur  <steve@altair.xemacs.org>
-
-	* mule-charset.c (complex_vars_of_mule_charset): Fix graphic
-	property in control-1 charset.
-	From Julian Bradfield <jcb@daimi.au.dk>
-
-1998-11-26  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* gui-x.c (button_item_to_widget_value): Ignore :key-sequence
-	keyword.
-	Add stub for :label.
-
-	* gui.c (gui_item_add_keyval_pair): ditto.
-
-	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Ignore
-	:key-sequence keyword.
-	Add stub for:label.
-	Support :active for submenus like the Windows code and FSF Emacs.
-
-1998-11-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* dired.c (make_directory_hash_table): make_string() is OK because
-	readdir() Mule-encapsulates.
-
-1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fbase64_encode_string): Fix docstring.
-	(Fbase64_decode_string): Ditto.
-
-1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* editfns.c (Ftranslate_region): Use
-	convert_bufbyte_string_into_emchar_string().
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* editfns.c (Ftranslate_region): Accept vectors and char-tables as
-	well as strings.
-	(Ftranslate_region): Turn table into an array of Emchars for
-	larger regions.
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* chartab.c (Freset_char_table): Fix wrong placement of #endif.
-
-1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* chartab.c (Freset_char_table): Don't blindly fill chartables of
-	type `char' with nils.
-
-	* chartab.c (canonicalize_char_table_value): Coerce ints to chars
-	for tables of type `char'.
-
-1998-11-26  Didier Verna  <verna@inf.enst.fr>
-
-	* input-method-xlib.c (Initialize_Locale): don't call
-	XtSetLanguageProc. We've done the whole work here.
-	* input-method-xfs.c (Initialize_Locale): ditto.
-	* input-method-motif.c (Initialize_Locale): ditto.
-
-1998-11-26  Didier Verna  <verna@inf.enst.fr>
-
-	* process-unix.c (unix_create_process): handle properly
-	Vfile_name_coding_system for converting the program and directory
-	names.
-
-1998-11-27  SL Baur  <steve@altair.xemacs.org>
-
-	* m/arm.h: New file.
-	From James LewisMoss <dres@ioa.com>
-
-1998-11-27  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>
-
-	* m/mips-nec.h:
-	Fix the realpath() problem of UnixWare2.1.3.
-	Patches for NEC's sysv4.2 machine.
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* dired.c (Fdirectory_files): Remove redundant code.
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (free_malloced_ptr): New function.
-	(XMALLOC_OR_ALLOCA): New macro.
-	(XMALLOC_UNBIND): Ditto.
-	(Fbase64_encode_region): Use malloc() for large blocks; arrange it
-	to be freed in case of non-local exit.
-	(Fbase64_encode_string): Ditto.
-	(Fbase64_decode_region): Ditto.
-	(Fbase64_decode_string): Ditto.
-	(STORE_BYTE): New macro.
-	(base64_decode_1): Use it.
-
-1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (base64_value_to_char): Base64 stuff.
-
-1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* editfns.c (Fbuffer_substring): New function.
-
-	* lisp.h: Declare make_string_from_buffer_no_extents().
-
-	* insdel.c (make_string_from_buffer_1): New function.
-	(make_string_from_buffer_no_extents): Ditto.
-
-1998-11-15  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* linuxplay.c: Including <fcntl.h> instead of <sys/fcntl.h> makes
-	sound work on AIX with OSS installed.  Linux should still work.
-
-1998-11-03  Andy Piper  <andyp@parallax.co.uk>
-
-	* config.h.in: name change for cygwin/version.h
-
-	* configure.in: check for cygwin/version.h now.
-
-	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
-	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
-	move cygwin32/version.h to cygwin/version.h
-
-1998-11-03  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp.h  (struct  Lisp_Bit_Vector): Fix declaration of  bits from
-	int to long.
-
-1998-10-22  Andy Piper  <andyp@parallax.co.uk>
-
-	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
-	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
-	enable BROKEN_SIGIO under b20 to make QUIT work.
-
-1998-10-22  Andy Piper  <andyp@parallax.co.uk>
-
-	* frame-msw.c (mswindows_size_frame_internal): force frame sizing
-	to fit within the constraints of the screen size. I.e. make the
-	frame small enough to fit and move it if some of it will be
-	off-screen.
-
-1998-10-19  Greg Klanderman  <greg@alphatech.com>
-
-	* dired.c: conditionalize inclusion of user-name-completion
-	primitives on non-Windows NT.  The needed functions don't exist on NT.
-
-1998-11-24  SL Baur  <steve@altair.xemacs.org>
-
-	* gifrlib.h: Clean up types for 64 bit compile.
-	* dgif_lib.c (DGifInitRead): Ditto.
-	(MakeSavedImage): Ditto.
-	* emacs.c (decode_path): Ditto.
-	From Steve Carney <carney@pa.dec.com>
-
-1998-10-16  William M. Perry  <wmperry@aventail.com>
-
-	* glyphs-msw.c (bitmap_table): Fixed typo in builtin bitmaps
-	  (cehckboxes instead of checkboxes).
-
-1998-10-15  SL Baur  <steve@altair.xemacs.org>
-
-	* XEmacs 21.2-beta3 is released.
-
-1998-10-13  Raymond Toy  <toy@rtp.ericsson.se>
-
-	* runemacs.c (WinMain): If the basename is "rungnuclient.exe", run
-	gnuclient.  Otherwise, we run xemacs as we always did.  This gets
-	rid of the annoying DOS window when running gnuclient.
-
-1998-10-13  Andy Piper  <andyp@parallax.co.uk>
-
-	* dragdrop.c (vars_of_dragdrop): rename HAVE_MSWINDOWS ->
-	HAVE_MS_WINDOWS typo.
-
-1998-10-13  SL Baur  <steve@altair.xemacs.org>
-
-	* process-unix.c (unix_send_process): Set closed flag on writable
-	pipe after SIGPIPE is received and before we call deactivate_process.
-
-1998-10-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>
-
-	* window.c (Fset_window_start): respect narrowing when
-	checking wheter start is at the beginning of a line.
-	(Fset_window_buffer): Ditto
-	Fixes repeatable crash in VM.
-
-1998-10-09  SL Baur  <steve@altair.xemacs.org>
-
-	* window.c (specifier_vars_of_window): Set default vertical
-	divider width to 1 on ttys.
-
-1998-10-08  Martin Buchholz  <martin@xemacs.org>
-
-	* alloc.c:
-	* unexec.c:
-	* malloc.c:
-	Add <stddef.h> to get ptrdiff_t declaration
-
-1998-10-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* scrollbar-msw.c: Use the same vertical scrollbar drag hack as
-	  is used for Motif or Lucid scrollbars under X.
-
-1998-10-08  Pierre Wendling  <pw@ebc.vbe.dec.com>
-
-	* m/alpha.h (UNEXEC): quoted to avoid bad expansion when running
-	`configure'
-
-1998-10-06  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>
+	* glyphs-msw.c (mswindows_unmap_subwindow): Set focus back to the
+	frame upon hiding a subwindow.
+	(mswindows_button_instantiate): Changed the push button style to
+	BS_PUSHBUTTON.
+	(mswindows_button_instantiate): Removed button BS_NOTIFY
+	style.
+	(mswindows_button_instantiate): Removed redundant check for
+	a disabled gui item.
+	(mswindows_button_instantiate): Made use of WS_TABSTOP
+	consistent: "operable" controls (edit, button, tree, scroll) have
+	this style, "display-only" ones (static, progress gauge) do
+	not. This style is currently ignored by XEmacs though. Also,
+	removed the WS_EX_CONTROLPARENT style - it is not for children,
+	it is for their parents!
+	(mswindows_edit_field_instantiate): Ditto.
+	(mswindows_progress_gauge_instantiate): Ditto.
+	(mswindows_tree_view_instantiate): Ditto.
+	(mswindows_tab_control_instantiate): Ditto.
+	(mswindows_scrollbar_instantiate): Ditto.
+	(mswindows_combo_box_instantiate): Ditto.
+	(mswindows_widget_instantiate): Added the WS_EX_CONTROLPARENT
+	style to the "clip" window.
+	(mswindows_button_instantiate): Removed compilation warning by
+	equally typing terms of the ?: operator.
 
-	* frame-x.c (x_delete_frame): Fix an argument of XtDestroyWidget.
-
-1998-10-05  Andy Piper  <andyp@parallax.co.uk>
-
-	* s/cygwin32.h: more cygwin b20 reorganisation.
-
-1998-10-01  Raymond Toy  <toy@rtp.ericsson.se>
-
-	* nas.c: Added necessary support functions to be able to handle
-	WAVE files in memory, just like the support for SND files in
-	memory.
-
-1998-09-30  SL Baur  <steve@altair.xemacs.org>
-
-	* callproc.c (child_setup): Fix spelling typo.
-
-1998-09-29  SL Baur  <steve@altair.xemacs.org>
-
-	* XEmacs 21.2-beta2 is released.
-
-1998-09-27  P. E. Jareth Hein  <jareth@camelot.co.jp>
-
-	* regex.c (re_match_2_internal): Add in code to reset lowest_active_reg
-	to prevent memory corruption in the case of jumping out of a series of
-	nested match patterns. This is a rather brute force approach, though.
-
-1998-09-02  Andy Piper  <andyp@parallax.co.uk>
-
-	* config.h.in: ditto.
-
-	* s/cygwin32.h: rearrange declarations to cope with cygwin
- 	b20. Include cygwin32/version.h if it exists.
-
-1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* device-msw.c (mswindows_init_device): Call new
-	  mswindows_enumerate_fonts() function in objects-msw.c instead
-	  of font_enum_callback_1() to enumerate fonts.
-
-	  font_enum_callback_1() and _2() moved to objects-msw.c.
-
-	* faces.c (complex_vars_of_faces): Make the mswindows default
-	  face font fully specified and provide some fallbacks.
-
-	* objects-msw.c: font_enum_callback_1() and _2() moved here
-	  from objects-msw.c. Obtain the enumerated font's character
-	  sets by table lookup instead of using the locale-specific
-	  string provided by Windows.
-
-	  New public non-method mswindows_enumerate_fonts() that fills
-	  in the supplied mswindows device's font list.
-
-	  mswindows_initialize_font_instance: Use the supplied name
-	  variable instead of f->name when signalling errors. Match font
-	  weights and character sets using lookup tables which handle
-	  spaces instead of by frobbing.
-
-1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* process-nt.c: Define an arbitrary limit, FRAGMENT_CODE_SIZE,
-	  on the size of code fragments passed to run_in_other_process.
-
-	  run_in_other_process(): Use FRAGMENT_CODE_SIZE to determine
-	  the amount of memory to allocate in the other process.
-
-	  Removed sigkill_code_end(), sigint_code_end() and
-	  sig_enable_code_end() since they are now redundant.
-
-	  send_signal() and enable_child_signals(): Don't try to work
-	  out the end of the code fragments passed to
-	  run_in_other_process()
-
-1998-09-10  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
-
-	* src/s/freebsd.h: Added __ELF__ and compiler/liker flags for
-	FreeBSD-current.
-
-	* src/unexelf.c: Partially synched with FSF's 20.3.
-
-1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (signal_after_change): Map across indirect buffers
-	here, and not in the upper-level functions.
-	(signal_first_change): Don't check for Armageddon.
-	(signal_before_change): Map across indirect buffers here.
-	(prepare_to_modify_buffer): ...and here.
-
-1998-09-09  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (signal_after_change): Add return value.
-	(buffer_insert_string_1): Use it.
-	(buffer_delete_range): Ditto.
-	(buffer_replace_char): Ditto.
-	(cancel_multiple_change): Map the indirect buffers.
-
-1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
-	(uninit_buffer_text): Ditto.
-
-	* buffer.c (Fmake_indirect_buffer): Implement stricter
-	error-checking.
-
-1998-09-04  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (change_function_restore): Reverse order of
-	function-call and assignment.
-	(first_change_hook_restore): Ditto.
-
-	* extents.c (mark_extent_auxiliary): Mark them.
-	(Fset_extent_property): Set them.
-	(Fextent_property): Get them.
-	(Fextent_properties): Ditto.
-	(vars_of_extents): Set their default.
-
-	* extents.h (struct extent_auxiliary): Add before_change_functions
-	and after_change_functions.
-
-	* insdel.c (signal_before_change): Use it.
-	(signal_after_change): Ditto.
-
-	* extents.c (report_extent_modification): New function.
-
-	* insdel.c (signal_before_change): Don't check for Armageddon.
-	(signal_after_change): Ditto.
-
-1998-09-11  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
-
-	* redisplay.c (redisplay_window): make sure a new starting point
-	is chosen if it somehow got moved from the beginning of the line
-	-- this can happen because Fwiden was called recently.
-
-	* window.c (Fset_window_start): set start_at_line_beg correctly
-	(Fset_window_buffer): Ditto
-
-1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
-	(uninit_buffer_text): Ditto.
-
-	* buffer.c (Fmake_indirect_buffer): Implement stricter
-	error-checking.
-
-1998-05-14  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* emacs.c (main_1): Removed references to *vars_of_filelock.
-
-	* lisp.h: Added Fsystem_name.
-
-	* filelock.c: Replaced by version from FSF 20.2. Now implements
-	locking by using symlinks which is NFS safe. However keep the
-	GCPRO's in lock_file and the calls to callx_in_buffer like our old
-	version (and of course use ansi C, acessor macros, etc).
-
-1998-09-06  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* process-unix.c (unix_create_process): Reset SIGHUP handler to
-	SIG_DFL. We now try to conserve any inherted SIG_IGN settings
-	in init_signals_very_early. However these should not be passed
-	on to children attached to the new pty.
-
-1998-08-28  Andy Piper  <andyp@parallax.co.uk>
-
-	* glyphs-eimage.c (png_instantiate_unwind): clean up eimage after use.
-
-1998-09-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* fileio.c (file-name-directory, file_name_as_directory):
-	  Don't call CORRECT_DIR_SEPS, even when #defined WINDOWSNT.
-
-1998-09-02  Andy Piper  <andyp@parallax.co.uk>
-
-	* emacs.c (main_1): init_ralloc() if initialised and we have REL_ALLOC
-
-	* ralloc.c: uncomment __morecore.
-
-1998-09-92  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c(winsock_writer): Supply a dummy 4th argument to
-	  WriteFile() to fix a winsock 1.x bug on Win95.
-
-1998-08-28  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* event-Xt.c (emacs_Xt_mapping_action): Check for device being
- 	deleted.
-	(x_event_to_emacs_event): Ditto.
-	(emacs_Xt_handle_focus_event): Ditto.
-	(emacs_Xt_handle_magic_event): Ditto.
-
-	* console-x.h (struct x_device): New flag being_deleted.
-	(DEVICE_X_BEING_DELETED): New macro.
-
-	* device-x.c (x_IO_error_handler): Throw to top-level instead of
-	returning.  Before doing that, set the being_deleted flag on the
-	device.
-
-1998-08-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* device-x.c (x-seppuku-on-epipe): Removed.
-
-1998-08-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
-
-	* frame-x.c (x_delete_frame): Flush the X output buffer after
-	calling XtDestroyWidget to ensure that the windows are really
-	killed right now.
-
-1998-08-26  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* menubar-x.c (my_run_hook): New unused function.
-	(pre_activate_callback): Use run_hook for Qactivate_menubar_hook,
-	since we ignore the results of the contained functions anyway.
-
-1998-08-26  P. E. Jareth Hein  <jareth@camelot.co.jp>
-
-	* glyphs-eimage.c (gif_instantiate): Fix a crash in handling
-	interlaced GIF files that are smaller than 4 lines high...
-
-1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* buffer.c (map_over_sharing_buffers): Deleted.
-
-	* insdel.c (MAP_INDIRECT_BUFFERS): Move to buffer.h.
-
-	* buffer.c (Fkill_buffer): Keep indirect_children updated while
-	killing them.
-
-1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (buffer_insert_string_1): Advance the point bytind in
-	all the buffers.
-	(buffer_delete_range): Ditto.
-
-	* marker.c (init_buffer_markers): Set point-marker to the value of
-	point in an indirect buffer.
-
-1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* undo.c (undo_prelude): Test last-undo-buffer against base
- 	buffer.
-
-	* insdel.c (MAP_INDIRECT_BUFFERS): Use it.
-
-	* buffer.h (BUFFER_BASE_BUFFER): New macro.
-
-1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* insdel.c (init_buffer_text): Initialize it here.
-
-	* line-number.c: Address line_number_cache through buffer->text.
-
-	* buffer.c (mark_buffer): Mark line number cache.
-
-	* bufslots.h (line_number_cache): Move to struct buffer_text.
-
-	* insdel.c (buffer_insert_string_1): Propagate signals and changes
-	across the children buffers.
-	(buffer_delete_range): Ditto.
-	(buffer_replace_char): Ditto.
-	(gap_left): Ditto.
-	(gap_right): Ditto.
-
-	* insdel.c (MAP_INDIRECT_BUFFERS): New macro.
+2000-01-12  Didier Verna  <didier@xemacs.org>
 
-	* buffer.c (Fmake_indirect_buffer): Uncomment.
-
-1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* macros.c (Fend_kbd_macro): Remove trailing period from error
-	message.
-	(Fexecute_kbd_macro): Ditto.
-
-1998-08-21  Greg Klanderman  <greg@alphatech.com>
-
-	* dired.c (Fuser_name_completion): remove optional 2nd argument.
-	(Fuser_name_completion_1): new function to return uniqueness
-	indication in addition to the user name completion.
-	(user_name_completion): change type of `uniq' argument.
-
-1998-08-19  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* lread.c (vars_of_lread): Removed `source-directory' variable.
-
-1998-08-22  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fileio.c (Ffile_readable_p): Apply the DOS/Windows logic to
-	Cygwin.
-
-1998-08-19  SL Baur  <steve@altair.xemacs.org>
-
-	* dired.c (vars_of_dired): Fix misapplied patch.
-
-1998-08-16  Martin Buchholz  <martin@xemacs.org>
-
-	* fns.c (Fremrassq, remrassq_no_quit):
-	A XCAR that should have been an XCDR turned Fremrassq into Fremassq
-
-1998-07-17  Didier Verna  <verna@inf.enst.fr>
-
-	* redisplay-x.c (x_get_gc): returns a GC with a FillStipple fill
-	style as foreground GC for faces that have the `dim' property.
-	(x_output_string): when the `dim' face property is set,
-	ensure the gray pixmap has been created, and get a proper
-	foreground GC to draw the text.
-
-1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c (mswindows_wnd_proc): Workaround for a Win95 bug:
-	  Manually track the state of the left and right Ctrl and Alt
-	  modifiers.
-
-1998-08-07 Matt Stupple <matts@tibco.com>
-
-	* ntproc.c: don't wait on char_consumed at thread entry.
-	Additionally, to get the 'process' marked as finished, ensure
-	that the CHILD_ACTIVE macro returns false, so before exiting
-	close char_avail and set it to NULL, and close other handles
-	to reduce handle leak problems.
-
-1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* menubar-msw.c (displayable_menu_item): take account of menu
-	  depth when deciding whether to try to display accelerators.
-
-1998-08-04  Andy Piper  <andyp@parallax.co.uk>
-
-	* event-msw.c: use MsgWaitForMultipleObjects if there are no
-	subprocesses.
-
-	* glyphs-msw.c: fix a couple of potential handle leaks.
-
-1998-08-04  P. E. Jareth Hein  <jareth@camelot.co.jp>
-
-	* dgif_lib.c gif_io.c gifrlib.h: New files to put GIF
-	  *decoding ONLY* back into the core.
-	* glyphs-eimage.c: Change referenced header file for GIF
-	  reading to point to the incore version.
-
-1998-07-20  Martin Buchholz  <martin@xemacs.org>
-
-	* casefiddle.c (casify_object):
-	Change algorithm from O(N**2) to O(N).
-	Code cleanup.
-	Doc string cleanup.
-
-1998-07-22  Greg Klanderman  <greg@alphatech.com>
-
-	* dired.c (file_name_completion_unwind): don't leak the cons.
-
-1998-07-20  Greg Klanderman  <greg@alphatech.com>
-
-	* dired.c (Fuser_name_completion): new function.
-	(Fuser_name_all_completions): new function.
-	(user_name_completion): new function.
-	(syms_of_dired): 2 new DEFSUBRs.
-	(vars_of_dired): initialize user name cache vars.
-
-1998-07-29  P. E. Jareth Hein  <jareth@camelot.co.jp>
-
-	* glyphs-eimage.c (png_instantiate): Add proper handling for background
- 	colors taken from the default face.  Also correct a thinko in
-	transparency (not alpha) handling.
-
-1998-07-23  Martin Buchholz  <martin@xemacs.org>
-
-	* s/decosf4-0.h:  Use a perfectly ordinary link.  Nuke BSD crap.
-	* unexalpha.c: ANSI C-ize.  Clean compiler warnings.
-	* lread.c (Fload_internal):  Be very careful with printfs of
-	size_t's
-	* gui-x.c (menu_name_to_accelerator): tolower wants an `int'
-	argument.
-
-1998-07-27  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
-
-	* callint.c (Fcall_interactively): GCPRO prompt string before
-	passing it to Fread_key_sequence
-
-1998-07-27  SL Baur  <steve@altair.xemacs.org>
-
-	* keymap.c (vars_of_keymap): Initialize Vkey_translation_map and
-	Vvertical_divider_map.
-
-	* mule-canna.c (vars_of_mule_canna): Initialize every symbol to
-	Qnil or 0, none were initialized prior to this change.
-
-	Rename misnamed `V' prefixed integer variables:
-	Vcanna_empty_info, Vcanna_through_info, Vcanna_underline,
-	Vcanna_inhibit_hankakukana, Vcanna_henkan_length, Vcanna_henkan_revPos,
-	Vcanna_henkan_revLen, Vcanna_ichiran_length, Vcanna_ichiran_revPos,
-	Vcanna_ichiran_revLen.
+	* redisplay.c (generate_fstring_runes): new parameter holding the
+	last modeline-format extent.
+	(add_glyph_to_fstring_db_runes): new parameter holding the glyph
+	extent, fill the glyph block with it.
+	(generate_fstring_runes): handle these parameters.
+	(generate_formatted_string_db): ditto.
 
-	Rename misnamed `V' prefixed integer variables and initialize
-	properly in the vars_of routine.
-	Vcanna_mode_AlphaMode, Vcanna_mode_EmptyMode, Vcanna_mode_KigoMode,
-	Vcanna_mode_YomiMode, Vcanna_mode_JishuMode, Vcanna_mode_TankouhoMode,
-	Vcanna_mode_IchiranMode, Vcanna_mode_YesNoMode, Vcanna_mode_OnOffMode,
-	Vcanna_mode_AdjustBunsetsuMode, Vcanna_mode_ChikujiYomiMode,
-	Vcanna_mode_ChikujiTanMode, Vcanna_mode_HenkanMode,
-	Vcanna_mode_HenkanNyuryokuMode, Vcanna_mode_ZenHiraHenkanMode,
-	Vcanna_mode_HanHiraHenkanMode, Vcanna_mode_ZenKataHenkanMode,
-	Vcanna_mode_HanKataHenkanMode, Vcanna_mode_HanKataHenkanMode,
-	Vcanna_mode_ZenAlphaHenkanMode, Vcanna_mode_HanAlphaHenkanMode,
-	Vcanna_mode_ZenHiraKakuteiMode, Vcanna_mode_HanHiraKakuteiMode,
-	Vcanna_mode_ZenKataKakuteiMode, Vcanna_mode_HanKataKakuteiMode,
-	Vcanna_mode_ZenAlphaKakuteiMode, Vcanna_mode_HanAlphaKakuteiMode,
-	Vcanna_mode_HexMode, Vcanna_mode_BushuMode, Vcanna_mode_ExtendMode,
-	Vcanna_mode_RussianMode, Vcanna_mode_GreekMode, Vcanna_mode_LineMode,
-	Vcanna_mode_ChangingServerMode, Vcanna_mode_HenkanMethodMode,
-	Vcanna_mode_DeleteDicMode, Vcanna_mode_TourokuMode,
-	Vcanna_mode_TourokuEmptyMode, Vcanna_mode_TourokuHinshiMode,
-	Vcanna_mode_TourokuDicMode, Vcanna_mode_QuotedInsertMode,
-	Vcanna_mode_BubunMuhenkanMode, Vcanna_mode_MountDicMode,
-	Vcanna_fn_SelfInsert, Vcanna_fn_FunctionalInsert,
-	Vcanna_fn_QuotedInsert, Vcanna_fn_JapaneseMode, Vcanna_fn_AlphaMode,
-	Vcanna_fn_HenkanNyuryokuMode, Vcanna_fn_Forward, Vcanna_fn_Backward,
-	Vcanna_fn_Next, Vcanna_fn_Prev, Vcanna_fn_BeginningOfLine,
-	Vcanna_fn_EndOfLine, Vcanna_fn_DeleteNext, Vcanna_fn_DeletePrevious,
-	Vcanna_fn_KillToEndOfLine, Vcanna_fn_Henkan, Vcanna_fn_Kakutei,
-	Vcanna_fn_Extend, Vcanna_fn_Shrink, Vcanna_fn_AdjustBunsetsu,
-	Vcanna_fn_Quit, Vcanna_fn_ConvertAsHex, Vcanna_fn_ConvertAsBushu,
-	Vcanna_fn_KouhoIchiran, Vcanna_fn_BubunMuhenkan, Vcanna_fn_Zenkaku,
-	Vcanna_fn_Hankaku, Vcanna_fn_ExtendMode, Vcanna_fn_ToUpper,
-	Vcanna_fn_Capitalize, Vcanna_fn_ToLower, Vcanna_fn_Hiragana,
-	Vcanna_fn_Katakana, Vcanna_fn_Romaji, Vcanna_fn_BaseHiragana,
-	Vcanna_fn_BaseKatakana, Vcanna_fn_BaseEisu, Vcanna_fn_BaseZenkaku,
-	Vcanna_fn_BaseHankaku, Vcanna_fn_BaseKana, Vcanna_fn_BaseKakutei,
-	Vcanna_fn_BaseHenkan, Vcanna_fn_BaseHiraKataToggle,
-	Vcanna_fn_BaseZenHanToggle, Vcanna_fn_BaseKanaEisuToggle,
-	Vcanna_fn_BaseKakuteiHenkanToggle, Vcanna_fn_BaseRotateForward,
-	Vcanna_fn_BaseRotateBackward, Vcanna_fn_Touroku, Vcanna_fn_HexMode,
-	Vcanna_fn_BushuMode, Vcanna_fn_KigouMode, Vcanna_fn_Mark,
-	Vcanna_fn_TemporalMode, Vcanna_key_Nfer, Vcanna_key_Xfer,
-	Vcanna_key_Up, Vcanna_key_Left, Vcanna_key_Right, Vcanna_key_Down,
-	Vcanna_key_Insert, Vcanna_key_Rollup, Vcanna_key_Rolldown,
-	Vcanna_key_Home, Vcanna_key_Help, Vcanna_key_KP_Key,
-	Vcanna_key_Shift_Nfer, Vcanna_key_Shift_Xfer, Vcanna_key_Shift_Up,
-	Vcanna_key_Shift_Left, Vcanna_key_Shift_Right, Vcanna_key_Shift_Down,
-	Vcanna_key_Cntrl_Nfer, Vcanna_key_Cntrl_Xfer, Vcanna_key_Cntrl_Up,
-	Vcanna_key_Cntrl_Left, Vcanna_key_Cntrl_Right, Vcanna_key_Cntrl_Down
-
-1998-07-16  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* event-Xt.c (x_to_emacs_keysym): Return nil for modifier keysyms.
-	(x_event_to_emacs_event): Let x_to_emacs_keysym check for modifier
-	keys thus no longer considering all keysyms on a key.
-
-1998-07-19  SL Baur  <steve@altair.xemacs.org>
-
-	* XEmacs 21.2-beta1 is released.
-
-1998-07-12  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (Fldap_search_internal): When converting the list of
-	attributes to search Copy the final 0 from Lisp strings to C
-	strings.
-	Check base, not Vldap_default_base as a a string
-
-1998-07-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* nt.c: Remove Vstdio_str; already defined in console-stream.c.
-
-	* unexnt.c: Unconditionally define bss_start and bss_size, and
-	  ensure that they don't go in the .bss section.
-
-1998-07-17  Olivier Galibert  <galibert@pobox.com>
-
-	* glyphs-x.c (convert_EImage_to_XImage):  Fix previous patch (conv
-	byte order is dependant  of  the local  byte order).
-	From Takeshi Hagiwara <hagiwara@ie.niigata-u.ac.jp>
-
-1998-07-18  SL Baur  <steve@altair.xemacs.org>
-
-	* glyphs-msw.c (mswindows_resource_normalize): Qresource ->
-	Qmswindows_resource.
-	From Jonathan Harris <jhar@tardis.ed.ac.uk>
-
-1998-07-12  SL Baur  <steve@altair.xemacs.org>
-
-	* general.c (syms_of_general): Add defsymbol for Qresource.
-
-	* glyphs-msw.c (vars_of_glyphs_mswindows): Rename Qresource to
-	Qmswindows_resource.
-	(TopLevel): Rename 'resource image format to 'mswindows_resource.
-	(mswindows_resource_validate): Rename.
-	(mswindows_resource_normalize): Rename.
-	(mswindows_resource_possible_dest_types): Rename.
-	(mswindows_resource_instantiate): Rename.
-	(image_instantiator_format_create_glyphs_mswindows): Replace
-	`resource' with `mswindows.resource'.
-
-	* XEmacs 21.0-pre5 is released.
-
-1998-07-10  SL Baur  <steve@altair.xemacs.org>
-
-	* mule-wnnfns.c (Fwnn_open): Correctly trap on misdefined Wnn
-	server type in environment.
-	Use alloca-ed strings instead of tiny fixed size ones.
-
-1998-07-09  SL Baur  <steve@altair.xemacs.org>
-
-	* XEmacs 21.0-pre4 is released.
-
-1998-07-01  James N. Potts  <jnpotts@plutonium.net>
-
-	* fileio.c: (expand_file_name): under win32: Don't treat names
-	as UNC names if a drive letter has been specified.  If a drive
-	has been specified, strip out extra directory-seperators that
-	reportedly cause problems under Win95.
-
-1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* windowsnt.h: Define DUMP_SEPARATE_SECTION when building with
-	  MSVC >= 5.0. Put emacs init and zero-init data in a special
-	  section of the executable when this is defined.
-
-	* unexnt.c, ntheap.h:
-	  Removed unused find_section() and get_section_size().
-
-	* unexnt.c:
-	  Fix up the executable's checksum after dumping otherwise the
-	  profiler complains.
-	  When DUMP_SEPARATE_SECTION is defined, don't need to dump
-	  zero-init data separately from init data. Dump emacs data
-	  into a special section of the executable.
-	  When DUMP_SEPARATE_SECTION not defined, dump .bss up to
-	  my_ebss instead of up to the end of bss.
-
-1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+	* keymap.c (get_relevant_keymaps): retreive the keymaps from the
+	glyphs'extents in the modeline.
 
-	* filelock.c: Removed Vconfigure_lock_directory - already
-	  defined in emacs.c.
-
-	* frame-msw.c: Removed Qinitially_unmapped and Qpopup - already
-	  defined in frame.c and general.c respectively.
-
-	* glyphs-msw.c: Removed Qresource - already defined in
-	  general.c.
-
-1998-07-05  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (Fldap_search_internal): Docstring fixes
-
-1998-07-04  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* nt.c (init_environment): Removed unused PRELOAD_WINSOCK,
-	  EMACSDOC and TERM variables. Added EMACSDEBUGPATHS,
-	  EMACSPACKAGEPATH and INFOPATH variables.
-	  Removed unused get_emacs_configuration function.
-
-	* s/windowsnt.h: Don't define EMACS_CONFIGURATION here because
-	  it is now defined at build-time by the makefile.
-
-1998-07-01  James N. Potts  <jnpotts@plutonium.net>
-
-	* fileio.c: (expand_file_name): under win32: Don't treat names as
-	UNC names if a drive letter has been specified.  If a drive has
-	been specified, strip out extra directory-seperators that
-	reportedly cause problems under Win95.
-
-1998-07-05  Andy Piper  <andyp@parallax.co.uk>
-
-	* faces.c (complex_vars_of_faces): for the gui-element face don't
-	fallback to the default face, instead provide reasonable default
-	fallbacks that were previously hardcoded elsewhere.
-
-1998-07-06  Olivier Galibert  <galibert@pobox.com>
-
-	* glyphs-x.c (convert_EImage_to_XImage): Fix pixel writing problem
-	when the X server endianness is different than the client's one.
-
-1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
-
-	* eval.c (run_hook_with_args_in_buffer): Check
-	  default (non-buffer-local) value of hook for
-	  nil before treating it as a function.  Don't initialize
-	  the `globals' variable twice.
-
-1998-06-24  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* fileio.c: Don't do directory seperator canonicalisation in
-	  substitute-in-file-name because we don't know that the
-	  filename refers to a local file.
-
-1998-06-24  Adrian Aichner  <adrian@xemacs.org>
-
-	* process-nt.c (nt_create_process): Try appending the standard
-	  executable file extensions to the filename if none supplied.
-
-1998-06-29  SL Baur  <steve@altair.xemacs.org>
-
-	* fileio.c (Fsubstitute_in_file_name): Enable double slash notation
-	for cygwin32.
-	From Keisuke Mori <ksk@ntts.com>
-
-1998-06-24  Andy Piper  <andyp@parallax.co.uk>
-
-	* toolbar-msw.c (mswindows_output_toolbar): only enable masked
-	images if we have masks. This handles the xbm case (have masks)
-	and avoids overuse of resources in the xpm case (generally no masks).
-	Don't output small toolbars.
-
-1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
-
-	* eval.c (run_hook_with_args_in_buffer): Don't treat
-	  the default value of a buffer local hook as a list of
-	  hooks unless it is both a cons and the car of that cons
-	  is not Qlambda.
-
-1998-06-29  SL Baur  <steve@altair.xemacs.org>
-
-	* extents.c: Email address for Ben Wing is ben@xemacs.org.
-	* process-unix.c: Ditto.
-	* mule-coding.h: Ditto.
-	* mule-coding.c: Ditto.
-	* mule-charset.c: Ditto.
-	* mule-charset.h: Ditto.
-	* file-coding.c: Ditto.
-	* file-coding.h: Ditto.
-
-1998-06-22  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* event-msw.c: Guard against recursion when freeing
-	  FRAME_MSWINDOWS_TARGET_RECT struture in WM_SIZE processing.
-
-	* frame-msw.c: Don't set WS_VISIBLE attribute on first frame.
-	  Call ShowWindow twice in init_frame_3 to get round runemacs
-	  weirdness.
-
-1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* scrollbar.c (vertical_scrollbar_changed_in_window): Ditto.
-
-	* winslots.h: Rename.
-
-	* window.c (specifier_vars_of_window): Renamed
-	vertical-divider-draggable-p to vertical-divider-always-visible-p,
-	as suggested by Ben Wing.
-	(specifier_vars_of_window): Fix docstrings.
-
-1998-06-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* unexaix.c: Line number information works correctly again.
-
-1998-06-22  Olivier Galibert  <galibert@pobox.com>
-
-	* emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry.
-
-1998-06-21  Martin Buchholz  <martin@xemacs.org>
-
-	* editfns.c (get_home_directory): ANSIfy.
-	XEmacs is compilable under C *and* C++.
-	It's XEmacs, not Xemacs!
-
-1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* console-msw.h: added a list of fonts to device data.
-
-	* device-msw.c: enumerate list of available fonts in
-	  mswindows_init_device. Free list in mswindows_delete_device.
+1999-01-11  Mike Woolley  <mike@bulsara.com>
 
-	* objects-msw.c: Added helper function match_font used by
-	  mswindows_initialize_font_instance and mswindows_list_fonts.
-	  Allow a charset to be specified in a font string, even if
-	  previous fields havn't been specified.
-
-1998-06-23  Greg Klanderman  <greg@alphatech.com>
-
-	* indent.c (column_at_point): column cache bugfix.
-	Set last_known_column_point to the buffer position for
-	which the column was requested, not buffer's point.
-
-	* redisplay.c (decode_mode_spec): for current-column, show
-	window's point's column, not buffer's point's column.
-
-1998-06-23  Andy Piper  <andyp@parallax.co.uk>
-
-	* menubar-msw.c (mswindows_handle_wm_command): use
-	enqueue_misc_user event rather than
-	mswindows_enqueue_msic_user_event to fix customize problems. Add some
-	checks that X does.
-
-	* console-msw.h: declare mswindows_enqueue_magic_event.
-
-	* event-msw.c (mswindows_enqueue_magic_event): make global.
-
-1998-06-24  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* line-number.c (LINE_NUMBER_FAR): Reverted to 16384.
-	(buffer_line_number): Use EMACS_INT_MAX instead of random LOTS.
-	(add_position_to_cache): Use EMACS_INT instead of int.
-
-1998-06-21  Olivier Galibert  <galibert@pobox.com>
-
-	* lisp-disunion.h (XMARKBIT): Have XMARKBIT return something
-	suitable for an int used as a boolean (btw, C sucks.).
-
-1998-06-18  Andy Piper  <andyp@parallax.co.uk>
-
-	* object-msw.c: remove warnings.
-
-	* device-msw.c: #define wrongly named cygwin structure elements.
-
-	* s/cygwin32.h: define DEMI_BOLD
-
-1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* redisplay-msw.c: new function mswindows_apply_face_effects.
-	  This is called by output_string and output_cursor to display
-	  underline and strikeout on faces.
-
-1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* console-msw.h: added a list of fonts to device data.
-
-	* device-msw.c: enumerate list of available fonts in
-	  mswindows_init_device. Free list in mswindows_delete_device.
-
-	* objects-msw.c: Added helper function match_font used by
-	  mswindows_initialize_font_instance and mswindows_list_fonts.
-	  Allow a charset to be specified in a font string, even if
-	  previous fields havn't been specified.
-
-1998-06-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>
-
-	* objects-msw.c:
-	  Removed compilation warnings from mswindows_string_to_color.
-	  mswindows_list_fonts returns a more general bogus font.
-	  New lisp-visible function mswindows-color-list.
-
-1998-06-19  David Bush <david.bush@adn.alcatel.com>
-
-	* editfns.c (Fuser_login_name): Modify to user new function
-	user_login_name.
-	(user_login_name): C only function to avoid Lisp object overhead
-	Returns "unknown" instead of nil in Cygwin environment
-
-	* fileio.c (Fexpand_file_name): Treat "~" and "~user" as
-	equivalent for current user in Cygwin environment. Use new
-	function user_login_name to get username.
-
-	* lisp.h: Declare user_login_name
-
-1998-06-18  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* unexaix.c (make_hdr): Fixed bias computations so debugging info
-	works again.
-	Some other insignificant nitpicks.
-
-1998-06-18  Andy Piper  <andyp@parallax.co.uk>
-
-	* toolbar-msw.c (mswindows_output_toolbar): specify ILC_MASK when
-	creating the image list and make sure he bk color is transparent.
-
-1998-06-18  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-	* event-Xt.c (emacs_Xt_remove_timeout): Also remove timeout from
-	completed_timeouts. The timer could have expired.
-
-1998-06-17  Andy Piper  <andyp@parallax.co.uk>
-
-	* console-msw.h: move XEMACS_RECT_WH inside frame
-	parameters. define macors to access it.
-
-	* frame-msw.c (mswindows_init_frame_1): use new target_rect
-	parameter to intialise desired sizing. (mswindows_init_frame_2):
-	enable and size the frame to something sensible when we get
-	here. (mswindows_set_frame_properites): use new
-	mswindows_size_frame_internal function and size frame if frame
-	parameters not just if init is finished - WM_SIZE happens too
-	early for some specs. (mswindows_size_frame_internal): new
-	function abstracted from mswindows_set_frame_properties.
-	(Vmswindows_use_system_frame_size_defaults):
-	new variable controls whether to allow the system to pick frame
-	size defaults, defaults to nil.
-
-	* event-msw.c: in WM_SIZE use mswindows_size_frame_internal rather
-	than duplicated code.
-
-1998-06-15  Colin Rafferty <colin@xemacs.org>
-
-	* Makefile.in.in: Made EXTW_LINK expand properly.
-
-1998-06-12  Martin Buchholz  <martin@xemacs.org>
-
-	* redisplay.c (vars_of_redisplay): default value of
-	column-number-start-at-one should be NIL!
-
-1998-06-11  Martin Buchholz  <martin@xemacs.org>
-
-	* casefiddle.c:
-	(upcase-initials "fooBar") ==> "FooBar" instead of "Foobar"
-
-1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>
+	* ntheap.c: Reduced the reserved heap space from 1Gb down to
+	256Mb, as a workaround for the non-starting problem many people
+	have experienced.
 
-	* eldap.c (Fldap_search_internal): Use build_ext_string instead of
-	build_string to avoid crashes under Mule.
-
-1998-06-13  Andy Piper  <andyp@parallax.co.uk>
-
-	* ntplay.c (play_sound_data_1): don't delete the sound data until
-	the next sound is played and the previous one finished.
-
-1998-06-10  Samuel Mikes  <smikes@alumni.hmc.edu>
-
-	* fileio.c (directory-sep-char): Escape backslashes.
-
-1998-06-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* event-stream.c: Fix docstring reference.
-
-1998-06-12  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* alloc.c (make_float): Remove useless initialization of `next'
- 	field.
-	(make_pure_float): Ditto.
-
-	* lisp.h (struct Lisp_Float): Rename `next' to `__unused__next'.
-
-1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* fileio.c (Fmake_directory_internal): Remove conditionals
-	on WINDOWSNT when calling mkdir.
-
-	* ntproc.c: Deleted the following unused functions:
-	register_child, reap_subprocess, sys_wait.
-
-	* nt.c (sys_rename): Ifzeroed this implementation.
-	Deleted the following unused functions:
-	sys_access, sys_chdir, sys_chmod, sys_creat, sys_link, sys_mkdir,
-	sys_mktemp, sys_rmdir, sys_unlink, sys_close, sys_dup, sys_dup2,
-	sys_read, sys_write.
-	Merger sys_fopen and sys_open with sysdep.c implementation.
-
-	* sysdep.c: Removed MS-DOS code.
-	(sys_rename): Deal with Microsoft rename weirdness.
-	(sys_open): Implemented for Windows.
-	(sys_fopen): Ditto.
-	(sys_mkdir): Ditto.
-
-1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* buffer.c (complex_vars_of_buffer): Removed %t description from
-	the docstring.
-
-1998-06-04  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>
-
-	* scrollbar-msw.c: initialize the cbSize element of the
-	SCROLLINFO struct before calling SetScrollInfo. WinNT seems
-	to ignore the value of cbSize, but Win95 (and I presume Win98)
-	appear to want it set to sizeof(SCROLLINFO).
-
-1998-06-04  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* event-stream.c: Defined Qcancel_mode_internal.
-	(syms_of_event_stream): defsymbol'ed it.
-
-	* events.h: Externed it.
-
-	* event-msw.c (mswindows_wnd_proc, WM_CANCELMODE): Added this handler.
-
-1998-06-04  Oliver Graf <ograf@fga.de>
-
-	* frame-x.c (x_cde_destroy_callback): free the data
-	(cde-start-drag-internal) corrected root position, 21.1 needs this
-	hardcoded in Button events
-	(offix-start-drag-internal) corrected root position
-
-1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* process-nt.c (signal_cannot_launch): Use signal_simple_error()
-	instead of error().
-
-1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* dialog-msw.c (button_width): Removed `inline' from the function
-	declaration.
-
-1998-06-03  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>
-
-	* frame-msw.c: add WS_VISIBLE flag to the first frame created.
-	Note that adding this flag to subsequent frames causes problems.
-
-1998-06-03  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
-
-	* glyphs-eimage.c (png_instantiate) move 'struct
-	png_memory_storage tbr' out of nested block to avoid dangling
-	reference
-
-1998-06-02  Andy Piper  <andyp@parallax.co.uk>
-
-	* faces.h:
-	* faces.c: rename 3d-object -> gui-element. add toolbar face which
-	inherits from gui-element.
-
-	* glyphs-msw.c: use DIBitmaps for xbm bitmaps to be consistent
-	with existing code, generate masks correctly.
-
-1998-06-03  P. E. Jareth Hein  <jareth@camelot-soft.com>
-
-	* glyphs-eimage.c: Changed included header for gifs to use
-	Gifreader instead of giflib.
-
-	* glyphs-x.c: removed the image-related functions that were
-	moved into glyphs-eimage.
-
-1998-06-02  David Bush  <david.bush@adnb.alcatel.com>
-
-	* glyphs.c (bitmap_to_lisp_data) Define XFree to be free
-	if built without X Windows support.
-
-1998-06-02  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (Fconcat): Synch docstring with new reality.
-
-1998-06-03  SL Baur  <steve@altair.xemacs.org>
-
-	* frame.c: Remove reference to msdos.h (which is going away).
-	Suggested by Hrvoje Niksic and Kirill Katsnelson.
-
-1998-06-02  P. E. Jareth Hein  <jareth@camelot-soft.com>
-
-	* glyphs-eimage.c (jpeg_instantiate): Fix handling of
-	grayscale images/
-
-
-1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+2000-01-06  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
 
-	* events.h: Fixed commentary about misc-user scrollbar events.
-
-	* scrollbar-x.c (x_update_vertical_scrollbar_callback): Use frame
-	object as an event channel, instead of window object.
-	(x_update_horizontal_scrollbar_callback): Ditto.
-
-1998-05-29  Andy Piper  <andyp@parallax.co.uk>
-
-	* ntplay.c (play_sound_data_1) new function. convert alloca data
-	to malloc if necessary.
-	(play_sound_file): if the file is not in our path then convert to
-	data and play.
-
-1998-06-01  SL Baur  <steve@altair.xemacs.org>
-
-	* mule-mcpath.c (mc_chdir): Reverse parameters in call to memcpy.
-	* msdos.c (Frecent_doskeys): Ditto.
-
-	* unexalpha.c (unexec): Reverse parameters in call to memcpy.
-	Suggested by Reggie Perry <perry@zso.dec.com>
-
-	* buffer.h: Eliminate size in declaration.
-
-1998-06-01  Olivier Galibert  <galibert@pobox.com>
-
-	* unexelfsgi.c (unexec): Cleanup n/nn and remove useless kludge.
-
-1998-06-01  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* gui.c (gui_item_init): Changed the default value for config member
-	from Qunbound to Qnil.
-
-1998-06-01  Greg Klanderman  <greg@alphatech.com>
-
-	* indent.c (vmotion_pixels): Don't #define abs().
-
-1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* s/windowsnt.h: Defined popen and pclose to be _popen and _pclose
-	respectively.
-
-1998-05-30  Andy Piper  <andyp@parallax.co.uk>
-
-	* glyphs.h: add xbm declarations.
-
-	* console.h: add xbm_instantiate_method device method.
-
-	* glyphs.c (check_valid_xbm_inline) (xbm_validate)
-	(bitmap_to_lisp_data) (xbm_mask_file_munging) (xbm_normalize)
-	(xbm_possible_dest_types): moved here from glyphs-x.c. use
-	locate_pixmap_file device method and read_bitmap_data_from_file
-	instead of XmuReadBitmapDataFromFile.
-	(xbm_instatntiate): make a device method.
-
-	* glyphs-x.c: see glyphs.c changes. (read_bitmap_data_from_file)
-	new function that just calls XmuReadBitmapDataFromFile.
-	(x_xbm_instatntiate): device method from xbm_instantiate.
-
-	* glyphs-msw.c (read_bitmap_data) (NextInt)
-	(read_bitmap_data_from_file): new functions copied from Xmu
-	sources.
-	(xbm_create_bitmap_from_data) from Ben <ben@666.com> convert
-	inline data to an mswindows bitmap.
-	(init_image_instance_from_xbm_inline) (xbm_instantiate_1)
-	(mswindows_xbm_instantiate): mswindows-ized versions of the X
-	functions.
+	* console-tty.c (Fset_console_tty_output_coding_system):
+	Force redrawing tty frame.
 
-1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* window.c (specifier_vars_of_window): Renamed `has_modeline-p' to
-	`modeline-visible-p'.
-	Declared specifier lisp variables at the beginning oh the file
-	as static.
-
-	* procimpl.h (struct process_methods): Changed semantics of
-	create_process method so it accepts lisp strings instead of
-	char pointers.
-
-	* process.c (Fstart_process_internal): Moved building of
-	unix style argv from here to process-unix.c, ...
-
-	* process-unix.c (unix_create_process): ... right here.
-
-	* process-nt.c (nt_create_process): Changed this function to
-	support new semantics, so avoided a GC problem.
-
-	* events.c (Fmake_event): Document misc-user events properties.
-	(Fmake_event): Do not allow arbitrary objects for channel property
-	of misc-user events.
-	(Fmake_event): Change misc-user event validation: it is function
-	which is required, not button.
-
-	* event-msw.c (mswindows_user_event_p): Recognize misc user events as
-	user events.
-	(mswindows_enqueue_misc_user_event): Added function.
-	(mswindows_bump_queue): Removed function.
-	(mswindows_enqueue_magic_event): Support NULL HWND parameter.
-	(mswindows_wnd_proc, WM_CLOSE): Use mswindows_enqueue_misc_user_event().
-	(mswindows_wnd_proc, WM_EXITSIZEMOVE): Ditto.
-	(emacs_mswindows_handle_magic_event): Handle XM_BUMPQUEUE, by doing
-	really nothing, which is my personal favorite thing.
-
-	* console-msw.h: Removed prototype for mswindows_bump_queue().
-	Added prototype for mswindows_enqueue_misc_user_event().
-
-	* menubar-msw.c (mswindows_handle_wm_command): Use
-	mswindows_enqueue_misc_user_event().
-
-	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
-
-	* dialog-msw.c (dialog_proc): Ditto.
-
-	* scrollbar-msw.c (mswindows_handle_scrollbar_event): Ditto.
-	 (mswindows_handle_scrollbar_event): Use frame, not window, for misc
-	user events channel.
-
-1998-05-29  Greg Klanderman  <greg@alphatech.com>
-
-	* window.c (Fwindow_displayed_text_pixel_height): was relying on
-	incorrect semantics of vmotion_pixels which has been fixed.  don't
-	use it anymore as it can't easily be used.
-
-	* indent.c (vmotion_pixels): fix off by one bug moving up.  also
-	the motion was reported incorrectly if you tried to go past end of
-	buffer.
-
-1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* toolbar.h: Removed misleading commentary, as Martin suggested.
-
-1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* lisp.h: Extern Qactivate_menubar_hook.
+2000-01-10  Didier Verna  <didier@xemacs.org>
 
-	* menubar-msw.c (unsafe_handle_wm_initmenu_1): Pass correct value to
-	run_hook ().
-
-1998-05-29  Andy Piper  <andyp@parallax.co.uk>
-
-	* glyphs-msw.c: use BPLINE macro.
-
-	* select-msw.c (mswindows-selection-exists-p)
-	(mswindows-delete-selection): doc string fixes.
-
-	* toolbar-msw.c (mswindows_output_toolbar): make disabled buttons
-	unpressable. warning elimination.
-
-1998-05-28  Martin Buchholz  <martin@xemacs.org>
-
-	* alloc.c (dbg_constants):
-	* dbxrc:
-	* gdbinit:
-	Remove toolbar_data debugging code, since that lrecord has
-	also been removed.
-
-Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
-
-	* alloc.c: zap cached value of (user-home-directory), so that
-	  it's not undumped.
-
-	* buffer.c: From init_buffer(), separated out code that
-	  determined the initial directory for the *scratch* buffer, and
-	  put them into a function called "init_initial_directory()".
-	  The initial directory is now available as a global "char *"
-	  called initial_directory.
-
-	* buffer.h: Added extern entries for initial_directory[] and
-	  init_initial_directory().
-
-	* editfns.c: added new elisp function "user-home-directory",
-	which basically returns getenv("HOME"), but attempts to use
-	other values if $HOME isn't set.This may have to be tweaked in
-	the future as, under Unix, "/" is used if $HOME isn't set (this
-	probably should be set to the current directory).  To support
-	this, a new C function, "get_home_directory()", now exists,
-	which returns the "home directory", as a "char *" string.
-
-	* emacs.c: Rearrange NT initialization order so that
-	environment/registry variables will be properly entered into
-	Vprocess_enviroment.
-
-	* fileio.c: replaced egetenv("HOME") with calls to the new
-	  get_home_directory().
-
-	* lisp.h: Added function prototypes for uncache_home_directory()
-	  and get_home_directory(), along with lisp prototypes for
-	  Fuser_home_directory() and friends.
-
-	* nt.c: replaced getenv("HOME") with calls to the new
-	  get_home_directory().
-
-	* sysfile.h: for WINDOWSNT, #include <direct.h>, to suppress
-	  warnings about getcwd(), etc. not having prototypes.
-
-1998-05-28  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* process-nt.c (send_signal): Emulate SIGHUP.
-	(validate_signal_number): Ditto.
-
-	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Unconditionally
-	remove MOD_SHIFT from ASCII characters.
-	(mswindows_wnd_proc, WM_KEYDOWN): Do not activate the menubar when
-	F10 is pressed.
-
-1998-05-24  Oliver Graf <ograf@fga.de>
-
-	* frame-x.c (cde-start-drag-internal): added filename and multi-
-	data transfers
-	(x_cde_convert_callback) dito
-
-1998-05-26  Oliver Graf <ograf@fga.de>
-
-	* frame-x.c: include event-mod.h also with CDE
-	(x_cde_convert_callback) made the thing working
-	(cde-start-drag-internal) also debugging
-
-1998-05-25  Hans Guenter Weigand  <hgweigand@wiesbaden.netsurf.de>
-
-	* m/sparc.h:
-	* getloadavg.c:
-	* malloc.c:
-	* unexec.c:
-	* mem-limits.h:
-	  - add __OpenBSD__ where __NetBSD__ was found.
-	  - TODO: replace platform-specific conditional compilation by
-	    feature tests in configure.in.
-
-1998-05-15  Greg Klanderman  <greg@alphatech.com>
-
-	* window.c (Fwindow_displayed_text_pixel_height): New function.
-	(syms_of_window): DEFSUBR it.
-
-	* indent.c (Fvertical_motion_pixels): New function - request
-	movement in pixels.
-	(vmotion_pixels): helper.
-	(syms_of_indent): DEFSUBR.
-	* lisp.h: declaration for vmotion_pixels().
-
-	* indent.c (Fvertical_motion): Add optional third argument PIXELS,
-	to request returning motion in pixels.
-	(Fvertical_motion_pixels): Remove, functionality merged into
-	Fvertical_motion.
- 	* window.c (window_scroll): call Fvertical_motion with 3 arguments.
-	(Fmove_to_window_line): ditto.
-	* lisp.h: Change declaration for Fvertical_motion.
-
-	* window.c: rename window-text-pixel-{height,width,edges} to
-	window-text-area-pixel-*.
-
-1998-05-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
-
-	* tooltalk.c (vars_of_tooltalk) added staticpro for
-	Tooltalk_Message_plist_str and Tooltalk_Pattern_plist_str
-
-1998-05-27  Andy Piper  <andyp@parallax.co.uk>
-
-	* faces.c: create a new 3d_object_face, make modeline and
-	vertical_divider faces fallback to this rather than the default.
-
-1998-05-21  Andy Piper  <andyp@parallax.co.uk>
-
-	* s/cygwin32.h: define charsets for cygwin.
-
-1998-05-25  Andy Piper  <andyp@parallax.co.uk>
+	* redisplay.c (generate_fstring_runes): fix size computation bug.
 
-	* toolbar-msw.c (mswindows_output_toolbar): fix up button sizes
-	and coordinates. resize bitmaps if we have already settled on a
-	different size.
-
-	* glyphs-msw.c (xpm_to_eimage): add ';' for mswindows compiler.
-
-1998-05-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
-
-	* menubar-msw.c (mswindows_handle_wm_command): Ditto.
-
-	* gui.h: Ditto.
-
-	* gui-x.c (popup_selection_callback): Ditto.
-
-	* dialog-msw.c (dialog_proc): get_callback -> get_gui_callback.
-
-	* gui.c (get_callback): Renamed to get_gui_callback.
-
-1998-05-17  Martin Buchholz  <martin@xemacs.org>
-
-	* glyphs.h: order rearrangement.
-
-	* device-tty.c (tty_asynch_device_change): Warning suppression.
-	* device-x.c (x_device_system_metrics): Warning suppression.
-	Make Doc strings consistent with coding standards.
-
-1998-05-24  Martin Buchholz  <martin@xemacs.org>
-
-	* general.c: multiple definition of `Qicon'.  general.c seems
-	  like a good home for Qicon.
-
-1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* This patch is to fix compilation warnings under Windows.
-
-	* s/windowsnt.h: Encapsulate getpid with sys_getpid.
-	Added prototypes for FSF inherited functions, with which XEmacs is
-	sprinkled thoroughly.
-	Removed some #if 0 code. Bracketed some more definitions, probably
-	related to Visual C versions prior to 4 (we do not support them).
-
-	* sysfloat.h (logb): Finally, get logb() prototyped.
-
-	* sysfile.h: Added Windows specific includes.
-	Removed old Windows specific code bracketed with #if 0.
-
-	* sysdep.h: Added prototype for xrealpath().
-
-	* sysdep.c (sys_getpid): Added function, to support '95 negative pids.
-
-	* symsinit.h: Added prototypes for syms_of_dired_mswindows,
-	vars_of_dired_mswindows and init_ntproc (Grrr).
-
-	* realpath.c: Added Windows specific include files.
-	(xrealpath): Conditionalized declaration of some auto variables on
-	S_IFLNK, to avoid warnings.
+2000-01-09  William M. Perry <wmperry@aventail.com>
 
-	* ntproc.c: Disabled some compiler warnings. This file is going to
-	die, so I have not cleaned it up much.
-	(set_process_dir): Const parameter.
-	(Fwin32_short_file_name): Down CHECK_* macros to one argument.
-	(Fwin32_long_file_name): Ditto.
-	(Fwin32_set_process_priority): Ditto. Why didn't I remove these
-	three functions?
-
-	* nt.h: Added prototypes for set_process_dir and convert_time.
-
-	* nt.c: More include files.
-	(getpwnam): Consted char* argument.
-	(get_emacs_configuration): Const return value.
-	(opendir): Const argument.
-	(stat): Casted converstion long->short.
-	(stat): Removed ad hoc and questionable support for non-MSC compile.
-	(sys_pipe): Removed unused auto variable.
-	(_sys_read_ahead): Removed calls to DebPrint.
-	(sys_read): Ditto, in 2 places.
-	(term_ntproc): Added unused int parameter to signal handler, to
-	avoid a warning when compiling a call to signal().
-	(msw_sigset): Properly return old signandler or NULL instead of void.
-
-	* floatfns.c (Flogb): Casted arguments to unary minus to signed.
-
-	* gmalloc.c (morecore): Ditto.
-	(_free_internal): Ditto.
-
-	* lread.c (parse_integer): Ditto.
-
-	* dired-msw.c: Added several include files.
-
-	* cmdloop.c (Fcommand_loop_1): Added Microsoft C to the Big List
-	of Compilers to Shut Up.
-
-	* callproc.c: Added #includes to suppress warnings under Windows.
-	(init_callproc): Removed #if0'ed code and unused variables.
-
-1998-05-25  Andy Piper  <andyp@parallax.co.uk>
-
-	* device-msw.c (mswindows_device_system_metrics): do planes in a
-	way consistent with X.
-
-	* glyphs-msw.c (mswindows_initialize_image_instance_mask): don't
-	use SetPixel, use DIBits functions.
-	(xpm_to_eimage): frob colors more closely like xpm deos.
-
-	* toolbar-msw.c: only resize bitmaps when shrinking. Adjust look
-	to be closer to X version.
-
-	* event-msw.c: use tooltip string directly.
-
-	* redisplay-msw.c: reinstate Kirill's bg pixmap change.
-
-	* objects-msw.c: frob rgb colors that only Kyle uses.
-
-	* dialog-msw.c (button_width): INLINE -> inline.
-
-1998-05-23  SL Baur  <steve@altair.xemacs.org>
-
-	* getloadavg.c (getloadavg): Fix typo.
-
-1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* objects-msw.c (mswindows_initialize_font_instance): Added support
-	for font character sets.
-	Replaced 'XXX' with '####' in comments throughout the file.
-
-1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* emacs.c (main_1): Added calls to vars_of_dialog_mswindows() and
-	console_type_create_dialog_mswindows(), to initialize Windows dialog
-	support.
+	* gpmevent.c: (gpm_next_event_cb): Don't return value from void function.
 
-	* symsinit.h: Prototyped the above functions.
-
-	* dialog-x.c (x_popup_dialog_box): Moved dialog descriptor consistency
-	checks to dialog.c...
-
-	* dialog.c (Fpopup_dialog_box): ...right here. Added more checks: a
-	device must support dialog boxes, and the descriptor must supply at
-	least one button.
-
-	* dialog-msw.c: New file, dialogs for Windows.
-
-1998-05-21  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
-
-	* eldap.c (ldap_search_unwind): Return Qnil instead of nothing
-	(Fldap_search_internal): Removed unused variable `err'
-
-	* eldap.h: Moved Lisp_LDAP declaration here instead of using a
-	forward declaration
-
-1998-05-17  Martin Buchholz  <martin@xemacs.org>
-
-	* eldap.h: eldap.[ch] should never be used unless HAVE_LDAP is
-	defined.  Therefore there is no need to handle the case when
-	HAVE_LDAP is undefined.  Similarily, there is no reason to have
-	any code wrapped within `#ifdef emacs', since this code is only
-	useful within an emacs.  This simplifies the code significantly.
-
-	* inline.c: Include eldap.h only if HAVE_LDAP.
-	* inline.c: Don't bother including TT_C_H_PATH, since tooltalk.h
-	already does that.
-
-1998-05-21  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* unexnt.c (copy_executable_and_dump_data_section): Suppress
-	printing dump stats when building without DEBUG_XEMACS.
-	(dump_bss_and_heap): Ditto.
-
-1998-05-21  Andy Piper  <andyp@parallax.co.uk>
-
-	* gnuclient.c: don't suppress window system if there is no display
-	and we are running under mswindows. send 'mswindows device type if
-	we are in this situation.
-
-1998-05-20  Andy Piper  <andyp@parallax.co.uk>
-
-	* general.c:
-	* lisp.h: Qbitmap, Qcursor, Qicon moved here from glyphs-msw.c.
-
-	* glyphs-msw.c: change cursor imgae type name to resource. Fix
-	some nits.
-
-1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* EmacsFrame.c (Xt_StringToScrollBarPlacement):  Added support for
-	{top,bottom}-{left,right} values in addition to
-	{top,bottom}_{left,right}.
-
-1998-05-18  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fileio.c (Fmake_temp_name): Remove unreached code.
-
-	* process-nt.c (validate_signal_number): Use
-	signal_simple_error().
-
-1998-05-19  Martin Buchholz  <martin@xemacs.org>
-
-	* unexhp9k800.c:
-	* sound.c (vars_of_sound):
-	* sysdep.c (reset_sigio_on_device):
-	* window.c (window_bottom_gutter_height):
-	unexhp9k800.c:258: warning: implicit declaration of function
-	`calculate_checksum'
-	sound.c:604: warning: implicit declaration of function `vars_of_hpplay'
-	sysdep.c:1012: warning: unused variable `owner'
-	window.c:993: warning: `window_right_toolbar_width' defined but not used
-
-1998-05-19  Andy Piper  <andyp@parallax.co.uk>
-
-	* glyphs-msw.c (mswindows_create_resized_mask)
-	(mswindows_create_resized_bitmap): new funnctions split out from
-	mswindows_resize_dibitmap_instance.
-
-	* glyphs-msw.h: declare new resize functions.
-
-	* toolbar-msw.c (mswindows_output_toolbar): use new bitmap resize
-	functions so that the original bitmaps are preserved.
-
-	* sheap.c: fixup static heap exhausted error to avoid FAQs.
-
-	* redisplay-msw.c (mswindows_output_blank): fixup brush from bg
-	color if we are trying to output 0 depth bg pixmap.
-
-	* scrollbar-msw.c: warning elimination.
-
-1998-05-18  Martin Buchholz  <martin@xemacs.org>
-
-	* frame-x.c (x_update_frame_external_traits): Start preprocessor
-	directives in column 1.
-
-	* search.c (skip_chars): Avoid using xzero with arrays, since some
-	compilers get confused by the construct &array.
-
-1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* objects-msw.h:
-	* objects-msw.c: Changed the charset value for a new font from
-	"don't care" to "ansi".
-
-	* glyphs-msw.c (convert_EImage_to_DIBitmap): Warnings fix.
-
-1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Do not clear shift
-	modifier on control chars.
-	Use IsCharAlpha() instead of isaplha().
-
-1998-05-19  Kazuyuki IENAGA <ienaga@jsys.co.jp>
-
-	* s/freebsd.h: FreeBSD 2.2.6 now supports setlocale(LC_ALL, "").
-
-1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* objects-msw.c (mswindows_initialize_font_instance): Use ANSI
-	charset when creating font.
-	(mswindows_initialize_color_instance): Do not create brush along
-	with a color.
-	(mswindows_finalize_color_instance): Do not delete it then.
-
-	* objects-msw.h (struct mswindows_color_instance_data): Removed
-	brush slot, and corresponding accessor macro.
+2000-01-09  Andy Piper  <andy@xemacs.org>
 
-1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* toolbar.c: Removed toolbar_data lrecord implementation.
-	(mark_frame_toolbar_buttons_dirty): Replase usage of toolbar_data
-	with toolbar_buttons (via FRAME_TOOLBAR_BUTTONS).
-	(compute_frame_toolbar_buttons): Ditto.
-	(CHECK_TOOLBAR): Ditto.
-	(set_frame_toolbar): Removed allocation of toolbar_data lrecord.
-	(update_frame_toolbars): Do not check for changed buffer
-	here. Toolbar information is provided by cached specs in
-	windows. The check for buffer is eliminated becuase toolbars are
-	marked changed in set_frame_selected_window() in frame.c
-	Added check for changed toolbars geometry.
-	(compute_frame_toolbars_data): Removed unused second parameter;
-	Adjusted callers of this static function throughout the file.
-	(init_frame_toolbars): Initialize current_toolbar_size.
-	(update_frame_toolbars): Use DEVICE_SUPPORTS_TOOLBARS_P instead of
-	what is its current expansion, for clarity.
-	(init_frame_toolbars): Ditto.
-	(init_device_toolbars): Ditto.
-	(init_global_toolbars): Ditto.
-
-	* toolbar.h: Removed definition of toolbar_data lrecord.
-	Added accessor macros FRAME_TOOLBAR_BUTTONS and
-	FRAME_CURRENT_TOOLBAR_SIZE.
-	Added macro DEVICE_SUPPORTS_TOOLBARS_P.
-
-	* toolbar-x.c (x_output_toolbar): The same change as in
-	toolbar-msw.c
-	(x_output_toolbar): Ditto.
-	(x_redraw_exposed_toolbar): Ditto.
-
-	* toolbar-msw.c (mswindows_output_toolbar): Retrieve current
-	buttons from toolbar_buttons using FRAME_TOOLBAR_BUTTONS macro.
-	(mswindows_output_toolbar): Ditto.
-	(mswindows_output_toolbar): Ditto.
-
-	* frame.c (mark_frame): Removed marking of arrays, according to
-	frameslots.h change.
-	(nuke_all_frame_slots): Ditto.
-	(set_frame_selected_window): Mark toolbars changed when
-	last_nonminibuf_window changes.
-
-	* frame.h (struct frame): Moved some slots to frameslots.h.
-	Added current_toolbar_size array.
-	Changed references from toolbar_data to toolbar_buttons in macros
-	FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE,
-	FRAME_RAW_THEORETICAL_TOOLBAR_SIZE and
-	FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH.
-
-	* frameslots.h: Added macro MARKED_SLOT_ARRAY a la winslots.h
-	Moved arrays of lisp objects here from frame.h: toolbar_size,
-	toolbar_visible_p, toolbar_border_width.
-	Removed toolbar_data slot and added toolbar_buttons.
-
-1998-05-17  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* symsinit.h: Externed syms_of_process_nt()
-
-	* emacs.c (main_1): Call syms_of_process_nt()
-
-	* process-nt.c: Quote process arguments by a call to Lisp function
-	`nt-quote-process-args'.
-	(syms_of_process_nt): New function.
-	(nt_send_process): Flush data stream after each write, to avoid
-	leaving buffered data.
-	(nt_send_process): When blocked on process output, wait for
-	process to slurp more for progressively increasing time intervals.
-
-1998-05-17  Martin Buchholz  <martin@xemacs.org>
-
-	* window.c (have_undivided_common_edge): Make file-local function
-	static.
-	(map_windows): Return 0 if all map functions successful.
-	Fix typos.
-
-	* winslots.h: Use unlikely names for local variables in macros to
-	avoid shadowing warnings.
-
-1998-05-17  Andy Piper  <andyp@parallax.co.uk>
-
-	* toolbar-msw.c (mswindows_output_toolbar): hash on toolbar width
-	so that we re-output if the toolbar size has changed.
-
-1998-05-17  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* s/aix4-2.h (ALIGN_DATA_RELOC): Undefined to support new unexaix.c.
-
-	* s/aix3-1.h (ALIGN_DATA_RELOC): Defined to support new unexaix.c.
-
-	* unexaix.c: Massive cleanup and support of AIX 4.2 (and hopefully
-	greater).
-
-1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* glyphs-msw.c: Defined OEMRESOURCE before including windows.h to
-	get bitmap manifest constants defined.
-
-	* console-msw.h: Include system files in angle brackets, not in
-	quotes.
-
-	* window.c (specifier_vars_of_window): Fixed a typo in
-	`vertical-divider-line-width' docstirng.
-
-1998-05-16  Olivier Galibert  <galibert@pobox.com>
-
-	* line-number.c (delete_invalidate_line_number_cache): Use an
-	EMACS_INT.
-	(buffer_line_number): Remove dangerous, plain wrong when using
-	64bits emacs ints, cast.
-
-	* insdel.c (buffer_delete_range): Use an EMACS_INT.
-
-	* cmds.c (Fforward_line): Use EMACS_INTs.
-
-	* search.c (bi_scan_buffer): Change to use EMACS_INTs.
-	(scan_buffer): Ditto.
-	(bi_find_next_newline_no_quit): Remove useless cast.
-	(find_next_newline_no_quit): Ditto.
-	(find_next_newline): Ditto.
-	(find_before_next_newline): Use an EMACS_INT.
-
-	* lisp.h: Change scan_buffer to pass EMACS_INTs.
-
-1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* menubar-msw.c (mswindows_handle_wm_command): Ditto.
-
-	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
-
-	* gui-x.c (popup_selection_callback): Use it.
-
-	* gui.h (get_callback): Declare it.
+	* glyphs-msw.c: index -> i to avoid shadows.
+	(xbm_create_bitmap_from_data): make static.
+	(check_valid_string_or_int): deleted.
+	(mswindows_control_wnd_proc): message -> msg to avoid shadows.
 
-	* gui.c (get_callback): New function.
-
-1998-05-15  SL Baur  <steve@altair.xemacs.org>
-
-	* window.c (have_undivided_common_edge): Guard scrollbar specific
-	stuff.
-	(window_needs_vertical_divider_1): Ditto.
-
-1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* emacs.c (decode_path): Eliminate compiler warning.
-	(Fdecode_path): Renamed to Fsplit_path.
-	(Fsplit_string_by_char): New function.
-
-1998-05-14  Damon Lipparelli  <lipp@primus.com>
-
-	* winslots.h: close comment
-
-1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* callproc.c: Removed declared and unused variable Qbuffer_file_type.
-
-	* bufslots.h: Removed buffer_file_type slot.
-
-	* buffer.c (complex_vars_of_buffer): Removed buffer_file_type from
-	buffer local flags.
-	(complex_vars_of_buffer): Removed buffer-file-type variable and
-	its default reference.
-
-1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* faces.c (complex_vars_of_faces): Defined
-	Vvertical_divider_face.
-	(vars_of_faces): Staticpro it.
-
-	* faces.h: Externed Vvertical_divider_face.
-
-	* redisplay-x.c (x_output_vertical_divider): Use
-	Vvertical_divider_face to draw the divider instead of modeline
-	face.
-
-	* redisplay-msw.c (mswindows_output_vertical_divider): Draw
-	divider face using Vvertical_divider_face background.
-	Fix drawing spacing gaps around the divider.
-
-1998-05-14  Didier Verna  <verna@inf.enst.fr>
-
-	* redisplay-x.c (x_output_vertical_divider): removed hard-wired
-	values for the vertical divider line width and spacing. Use the
-	cached values from the window structure instead.
-	(x_divider_width): ditto.
-
-	* window.c (specifier_vars_of_window): new specifiers:
-	vertical-divier -line-width and -spacing.
-	(vertical_divider_global_width_changed): formerly known as
-	vertical_divider_shadow_thickness_changed.
-
-	* winslots.h: new slots: vertical_specifier _line_width and
-	_spacing. Plus corrected a comment typo.
-
-1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* window.h: Declared window_divider_width().
-
-	* console-stream.c (stream_divider_width): Removed method.
-	(console_type_create_stream): And declaration for it.
-
-	* redisplay.c (pixel_to_glyph_translation): Use
-	window_divider_width() instead of divider_width redisplay method.
-	(pixel_to_glyph_translation): Fix top divider edge calculation
-	when scrollbar is on top.
-
-	* window.c (window_divider_width): New function, an outphaser for
-	divider_width redisplay method.
-	(window_right_gutter_width): Use it.
-	(specifier_vars_of_window): For	vertical-divider-{spacing,line-width}
-	specifiers, set fallback values differently on TTYs, and document
-	the behavior of these on TTYs in the docstrings.
-
-	* scrollbar.c (update_scrollbar_instance): Use
-	window_divider_width() instead of divider_width redisplay method.
-
-	* console.h (struct console_methods): Removed divider_width_method.
-
-	* redisplay-tty.c (tty_divider_width): Removed device method.
-	(console_type_create_redisplay_tty): Removed definition for it.
-	(tty_output_vertical_divider): Respect the value returned by
-	window_divider_width thus divider line width specification.
-
-	* redisplay-msw.c (mswindows_divider_width): Removed device method.
-	(console_type_create_redisplay_mswindows): Removed definition for it.
-	(mswinodws_output_vertical_divider): Respect the value returned by
-	window_divider_width thus divider line width specification.
-
-1998-05-15  Andy Piper  <andyp@parallax.co.uk>
-
-	* toolbar-msw.c: guess toolbar frame size a bit more accurately.
-
-1998-05-15  Andy Piper  <andyp@parallax.co.uk>
-
-	* glyphs-msw.c: resource loading implementation.
-	(cursor_normalize): new function.
-	(cursor_validate): ditto.
-	(cursor_instantiate): ditto.
-	(cursor_name_to_resource): ditto.
-	(cursor_possible_dest_types): ditto.
-	(check_valid_symbol): ditto.
-	(check_valid_string_or_int): ditto.
-
-1998-05-14  Martin Buchholz  <martin@xemacs.org>
-
-	* sysdep.c (tty_init_sys_modes_on_device): Treat VSUSP just like
-	VINTR and VQUIT.
-
-	* process-unix.c (process_signal_char): Use VSUSP instead of
-	non-standard VSWTCH.  Always prefer VSUSP to VSWTCH.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* specifier.c (specifier_instance): Change locale precedence of
-	instantiation so window locale has higher priority than buffer
-	locale.
-	(Fspecifier_instance): Reflect this in docstring.
-	(Fadd_spec_list_to_specifier): Ditto.
-	(Fadd_spec_to_specifier): Ditto.
-	(Fremove_specifier): Ditto.
-
-1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	** Dialog separation into a device method from Andy Piper
-
-	* emacs.c (main_1): Call console_type_create_dialog_x().
-
-	* dialog-x.c (x_popup_dialog_box): Old Fpopup_dialog_box converted
-	into this device method.
-	(console_type_create_dialog_x): New function.
-
-	* dialog.c (Fpopup_dialog_box): New function.
-	(syms_of_dialog): Defsubr it.
-
-	* console.h (struct console_methods): Declared
-	popup_dialog_box_method().
-
-	* symsinit.h: Defined console_type_create_dialog_{x,mswindows}
-
-1998-05-14  Oliver Graf <ograf@fga.de>
-
-	* dragdrop.c (vars_of_dragdrop): dragdrop-protocols created
-	* frame-x.c (x_cde_transfer_callback): checked for merge errors
-
-1998-05-13  Oliver Graf <ograf@fga.de>
-
-	* dragdrop.c (vars_of_dragdrop): provide dragdrop-api
-
-1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* console.h (device_metrics): Removed dbcs, input-method-editor
-	and right-to-left metrics.
-
-	* device.c (Fdevice_system_metric): Ditto.
-	(Fdevice_system_metrics): Ditto.
-	(syms_of_device): Ditto.
-	(Fdevice_system_metric): Swapped DEVICE and METRIC parameters back
-	again.
-
-1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* line-number.h (mark_line_number_cache): Remove unused
-	declaration.
-
-	* line-number.c (LINE_NUMBER_FAR): Increase to 32768.
-	(get_nearest_line_number): Simplify.
-	(add_position_to_cache): Make the old marker point nowhere.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	** Renamed window-divider-map => vertical-divider-map
-	and event-over-divider-p => event-over-vertical-divider-p,
-	in the following files/functions:
-	* events.h:
-	* events.c (Fevent_over_divider_p):
-	* keymap.c (get_relevant_keymaps):
-	(vars_of_keymap):
-
-	* redisplay.h (OVER_V_DIVIDER): Renamed so from OVER_DIVIDER.
-
-	* redisplay.c (pixel_to_glyph_translation): Use OVER_V_DIVIDER.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* window.c (vertical_divider_changed_in_window): Renamed so.
-	(specifier_vars_of_window): Defined Vvertical_divider_draggable_p.
-	(window_needs_vertical_divider_1): Decide whether we need it based
-	on the value of the above specifier. If separators are unwanted,
-	put them only if there's no scrollbar between this window and its
-	right neighbor.
-	(have_undivided_common_edge): New function, helper for the above.
-	(window_needs_vertical_divider): Return either a cached value,
-	or clauclate and cache one.
-	(invalidate_vertical_divider_cache_in_window): Implemented.
-	(map_windows): Changed return type to int, return the value from
-	MAPFUN.
-
-	* window.h: Prototype invalidate_vertical_divider_cache_in_window.
-	(struct window): Added need_vertical_divider_p and
-	need_vertical_divider_valid_p.
-
-	* winslots.h: Added vertical_divider_draggable_p slot.
-
-	* scrollbar.c (vertical_scrollbar_changed_in_window): Implemented.
-	(specifier_vars_of_scrollbar): Used it in all vertical specifiers.
-
-	* frame.c (invalidate_vertical_divider_cache_in_frame): New function.
-
-	* frame.h (MARK_FRAME_WINDOWS_STRUCTURE_CHANGED): Call
-	invalidate_vertical_divider_cache_in_frame().
-	Prototype it.
-
-1998-05-14  Andy Piper  <andyp@parallax.co.uk>
-
-	* toolbar-msw.c: provide correct parameters to TB_SETROWS.
-
-	* glyphs-msw.c (mswindows_initialize_image_instance_mask): size
-	masks correctly and don't select 0.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* winslots.h: New file, declaration of some struct window and
-	struct saved_window members.
-
-	* window.h (struct window): Include it, with required preprocessor
-	magic.
-
-	* window.c (mark_window): Ditto.
-	(allocate_window): Ditto.
-	(struct saved_window): Ditto.
-	(mark_window_config): Ditto.
-	(saved_window_equal): Ditto.
-	(Fset_window_configuration): Ditto.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* redisplay-msw.c (mswindows_output_vertical_divider): Syntax fix.
-
-1998-05-12  Didier Verna  <verna@inf.enst.fr>
-
-	* redisplay-x.c (x_output_vertical_divider): draw shadows around
-	the divider line. The shadow thickness is currently
-	hard-wired. This will probably be turned into a specifier soon.
-
-1998-05-12  Didier Verna  <verna@inf.enst.fr>
-
-	* console.h (struct console_methods): the divider_width console
-	method now requires a struct window * argument.
-
-	* redisplay-x.c (x_divider_width): ditto. Plus remove
-	X_DIVIDER_WIDTH, X_DIVIDER_SHADOW_THICKNESS.
-	(x_output_vertical_divider): give a depressed look when the shadow
-	thickness is negative.
-
-	* console-stream.c (stream_divider_width): pass a struct window *
-	argument.
-
-	* redisplay-tty.c (tty_divider_width): ditto.
+	* glyphs-x.c (x_update_subwindow): remove unused args.
 
-	* window.c (window_right_gutter_width): totdi.
-
-	* redisplay.c (generate_modeline): ittod.
-
-	* scrollbar.c (update_scrollbar_instance): ttido.
-
-	* redisplay-msw.c (mswindows_divider_width): ottid.
-	WARNING: this enables to compile, but the feature is not functional.
-
-	* window.h (struct window): new field
-	vertical_divider_shadow_thickness.
-
-	* window.c (specifier_vars_of_window): new specifier
-	vertical-divider-shadow-thickness.
-	(vertical_divider_shadow_thickness_changed): new function to
-	inform redisplay that the window has changed.
-	(mark_window): handle new field vertical_divider_shadow_thickness
-	from struct window.
-	(allocate_window): ditto.
-	(saved_window_equal): toddi.
-	(Fset_window_configuration): totid.
-	(save_window_save): ttdio.
-	(struct saved_window): new field vertical_divider_shadow_thickness.
-
-1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* device-msw.c (mswindows_device_system_metrics): Support a deluge
-	of metrics.
-
-1998-05-12  Oliver Graf <ograf@fga.de>
-
-	* frame-x.c (x_cde_transfer_callback): fixed for the new protocol
-	* event-Xt.c (x_event_to_emacs_event): C++ compability
-
-1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* emacs.c (Fdecode_path): Default SEPCHAR to value of
-	path-separator.
-
-1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* emacs.c (vars_of_emacs): Do it here; change the meaning of
-	Vpath_separator.
-
-	* fileio.c (vars_of_fileio): Don't define Vpath_separator here.
-
-1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* emacs.c (decode_path_1): New function.
-	(decode_path): Use it.
-	(Fdecode_path): Renamed from Fdecode_path_internal; use
-	decode_path_1.
-
-1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* macros.c (Fzap_last_kbd_macro_event): New function.
-	(Fend_kbd_macro): Remove REMOVE_LAST kludge.
-
-1998-05-10  Andy Piper  <andyp@parallax.co.uk>
-
-	* redisplay-msw.c (mswindows_output_dibitmap_region): make sure
-	multiple bitmaps are output vertically as well as horizontally.
-	* (mswindows_output_dibitmap): don't cope with bitmap boundaries
-	crossing lines this is handled by
-	mswindows_output_dibitmap_region.
-
-1998-05-12  Martin Buchholz  <martin@xemacs.org>
-
-	* inline.c: Include eldap.h
-
-	* menubar-x.c (x_update_frame_menubar_internal):
-	Remove: unused variable `container'
-
-1998-05-11  Martin Buchholz  <martin@xemacs.org>
-
-	* s/aix4.h: Allow AIX 4.3 XEmacs to compile cleanly.
-	Unfortunately, the resulting temacs still cannot dump.
-
-	* symbols.c (symbol_is_constant):
-	(verify_ok_for_buffer_local):
-	-Wswitch Warning suppression - add default case to switches.
-
-	* redisplay.c (decode_mode_spec): Remove unused variables,
-	Replace Fcoding_system_property (codesys, Qmnemonic) with
-	XCODING_SYSTEM_MNEMONIC (codesys);
-	Fcoding_system_property is for users.
-
-	* buffer.c:
-	* fileio.c:
-	* lread.c:
-	* xselect.c:
-	Change empty docstrings into no doc strings at all.
-	Fix bogus FSF-format docstrings.
-
-	* extents.c:
-	Standardize docstrings.
-
-	* floatfns.c:
-	Explain problems with matherr.
-
-	* glyphs.c:  make DEFUNs etags-readable, i.e. single-line
-
-	* syssignal.h:
-	if BROKEN_SIGIO, then SIGIO wants to be undefined.
-	if SIGIO and not SIGPOLL, SIGPOLL wants to be SIGIO.\
-	Fix the weird resultant interaction (causes windows problems)
-
-	* gdbinit:
-	* dbxrc:
-	Take new EMACSBOOTSTRAPLOADPATH into account.
-	Update documentation strings
-
-	* Makefile.in.in:
-	- Adjust for luser's CDPATH being set to something weird.
-	- Take into account bash 2.02's tendency to print the cwd when
-	  using CDPATH.  Always use `cd ./foo' instead of `cd foo'.
-	- fix the run-temacs target to use $(DUMPENV)
-	- fix the run-puremacs target to use $(DUMPENV)
-	- fix the `depend' target to properly $(RM) the right files
-	- Generate a better TAGS file for XEmacs' lisp code using
-	  hand-crafted regexps.
-	- Use standard coding conventions for modules/Makefile.in
-
-1998-05-12  Didier Verna  <verna@inf.enst.fr>
-
-	* redisplay.c: removed the scrolling modeline code that didn't
-	make it for 21.0. To be continued ...
-
-1998-05-13  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-
-	* emacs.c (Fdecode_path_internal): Removed bogus handling of nil
-	and empty string inputs.
+	* glyphs.c (glyph_image_instance): return the thing. Don't set the
+	back pointer - this is done in allocate_image_instance.
+	(query_string_font): return Qnil to make the compiler happy.
+	(unmap_subwindow): set to ~0 to make the compiler happy.
+	(glyph_query_geometry): comment out until used.
+	(glyph_layout): ditto.
 
-1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* redisplay-x.c (x_output_vertical_divider): Fixed typo.
-
-1998-05-10  Oliver Graf <ograf@fga.de>
-
-	* event-stream.c (enqueue_misc_user_event_pos): created
-	* lisp.h (enqueue_misc_user_event_pos): prototype added
-	* frame-x.c (x_cde_transfer_callback): debug code plus API changes
-	* emacs.c: call vars_of_dragdrop
-	* dragdrop.c (vars_of_dragdrop): provide dragdrop
-
-1998-05-11  Oliver Graf <ograf@fga.de>
-
-	* frame-x.c (x_cde_transfer_callback): return at correct pos
-	* event-Xt.c (x_event_to_emacs_event): changed format of drop
-	object for MIME (see comment in dragdrop.c)
-	* dragdrop.c: API change documented in comment
-	removed provide of dragdrop [is provided by dragdrop.el]
-
-1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* window.c (window_needs_vertical_divider): Enable vertical
-	dividers for every non-rightmost window.
-	(window_left_gutter_width): Left gutter consists of mythical
-	toolbar and a virtual scrollbar.
-	(window_right_gutter_width): The right one may have a divider
-	also.
-
-	* scrollbar.c (update_scrollbar_instance): Position vertical
-	scrollbar left to divider if the latter present.
-
-	* redisplay.h: Declared OVER_DIVIER constant.
-
-	* redisplay.c (pixel_to_glyph_translation): Handle OVER_DIVIDER
-	case.
-
-	* redisplay-x.c (x_output_vertical_divider): Output divider along
-	the right side of the window, down to window bottom. Swapped
-	foreground and background colors so it is visible by default.
-
-	* redisplay-tty.c (tty_output_vertical_divider): Uncondiionally
-	stick the divider to the right window side.
-
-	* redisplay-msw.c (mswindows_redisplay_deadbox_maybe): Fixed
-	deadbox painting.
-	(mswindows_divider_width): Ask system for user preferred value.
-	(mswindows_output_vertical_divider): Always output the divider on
-	the right side of a window, down to bottom.
-
-	* keymap.c (get_relevant_keymaps): Route mouse button events which
-	happened over a window divider through window-divider-map.
-	(Fkey_binding): Documented that in the docstring.
-	Defined the variable Vwindow_divider_map.
-
-	* events.c (Fevent_over_divider_p): Added this function.
-
-	* events.h: EXFUNed it.
-
-1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* toolbar.c (update_frame_toolbars): Re-layout frame windows if
-	toolbar geometry is suspected to change.
-
-1998-05-11  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>
 
-	* src/device-msw.c
-	* src/event-msw.c
-	Condition dnd and dde code on HAVE_DRAGNDROP.
-
-1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* events.c (format_event_object): Print space as SPC etc.
-
-1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* print.c (print_internal): In the default case, abort() if
-	ERROR_CHECK_TYPECHECK.
-
-	* fileio.c (Fmake_temp_name): Doc fix.
-
-1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* xgccache.c (describe_gc_cache): Define only if DEBUG_XEMACS.
-
-	* undo.c (Fprimitive_undo): Fixed typo.
-
-1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* fns.c (concat): Signal error on integer argument.
-
-1998-05-10  Kirill M. Katsnelson  <kkm@kis.ru>
-
-	* console.h (device_metrics): Prefixed each constatnt with DM_
-
-	* device.c: (Fdevice_system_metric): Renamed so from plural form
-	(metrics); Changed parameters order and added DEFAULT parameter;
-	Unabbreviated some metric constants; Fixed and untabified doc string.
-	(Fdevice_system_metrics): Added. Returns a plist of all provided
-	metrics.
-
-	* device-msw.c (mswindows_device_system_metrics): Renamed
-	device_metrics enum constants.
-	Return Qunbound instead of Qnil.
-
-	* device-tty.c (tty_device_system_metrics): Ditto.
-
-	* device-x.c (x_device_system_metrics): Ditto.
-
-1998-05-10  Andy Piper  <andyp@parallax.co.uk>
-
-	* redisplay-msw.c: implement background pixmaps (really!). Make
-	sure bg color is transparent if we have bg pmaps.
-	* (mswindows_output_string) (mswindows_clear_region): output bg
-	pmap if required.
-	* (mswindows_output_dibitmap_region): new function.
-	* (mswindows_output_dibitmap): output offset pixmaps, blt masks in
-	the bg color rather than transparently.
-
-	* toolbar-msw.c: use masks if they exist.
-
-	* glyphs-msw.c: set up masks correctly.
-
-	* event-msw.c: typedef SOCKET if cygwin and not msg select().
-
-1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* regex.c (re_match_2_internal): Check for quit.
-
-1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
-
-	* frame.c (Ffocus_frame): New function.
+	* insdel.c (signal_after_change): Remove extraneous unbind_to().
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ChangeLog.2	Mon Aug 13 11:32:25 2007 +0200
@@ -0,0 +1,8737 @@
+2000-01-09  Norbert Koch  <norbert@s.netic.de>
+
+	* sysfile.h: Remove definition of HAVE_FSYNC. It's tested for
+	in configure.
+
+2000-01-09  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp.h (xfree_1): Make non-public.
+	* (xzero): Use '\0' in memset call for clarity.
+	* (ALIGNOF): Use __alignof__ instead of undocumented __alignof.
+	* alloc.c (allocate_string_chars_struct): 
+	(make_uninit_string): 
+	(resize_string): 
+	(verify_string_chars_integrity):
+	(compact_string_chars): Now only called for small strings.
+	(sweep_strings):
+	String allocation rewrite.
+	Properly handle resizing big strings.
+	Fixes crash when evaluating:
+	(aset (make-string 9003 ??) 1 (make-char 'latin-iso8859-1 57))
+	Use consistent coding convention.
+	Never use xfree_1() directly.
+	General cleanup.
+	(CHARS_TO_STRING_CHAR): Remove. No longer needed.
+	Big strings had unused space at beginning.
+
+	* scrollbar.c (specifier_vars_of_scrollbar):
+	* scrollbar.c (complex_vars_of_scrollbar):
+	* gutter.c (specifier_vars_of_gutter):
+	* menubar.c (specifier_vars_of_menubar):
+	* toolbar.c (specifier_vars_of_toolbar):
+	* glyphs.c (specifier_vars_of_glyphs):
+	* redisplay.c (specifier_vars_of_redisplay):
+	* window.c (specifier_vars_of_window):
+	* lisp.h (slot_offset): Remove slot_offset.
+	Replace all calls to `slot_offset' with the standard name, `offsetof'.
+
+	* menubar-x.c (compute_menubar_data):
+	Remove Fset_buffer(), always called by unwind_protect.
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Fiddling.
+	* menubar-x.c (set_frame_menubar): comment fix.
+
+	* keymap.c (lookup_keys): Remove extra parens.
+	* keymap.c (lookup_events): Remove extra parens.
+
+	* dbxrc (run-temacs): Allow function to take arguments.
+
+	* Makefile.in.in (PURIFY_FLAGS): No longer need pointer-mask.
+
+2000-01-08  Andy Piper  <andy@xemacs.org>
+
+	* event-msw.c (mswindows_wnd_proc): don't need to check for widget
+	face anymore.
+
+	* frame.c (change_frame_size_1): use new glyph_* signatures.
+	(frame_conversion_internal): ditto.
+
+	* toolbar-x.c (x_get_button_size): Use modified glyph_*
+	signatures.
+
+	* redisplay.c (add_glyph_rune): Use modified glyph_* signatures.
+	(add_glyph_rune): dittto.
+	(add_margin_runes): ditto.
+	(create_left_glyph_block): ditto.
+	(create_right_glyph_block): ditto.
+	(redisplay_window): ditto.
+
+	* redisplay-output.c (redisplay_output_layout): Use modified
+	glyph_* signatures.
+
+	* glyphs.h: (struct image_instantiator_methods): change signature
+	of query_geometry and layout.
+	(struct Lisp_Image_Instance): Clean up fields for dynamic geometry
+	calculations.
+	(struct expose_ignore): change field types.
+	(struct subwindow_cachel): ditto.  declare new functions and
+	accessor macros.
+
+	* glyphs.c: (instantiate_image_instantiator): assign glyph when
+	creating the image instance.
+	(image_instance_hash): fixup for new and deleted fields.
+	(image_instance_equal): ditto.
+	(mark_image_instance): ditto.
+	(print_image_instance): ditto.
+	(allocate_image_instance): zero width and height. assign attached
+	glyph. mark as dirty for future layout.
+	(make_image_instance_1): pass Qnil as the glyph its attached to.
+	(Fimage_instance_height): simply return the height.
+	(Fimage_instance_width): simply return the width.
+	(image_instance_query_geometry): new function. query the image
+	instance's geometry by wiring through to format and device
+	specific methods. fallback on the existing geometry.
+	(image_instance_layout): new function. layout the image instance
+	by querying its geometry and then wiring through to format and
+	device specific methods.
+	(query_string_geometry): new function to decide the bounding box
+	of a string. text glyph geometry calculations moved here.
+	(query_string_font): new function. find out the font for a given
+	string in a given face.
+	(text_query_geometry): return geometry based on
+	quert_string_geometry.
+	(formatted_string_instantiate): call string_instantiate.
+	(image_instantiate): put strings in the per-window cache. Feed the
+	glyph to the instantiated image instance.
+	(glyph_height_internal): deleted.
+	(glyph_width): simply return the required dimension. re-layout if
+	the instance is dirty. Remove references to face_index and
+	frame_face which were only used for strings.
+	(glyph_ascent): ditto.
+	(glyph_descent): ditto.
+	(glyph_height): ditto.
+	(Fglyph_width): use new glyph_width function.
+	(Fglyph_ascent): use new glyph_ascent function.
+	(Fglyph_descent): use new glyph_descent function.
+	(Fglyph_height): use new glyph_height function.
+	(glyph_property_was_changed):
+	(glyph_image_instance_maybe): new function to possible create an
+	image instance from a glyph if we don't have one already.
+	(glyph_dirty_p): use it.
+	(glyph_layout): new function for laying out a glyph.
+	(glyph_query_geometry): new function for finding out the desired
+	geometry of a glyph.
+	(update_glyph_cachel_data): use new glyph_* signatures.
+	(update_subwindow): call resize_subwindow.
+	(map_subwindow): call update_subwindow if the image is dirty.
+	(subwindow_instantiate): add comment.
+	(Fresize_subwindow): don't actually resize the window, just record
+	the values and let update_subwindow handle it.
+	(Fglyph_animated_timeout_handler): use
+	MARK_IMAGE_INSTANCE_CHANGED.
+	(image_instantiator_format_create): declare things with
+	query_geometry and layout functions.
+
+	* glyphs-x.c: (x_update_subwindow): remove widget sizing.
+	(update_widget_face): use query_string_font.
+	(x_widget_set_property): don't return Qt when setting is
+	succesful.
+	(x_combo_box_instantiate): call widget_instantiate rather than
+	widget_instantiate_1.
+
+	* glyphs-widget.c: (widget_face_font_info): deleted.
+	(widget_text_to_pixel_conversion): deleted.
+	(widget_set_property): make sure the new text gets propagated to
+	the image instance.
+	(widget_layout): new function. wire through to device and format
+	specific methods.
+	(widget_query_geometry): new function. wire through to device and
+	format specific methods. fallback on geometry of widget text.
+	(initialize_widget_image_instance): fixup new fields.
+	(widget_instantiate_1): deleted.
+	(tree_view_instantiate): deleted.
+	(tree_view_query_geometry): new function. returns desired sizing
+	of tree view.
+	(tab_control_instantiate): deleted.
+	(tab_control_query_geometry): new function. returns desired sizing
+	of tab.
+	(widget_instantiate): subsume widget_instantiate_1. Fixup geometry
+	things in the light of dynamic layout.
+	(static_instantiate): deleted.
+	(layout_instantiate): use new glyph_* signatures.
+	(image_instantiator_format_create_glyphs_widget): fixup
+	query_geometry and layout declarations for various widgets.
+
+	* glyphs-msw.c: (mswindows_widget_instantiate): add comment.
+	(mswindows_button_instantiate): use query_string_font for geometry
+	calculations.
+	(mswindows_update_subwindow): ditto.
+	(mswindows_combo_box_instantiate): fixup for new geometry
+	management.
+	(mswindows_widget_set_property): Don't return Qt so that other
+	methods can be called.
+
+2000-01-08  Martin Buchholz  <martin@xemacs.org>
+
+	* gdbinit: rename to .gdbinit so that gdb will automatically source it.
+
+2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* insdel.c (signal_before_change): Make sure START and END are
+	within the buffer before calling report_extent_modification().
+	(signal_after_change): Ditto for START, NEW_END, and ORIG_END.
+
+2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* extents.h: Correct prototype of report_extent_modification().
+
+	* insdel.c (signal_before_change): Place record_unwind_protect()
+	outside MAP_INDIRECT_BUFFERS loops.
+	(signal_after_change): Ditto.
+
+	* extents.c (report_extent_modification): Don't expect pointer to
+	inside_change_hook.
+	(report_extent_modification_mapper): Explain why
+	closure->speccount is almost unused.
+
+	* insdel.c (change_function_restore): Call Fset_buffer only if
+	necessary.
+	(signal_before_change): Don't propagate inside_change_hook to
+	report_extent_modification().
+
+2000-01-07  Martin Buchholz  <martin@xemacs.org>
+
+	* elhash.c (make_general_lisp_hash_table): Remove purify UMR.
+	(hash_table_rehash_threshold): Removed. Update all callers.
+
+2000-01-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* s/windowsnt.h: Fix mail locking stuff.
+
+	* s/aix3-2.h: Remove HAVE_FSYNC which is now autodetected.
+
+	* emacs.c (vars_of_emacs): Added `mail-lock-methods' and
+	`configure-mail-lock-method' variables.
+
+	* config.h.in: Fix mail locking stuff.
+
+2000-01-04  Martin Buchholz  <martin@xemacs.org>
+
+	* mule-charset.h (REP_BYTES_BY_FIRST_BYTE): 
+	Remove macro, always use inline function.
+	* mule-charset.c (make_charset): Don't assign to rep_bytes_by_first_byte.
+	(rep_bytes_by_first_byte): Make const.
+
+2000-01-03  Didier Verna  <didier@xemacs.org>
+
+	* redisplay.c (generate_fstring_runes): new parameter `offset'.
+	Take offset into account when outputting strings or glyphs.
+	(generate_formatted_string_db): call generate_fstring_runes with
+	an offset of 0 if generating a frame or icon title, or the
+	modeline hscroll if generating a modeline.
+
+	* redisplay.h: remove prototype of `generate_formatted_string' and
+	add prototype for `generate_formatted_string_db', now used in
+	"frame.c".
+
+	* frame.c: `title_string_display_line' and
+	`title_string_emchar_dynarr', formerly known as
+	`format_string_display_line' and `format_string_emchar_dynarr'
+	moved here from "redisplay.c".
+	(generate_title_string): formerly known as
+	`generate_format_string', moved here from "redisplay.c".
+	(update_frame_title): take these name changes into account.
+	(init_frame): new function. Initialize here the variables that
+	were previously in "redisplay.c" and initialized in
+	`init_redisplay'.
+
+	* frame.h: prototype for `init_frame'.
+
+	* window.c (Fmodeline_hscroll): restore the definition (remove the
+	MODELINE_IS_SCROLLABLE #ifdef).
+	(Fset_modeline_hscroll): ditto, docstring improvement, and return
+	the actual value that was set.
+	(struct saved_window): turn the `modeline_hscroll' field into a
+	Charcount.
+	(syms_of_window): restore the declaration of
+	`[set-]modeline-hscroll' (remove the MODELINE_IS_SCROLLABLE #ifdef).
+
+	* window.h (struct window): turn the `modeline_hscroll field' into
+	a Charcount.
+
+	* emacs.c: include "frame.h" to get `init_frame'.
+	(main_1): call `init_frame'.
+
+1999-12-31  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.26 is released.
+
+1999-12-31  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_widget_instantiate): Avoid X errors calling
+	XMapWindow() on a NULL pointer X window.
+
+1999-12-31  Martin Buchholz  <martin@xemacs.org>
+
+	* data.c (indirect_function): Use signal_void_function_error().
+
+	* lisp.h: Modify prototypes for signal_*().  Add SUBR_FUNCTION macro.
+
+	* eval.c (PRIMITIVE_FUNCALL): Optimize.
+	(signal_void_function_error): return result of Fsignal().
+	(signal_invalid_function_error): return result of Fsignal().
+	(signal_wrong_number_of_arguments_error): return result of Fsignal().
+	(signal_malformed_list_error): Add DOESNT_RETURN.
+	(signal_malformed_property_list_error): Add DOESNT_RETURN.
+	(signal_circular_list_error): Add DOESNT_RETURN.
+	(signal_circular_property_list_error): Add DOESNT_RETURN.
+	(Feval): Use returned results of signal_*().  Avoids a crash!
+	(Ffuncall): Use returned results of signal_*(). Avoids the crash:
+	  (setq debug-on-error t) (funcall 'foo) kbd{r42} kbd{RET}
+	- Only check for fun_nargs < subr_min_args if fun_nargs != max_args.
+	(function_argcount): Use signal_invalid_function_error().
+	(funcall_lambda): Use signal_wrong_number_of_arguments_error().
+	Use signal_invalid_function_error().
+
+1999-12-28  Andy Piper  <andy@xemacs.org>
+
+	* debug.c: rename debug_loop elements to X_ to avoid name clashes.
+
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): strdup
+	string_chars.
+	(menu_item_descriptor_to_widget_value_1): strdup name.
+	(pre_activate_callback): strdup name.
+
+	* scrollbar-x.c (scrollbar_instance_to_widget_value): strdup name.
+	(x_update_scrollbar_instance_status): use free_widget_value_tree.
+
+	* dialog-x.c (maybe_run_dbox_text_callback): strdup name.  use
+	free_widget_value_tree.
+	(dbox_descriptor_to_widget_value): ditto.
+
+	* gui-x.c (widget_value_unwind): use free_widget_value_tree.
+	(gui_items_to_widget_values_1): ditto.
+	(gui_items_to_widget_values): ditto.
+	(free_popup_widget_value_tree): free name.
+
+1999-12-27  Andy Piper  <andy@xemacs.org>
+
+	* nt.c (fstat): use get_osfhandle rather than the handle
+	directly. From Fabrice Popineau.
+
+	* process-nt.c (nt_open_network_stream): take types into account
+	when warning. From Fabrice Popineau.
+
+1999-12-24  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.25 is released.
+
+1999-12-22  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments.
+
+1999-12-21  Martin Buchholz  <martin@xemacs.org>
+
+	* editfns.c (Fpoint_min): 
+	(Fpoint_min_marker): 
+	(Fpoint_max): 
+	(Fpoint_max_marker): 
+	(Fchar_after): 
+	(Fchar_before): 
+	Docstring fixes.  What's a `buffer pointer' anyways?
+
+	* editfns.c (char=): Remove unused and undocumented optional
+	third BUFFER argument.
+
+	* toolbar.h (DEVICE_SUPPORTS_TOOLBARS_P): 
+	* fns.c (plists_differ): 
+	* elhash.c (HASH_CODE): 
+	* elhash.c (KEYS_EQUAL_P): 
+	* redisplay-output.c (redisplay_move_cursor): 
+	* redisplay.c (create_text_block): 
+	* floatfns.c (Flogb): 
+	* glyphs-msw.c (mswindows_initialize_image_instance_mask): 
+	* glyphs-msw.c (xpm_to_eimage): 
+	* buffer.h (POINT_MARKER_P): 
+	* syntax.c (scan_lists): 
+	* cmdloop.c (Fcommand_loop_1): 
+	* widget.c (Fwidget_apply): 
+	* regex.c (STREQ): 
+	Remove extra parens, esp. of the form ((expr))
+
+	* floatfns.c (Flogb): Make 64-bit clean.
+
+1999-12-12  Daniel Pittman  <daniel@danann.net>
+
+	* configure.in:
+	* configure.usage:
+        Clean up Athena widget support:
+	- Add `with-athena' to select a variant.
+	- Remove all `athena3d' options.
+	- Robust detection of Athena libraries and headers.
+        - Refuse to build with mismatched library and headers.
+        - Only build a 3d Athena if the user asks for it.
+
+1999-12-21  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.c (redisplay_frame): check for faces changed when
+	reseting subwindow caches.
+
+	* glyphs.h (struct ii_keyword_entry): add copy_p.
+	(struct image_instantiator_methods): add query_geometry_method and
+	layout_children_method.
+	(IIFORMAT_VALID_GENERIC_KEYWORD): new macro to take into account
+	copying characteristics of keywords.
+	(IIFORMAT_VALID_NONCOPY_KEYWORD): new macro for defining keywords
+	whose arguments should not be copied by the specifier code.
+	(image_instance_geometry): new enum for layouts.
+	(struct Lisp_Image_Instance): re-jig for layouts and update
+	macros.
+
+	* glyphs.c (string_instantiate): rename variables.
+	(image_instantiate): add strings to those widgets that are
+	instantiated per-window.
+	(image_copy_vector_instantiator): new function for copying glyph
+	specifier instantiators.
+	(image_copy_instantiator): ditto.
+
+	* glyphs-x.c (x_update_subwindow): use new face update functions.
+	(update_widget_face): update to use new lwlib arg functions.
+	(update_tab_widget_face): new function for updating tab control
+	label faces.
+	(x_widget_instantiate): use new face update functions and new
+	lwlib arg functions.
+	(x_tab_control_instantiate): ditto.
+	(x_tab_control_set_property): ditto.
+
+	* glyphs-widget.c (VALID_GUI_KEYWORDS): use NONCOPY keyword for
+	callbacks and other things that could recurse.
+	(VALID_GUI_KEYWORDS): 
+
+	* event-msw.c: fix cpp stuff for cygwin < b20.
+
+	* config.h.in: move uid_t and friends to before the s&m files so
+	that they can be used there.
+
+	* Makefile.in.in (debug-temacs): new target that adds emacs
+	environment before invoking gdb.
+
+	* lwlib.h (_widget_args): new structure for holding widget
+	args. It is reference counted so that we don't have to copy Xt
+	args.
+	(_widget_value): remove widget args. Add reference to widget_args.
+
+	* lwlib.c (free_widget_value_contents): free widget args using
+	free_widget_value_args.
+
+	* lwlib-Xaw.c (xaw_update_one_widget): use new arg packet.
+	(xaw_update_one_widget): use XtIsSubclass for determining labels.
+
+	* lwlib.c (lw_add_value_args_to_args): modify to use our reference
+	counted arg packet.
+	(lw_add_widget_value_arg): new function. Add an arg to the arg
+	packet.
+	(free_widget_value_args): new function. Remove a reference counted
+	arg packet.
+	(lw_copy_widget_value_args): new function. Copy reference counted
+	arg packet.
+	(merge_widget_value_args): new function. Do a merge of widget
+	args.
+	(merge_widget_value): use it.
+	(copy_widget_value_tree): copy widget args using reference
+	counting, since we can't easily copy the args we have been given.
+
+	* specifier.h (struct specifier_methods): add copy_instantiator_method.
+
+	* specifier.c (build_up_processed_list): use
+	copy_instantiator_method if defined.
+
+1999-12-19  Martin Buchholz  <martin@xemacs.org>
+
+	* fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings.
+
+1999-12-19  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* profile.c (sigprof_handler): FUN retrieved from the backtrace
+	can also be a cons representing anonymous interpreted function.
+
+1999-12-18  Martin Buchholz  <martin@xemacs.org>
+
+	* fns.c (mapcar1): 
+	(Fmapconcat): 
+	(Fmapcar): 
+	(Fmapvector): 
+	Docstring fixes.  Make them consistent with the lispref and ANSI Lisp.
+
+1999-12-17  Martin Buchholz  <martin@xemacs.org>
+
+	* print.c (print_internal): print ?+ instead of ?\+, etc...
+	Make printing a little more efficient.
+	Prevent buffer overflow if sizeof EMACS_INT > 8.
+	My first 128-bit fix!
+
+1999-12-14  Karl M. Hegbloom  <karlheg@inetarena.com>
+
+	* filelock.c (unlock_all_files): GC_CONSP should be CONSP
+
+1999-12-17  Martin Buchholz  <martin@xemacs.org>
+
+	* database.c:
+	* window.c:
+	* event-stream.c:
+	Remove last vestigial uses of GC_*
+	
+	* fns.c (mapcar1): Fix ***THREE*** obscure crashes in one function!
+	- Two of those involve evil mapping functions that destructively
+	  modify a list being mapped over.
+	- Any garbage collection when mapping over a string could cause a
+	  crash (typically in mapconcat).
+
+1999-12-08  Adrian Aichner  <adrian@xemacs.org>
+
+	* s\windowsnt.h (DIRECTORY_SEP): Initialize from
+	`Vdirectory_sep_char'.
+
+	* lisp.h: Add declaration for `Vdirectory_sep_char' to allow
+	customization of `DIRECTORY_SEP' under native Windows NT.
+
+1999-12-14  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* buffer.c (Fbury_buffer): Add directions to the docstring.
+
+1999-12-14  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.24 is released.
+
+1999-12-13  Martin Buchholz  <martin@xemacs.org>
+
+	* sound.c (vars_of_sound): Provide esd-sound if HAVE_ESD_SOUND
+
+	* nas.c: Fix compiler warnings.  Ansify.  C++ compilation support.
+
+1999-12-13  Kazuyuki IENAGA <ienaga@jsys.co.jp>
+
+	* input-method-xlib.c: Make sure src/ does not use Athena, except
+	indirectly through lwlib.
+
+1999-12-13  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* dbxrc (pobj):	Add opaque_ptr, remove opaque_list.
+
+1999-12-10  Shenghuo ZHU <zsh@cs.rochester.edu>
+
+	* file-coding.c (add_coding_system_to_list_mapper): 
+	- (coding-system-list) should list aliases correctly.
+
+1999-12-07  Andy Piper  <andy@xemacs.org>
+
+	* fileio.c (vars_of_fileio): directory separator fix from Mike Alexander.
+	* windowsnt.h (ditto):
+
+1999-11-27  Adrian Aichner  <adrian@xemacs.org>
+
+	* sysfile.h: Encapsulate `fstat' for Windows NT just like stat to
+	get consistent file modification times.
+
+	* sysdep.h: Declare `wait_for_termination' to use process handle,
+	not PID, on Windows NT native.
+
+	* sysdep.c (wait_for_termination): Use process handle, not PID, on
+	Windows NT native.  Set exit code correctly on Windows NT.
+	(sys_subshell): Use process handle, not PID,
+	on Windows NT native.
+	(sys_fstat): Add ENCAPSULATE_FSTAT for Windows NT.
+
+	* process-nt.c (nt_create_process): Remove negative pid hack for
+	Windows 95.
+	(nt_send_process): Declare vol_proc volatile.
+	(get_internet_address): warn_when_safe if IP address cannot be
+	found.
+	(nt_open_network_stream): warn_when_safe if network stream fails
+	to open.
+	
+	* ntproc.c (create_child): Remove negative pid hack for Windows
+	95.  Remove incorrect and unnecessary USE_UNION_TYPE handling.
+
+	* nt.c (fstat): Encapsulate for Windows NT just like stat to get
+	consistent file modification times.
+
+	* callproc.c (call_process_cleanup): Use process handle, not PID,
+	on Windows NT native.
+	(Fcall_process_internal): Ditto.  Close fd_error in parent.  Don't
+	check for negative pid on Windows NT/9[58].
+
+1999-12-07  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.23 is released.
+
+1999-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* events.c (Fcopy_event): Don't copy the lrecord_header.
+
+	* lisp.h (DO_REALLOC): 
+	Optimize.
+	Remove redundant parens.
+	Remove generic hygienic macro comment.
+
+	* lrecord.h (set_lheader_implementation): Remove redundant parens.
+
+1999-12-05  Martin Buchholz  <martin@xemacs.org>
+
+	* lstream.c (Lstream_adding): 
+	- Never compare a size_t and a possibly negative number.
+	- Optimize.
+
+1999-12-05  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* lisp/itimer.el: (require 'lisp-float-type).  Use
+	  floats directly in itimer-time-difference.
+
+1999-12-05  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_output_layout): avoid name hiding.
+
+	* gui.h: declare gui_add_item_keywords_to_plist.
+
+	* window.c (Fdelete_window): mark subwindows as changed so that
+	they can be GC'd if necessary.
+
+1999-12-02  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* src/callproc.c (Fcall_process_internal): Be careful in writing
+	terminating null when copying args. nargs can be < 4.
+	Idea from Klaus Frank <klausf@i3.informatik.rwth-aachen.de>
+
+1999-11-29  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* src/sound.c (Fding): Remove zero initialization of
+	  static variables to avoid crashes on systems that dump
+	  the initialized data segment read-only.
+
+1999-12-05  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* glyphs-x.c (convert_EImage_to_XImage): Guard against other
+	visual classes. From Rasmus Borup Hansen <rbh@math.ku.dk>
+
+1999-12-04  Martin Buchholz  <martin@xemacs.org>
+
+	* lstream.c: (filedesc_reader): 
+	(filedesc_writer): Try number 2: Support broken systems where
+	return type of read() and write() is different from ssize_t.
+
+	* systty.h: 
+	* sysdep.h:
+	* sysdep.c:
+	- Replace macro calls to EMACS_GET_TTY and EMACS_SET_TTY with
+	  function equivalents emacs_get_tty() and emacs_set_tty().
+	- Moved prototypes to systty.h, where struct event_tty is defined.
+	- Renamed bogus `waitp' parameter to `flushp'.
+
+	* lstream.c (filedesc_reader): Support broken systems where return
+	type of read() is different from ssize_t.
+
+	* events.c (Fcopy_event): Avoid redundant EQ test if event2 is nil.
+
+	* event-stream.c (menu_move_up): Remove redundant if block.
+	(menu_move_down): Gratuitous rewriting.
+	(menu_move_left): Work around Cygnus codefusion-990706 compiler bug.
+	(menu_move_right): Ditto.
+
+	* lrecord.h (copy_lcrecord):
+	(zero_lcrecord): 
+	Always add parentheses around uses of macro arguments.
+
+	* sysdll.c: #include <stdlib.h> for exit().
+	* unexhp9k800.x: #include <stdlib.h> for malloc().
+	Use proper prototype for Save_Shared_Data(void).
+
+1999-12-04  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* src/redisplay.c (point_would_be_visible): Correct for topclip.
+
+1999-12-02  Hrvoje Niksic  <hniksic@iskon.hr>
+
+	* lisp.h: Declare Qself_insert_defer_undo.
+
+	* event-stream.c (Fdispatch_event): Get the magic undo thing from
+	a symbol property, so commands other than self-insert-command can
+	install it.
+	(syms_of_event_stream): Define Qself_insert_defer_undo.
+
+1999-11-30  Martin Buchholz  <martin@xemacs.org>
+
+	* floatfns.c (emacs_rint): Rename rint to emacs_rint, so that
+	`#undef HAVE_RINT' works.
+
+	* sysdep.h: Fix up prototypes for sys_read_1(), sys_write_1()
+
+1999-11-25  Andy Piper  <andy@xemacs.org>
+
+	* select-msw.c (Fmswindows_set_clipboard): selection fixes from
+	Mike Alexander.
+	(Fmswindows_delete_selection): ditto.
+
+	* redisplay.h (CLASS_REDISPLAY_FLAGS_CHANGEDP): add size_changed.
+	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.
+
+	* redisplay.c (redisplay_device): move size changed to macros in
+	redisplay.h
+	(redisplay_without_hooks): ditto.
+
+	* redisplay-output.c (redisplay_output_layout): rename to avoid
+	name hiding.
+
+	* process-nt.c (struct nt_process_data): mks toolkit fixes from
+	Mike Alexander.
+	(nt_create_process): ditto.
+	(nt_send_process): ditto.
+
+	* nt.c (init_environment): make sure mingw32 gets the cached
+	system info.
+
+	* gui.h: declare gui_add_item_keywords_to_plist.
+
+	* event-msw.c (mswindows_wnd_proc): Clipboard fixes from Mike
+	Alexander.
+
+	* console-msw.h: fix cygwin define/header 1.0 problems.
+	* glyphs-msw.c: ditto.
+	* ntplay.c: ditto.
+	* unexcw.c: ditto.
+	* s/cygwin32/h: ditto.
+
+1999-11-29  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.22 is released
+
+1999-11-28  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.21 is released.
+
+1999-11-26  Martin Buchholz  <martin@xemacs.org>
+
+	* callproc.c (Fcall_process_internal):
+	* config.h.in:
+	* esd.c:
+	* event-msw.c (ntpipe_slurp_reader):
+	* event-msw.c (ntpipe_shove_writer):
+	* event-msw.c (winsock_reader):
+	* event-msw.c (winsock_writer):
+	* event-stream.c (dribble_out_event):
+	* fileio.c:
+	* fileio.c (Fexpand_file_name):
+	* glyphs-x.c (write_lisp_string_to_temp_file):
+	* gpmevent.c (tty_get_foreign_selection):
+	* lisp.h: Update prototypes.
+	* lstream.c (Lstream_flush_out):
+	* lstream.c (Lstream_write_1):
+	* lstream.c (Lstream_was_blocked_p):
+	* lstream.c (Lstream_read_more):
+	* lstream.c (Lstream_read):
+	* lstream.c (Lstream_fputc):
+	* lstream.c (make_stdio_output_stream):
+	* lstream.c (stdio_flusher):
+	* lstream.c (stdio_closer):
+	* lstream.c (make_filedesc_output_stream):
+	* lstream.c (errno_would_block_p):
+	* lstream.c (filedesc_writer):
+	* lstream.c (make_lisp_string_input_stream):
+	* lstream.c (make_fixed_buffer_output_stream):
+	* lstream.c (fixed_buffer_reader):
+	* lstream.c (make_resizing_buffer_output_stream):
+	* lstream.c (make_dynarr_output_stream):
+	* lstream.c (make_lisp_buffer_output_stream):
+	* lstream.c (lisp_buffer_reader):
+	* lstream.h (lstream_implementation):
+	* md5.c (Fmd5):
+	* miscplay.h (reset_parsestate):
+	* process-nt.c (nt_send_process):
+	* process-unix.c (unix_send_process):
+	* sound.c:
+	* sysdep.c (sys_close):
+	* sysdep.c (sys_read_1):
+	* sysdep.c (sys_write_1):
+	* sysfile.h:
+	* file-coding.c (determine_real_coding_system):
+	* file-coding.c (Fdetect_coding_region):
+	* file-coding.c (struct decoding_stream):
+	* file-coding.c (decoding_reader):
+	* file-coding.c (Fdecode_coding_region):
+	* file-coding.c (struct encoding_stream):
+	* file-coding.c (encoding_reader):
+	* file-coding.c (Fencode_coding_region):
+	* file-coding.c (convert_to_external_format):
+	* file-coding.c (convert_from_external_format):
+	- Lstream functions mirror Unix98 read(),write().  Therefore use
+	  Unix98 types size_t and ssize_t.  
+	- Try to make Lstream* functions 64-bit clean.  Someday someone
+	  may actually want to read from a Lstream with more than 2**32 bytes.
+	- Add configure support for ssize_t.
+	- Update all callers of Lstream_read and Lstream_write to
+	  use the new types.
+	- Fix esd* initiated C++ compile errors.
+	- Remove comments referring to `fpurge' - we don't want to call it
+	  even if it's there.
+
+	* lisp.h
+	- Remove some lingering Lucid compiler support.
+
+	* lisp.h
+	- Add prototype for Fdelete_process.
+
+	* gpmevent.c (Freceive_gpm_event): Remove unused variables.
+
+1999-11-27  Martin Buchholz  <martin@xemacs.org>
+
+	* Makefile.in.in (depend): Only update `depend' if there were changes.
+
+1999-11-26  Martin Buchholz  <martin@xemacs.org>
+
+	* editfns.c (get_system_name): Remove.
+
+1999-11-26  Martin Buchholz  <martin@xemacs.org>
+
+	* device-x.c (x_init_device): 
+	- Replace magic number `17' with equivalent expn using sizeof.
+	- Replace strcmp with marginally more efficient memcmp.
+	- Avoid using C++ reserved word `class'.
+
+	* file-coding.c (determine_real_coding_system): 
+	- Look for both initial and final -*- cookies.
+	- Replace EQ (foo, Qnil) with NILP (foo)
+	- Make searching for cookies more efficient.
+	- Recognize only rfc 1521 characters in charset names.
+
+1999-11-22  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+	* input-method-xlib.c (IMDestroyCallback): #ifdef'd by
+	"THIS_IS_X11R6", because it shouldn't be evaluated unless X11R6.
+	* input-method-xlib.c (IMInstantiateCallback): Ditto.
+	* input-method-xlib.c (XIM_init_device): Revive XOpenIM function
+	call for X11R5 systems.
+	* input-method-xlib.c (XIM_delete_frame): Enabled XDestroyIC()
+	again because XIM doesn't concern with frame deletion itself.
+	The XIC will be cleared by XIM when XIM is closing (at XIM destroy
+	callback).
+
+1999-10-25  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+        * input-method-xlib.c: Added new lisp object Qxim_xlib.
+        New macro xim_warn(str), xim_warn1(fmt,str) and xim_info(str).
+        All the valid stderr_out were changed to those macros.
+        (IMDestroyCallback): Don't test the XIC if the frame is not X
+        frame.
+        (IMInstantiateCallback): Treat the client_data as "device" not
+        "frame" because the caller changed from frame to device.
+        Here initializes XIM and activates XICs for each frame which
+        doesn't have XIC.
+        (XIM_init_device): Register the XIM instantiation callback which
+        had been performed by XIM_init_frame() before.
+        (XIM_delete_frame): Added a test for the XIM before clearing XIC.
+        (XIM_init_frame): Placed an actual code for XIC activation which
+        was moved from IMInstantiateCallback.
+        (syms_of_input_method_xlib): New function which includes a symbol
+        Qxim_xlib that uses in emacs.c.
+
+        * emacs.c: Added a function entry "syms_of_input_method_xlib" for
+        input_method_xlib.
+
+        * symsinit.h: Added a declaration of "syms_of_input_method_xlib".
+
+1999-11-05  Robert Pluim  <rpluim@bigfoot.com>
+
+	* emacs.c (shut_down_emacs): Point users to PROBLEMS file
+
+1999-11-16  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* redisplay-output.c (compare_runes): Add comments about
+	results from profiling.
+
+	* redisplay.h (struct rune): Do not use bitfields for members.
+	(struct rune): Add various comments about further optimizations.
+	
+1999-11-19  Eric Darve  <darve@crocco.stanford.edu>
+
+	* abbrev.c (abbrev_oblookup): Check whether wordend <= wordstart
+	if Vabbrev_start_location is used too.
+
+1999-10-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* file-coding.c (detect_eol_type): Return CR when two
+	sequential CR are found.
+	(determine_real_coding_system): Check EOL type when coding:
+	cookie is found and EOL type is not specified.
+	Don't assume 8bit char as part of coding: cookie.
+
+1999-10-26  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* file-coding.c (determine_real_coding_system): Check if
+	'-*-' exists. End searching for coding: cookie at the end
+	of line. Check whether character before coding: is space,
+	tab or ';'.
+
+1999-11-07  William M. Perry  <wmperry@aventail.com>
+
+	* gpmevent.c: Completely rewrote GPM mouse support for linux
+	  console.  The TTY console and event stream are modified at run
+	  time, so this code can now be used as a module.
+	  (tty_get_foreign_selection): New function to allow pasting from
+	  other virtual consoles.
+	  (Fgpm_enable): New lisp-visible function to turn GPM on or off
+	  at run time.
+
+	* device-tty.c (tty_asynch_device_change): No longer need to
+	  notify GPM code of window/console height/width changes.
+
+	* console-tty.c (tty_init_console): Removed outdated GPM support
+	  that was part of the console/event code.
+
+	* event-Xt.c (emacs_Xt_select_console): Ditto
+
+	* event-Xt.c (emacs_Xt_unselect_console): Ditto
+
+	* event-unixoid.c (read_event_from_tty_or_stream_desc): Ditto
+
+	* frame-tty.c (console_type_create_frame_tty): Ditto
+
+1999-11-17  Martin Buchholz  <martin@xemacs.org>
+
+	* nt.c:
+	* sysdep.c:
+	* s/mingw32.h:
+	* s/windowsnt.h:
+	- Use Unix 98 types uid_t, gid_t, pid_t.
+	- Define them.
+
+1999-11-01  Olivier Galibert  <galibert@pobox.com>
+
+	* alloc.c (reinit_alloc_once_early): Move purify_flag init...
+	* emacs.c (main_1): ...here, to get the correct value even with
+ 	the portable dumper.
+
+1999-11-17  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp.h (BIT_VECTOR_LONG_STORAGE): Add extra parens.  It's a macro!
+
+	* tooltalk.c (tt_build_string): Remove extra parens.
+	* process.c (print_process): Remove extra parens.
+	* buffer.h (BI_BUF_PTR_BYTE_POS): 
+	(BUF_PTR_BYTE_POS): 
+	(BI_BUF_BYTE_ADDRESS): 
+	(BI_BUF_BYTE_ADDRESS_BEFORE): 
+	(valid_memind_p): 
+	(bytind_to_memind): 
+	(memind_to_bytind):
+	Remove extra parens.  Inline functions are not macros.
+
+	* editfns.c (Fuser_login_name): 
+	(user_login_name):
+	Use proper type uid_t.
+
+1999-11-15  Martin Buchholz  <martin@xemacs.org>
+
+	* syntax.c (complex_vars_of_syntax): Make more readable.
+	(define_standard_syntax): New function.
+
+	* syntax.c (forward-comment): Gradually make XEmacs 64-bit-clean.
+
+1999-11-14  Martin Buchholz  <martin@xemacs.org>
+
+	* mule-ccl.c (CCL_WRITE_STRING): Fix compiler warnings.
+
+1999-11-12  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* mule-charset.h (LEADING_BYTE_OFFICIAL_1, LEADING_BYTE_OFFICIAL_2):
+	New enum type to make sure no gap in the leading byte definition.
+
+1999-11-11  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* mule-charset.h (LEADING_BYTE_CYRILLIC_ISO_8859_5,
+	LEADING_BYTE_LATIN_ISO8859_9): Moved to 0x8B and 0x8C
+	to remove a hole in leading byte definition.
+
+1999-11-10  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* mule-charset.c (non_ascii_valid_charptr_p): Check if
+	private charset is defined.
+
+1999-11-09  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* mule-ccl.c (ccl_driver): Make sure generated sequences
+	are valid when doing `CCL_WRITE_STRING'.
+	(ccl-execute-on-string): Pass CCL_MODE_DECODING to ccl_driver.
+
+1999-11-10  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.20 is released
+
+1999-11-04  Martin Buchholz  <martin@xemacs.org>
+
+	* mule-ccl.c (ccl_driver): Warning suppression
+
+1999-11-01  SL Baur  <steve@miho.m17n.org>
+
+	* emacs.c (main_1): Guard call to reinit_vars_of_debug when not
+	building a debugged XEmacs.
+
+1999-10-28  Andreas Jaeger  <aj@suse.de>
+
+	* src/emacs.c (main_1): Don't set the malloc hooks if using
+	DOUG_LEA_MALLOC.
+
+1999-10-30  Olivier Galibert  <galibert@pobox.com>
+
+	* alloc.c (pdump_dump_rtables): Don't forget to dump the last
+ 	registered type.
+	(pdump): Ditto.
+
+1999-10-25  Olivier Galibert  <galibert@pobox.com>
+
+	* emacs.c (main_1): Call reinit_vars_of_scrollbar_x.
+
+	* symsinit.h: Declare reinit_vars_of_scrollbar_x.
+
+1999-10-25  Martin Buchholz  <martin@xemacs.org>
+
+	* redisplay.h (CLASS_RESET_CHANGED_FLAGS): 
+	(GLOBAL_RESET_CHANGED_FLAGS): 
+	(CLASS_REDISPLAY_FLAGS_CHANGEDP): 
+	(RESET_CHANGED_SET_FLAGS): 
+	Fix C++ compile errors/warnings.
+	These macros were just a tad too clever.
+
+	* process-unix.c (unix_open_network_stream):
+	* objects-x.c (allocate_nearest_color):
+	* mule-charset.c (vars_of_mule_charset): 
+	* fileio.c (Ffile_truename): 
+	* file-coding.c (vars_of_file_coding): 
+	Fix compile errors/warnings.
+
+	* alloc.c (xstrdup): Use fact that memcpy returns its first arg.
+	(allocate_lisp_storage): Simplify.
+
+1999-10-24  Olivier Galibert  <galibert@pobox.com>
+
+	* conslots.h: Add defines with first and last slot names.
+	* bufslots.h: Add defines with first and last slot names.
+
+	* buffer.c (common_init_complex_vars_of_buffer): Renamed from
+ 	reinit_complex_vars_of_buffer
+	(reinit_complex_vars_of_buffer): Reset the slots to the dumped
+ 	value.
+	(complex_vars_of_buffer): Dump the slots values.
+
+	* console.c (common_init_complex_vars_of_console): Renamed from
+ 	reinit_complex_vars_of_console
+	(reinit_complex_vars_of_console): Reset the slots to the dumped
+ 	value.
+	(complex_vars_of_console): Dump the slots values.
+
+	* alloc.c: Rename reloc_table to pdump_reloc_table, rt_list to
+ 	pdump_rt_list and move them at the beginning of the file.
+	(gc_sweep): Unmark pdumped objects after the sweep phase.
+	(pdump_dump_rtables): Change a bare 256 to
+ 	last_lrecord_type_index_assigned.  Add a separator between the
+ 	adresses or lrecords and the ones of C structs in the dump file.
+	(pdump_load): Cope with the new separator and the renamings.  Stop
+ 	looking for the hash tables list after it has been found (duh!).
+
+1999-10-24  Robert Bihlmeyer <robbe@orcus.priv.at>
+
+	* sound.c: support HAVE_ESD_SOUND
+
+	* miscplay.c: 
+	* miscplay.h: 
+	* linuxplay.c: Move large part of linuxplay to generalized file
+	miscplay. Make it platform independent.
+
+	* esd.c: New file
+
+1999-10-24  Adrian Aichner <adrian@xemacs.org>
+
+	* lisp.h (Dynarr_declare): Fix boo-boo.
+
+1999-10-24  Olivier Galibert  <galibert@pobox.com>
+
+	* process-unix.c (allocate_pty): Fix HAVE_GETPT.
+	* process.h: Ditto.
+
+1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* redisplay.c (start_with_line_at_pixpos): Remove assert(cur_elt
+	>=0). Handle the cur_elt == 0 case.
+
+1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* unexelf.c: Merge Martin's c++ fixes back in 
+
+1999-10-20  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+        * unexelf.c (unexec): Only copy the global offset
+        table from memory on sgi machines.
+
+1999-08-13     Alexandre Oliva <oliva@dcc.unicamp.br>, Vin Shelton <acs@xemacs.org>
+
+        * unexelf.c: Enable GNU/Linux/alpha to build with gcc 2.95 by
+        adding support for an sbss section.  Get IRIX 5.2 to build using
+        unexelf.c.
+
+        * m/iris4d.h: Use unexelf.o for unexec.
+
+        * m/iris5d.h: Use unexelf.o for unexec.
+
+1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* unexelf.c: Revert to 21.1 version
+
+1999-08-28  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* window.c (Fwindow_truncated_p): New function.
+
+1999-08-25  Jonathan Marten <jonathan.marten@uk.sun.com>
+
+	* window.c (window_truncation_on): Always return 0 for minibuffer
+ 	windows, to enable auto scrolling.
+
+1999-10-24 Neal Becker <nbecker@fred.net>
+	* process.h: Unix98 PTY support
+
+1999-10-17  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* fileio.c (Ffile_truename): Do proper mule decoding on
+	the argument to xrealpath()
+
+1999-08-19  Stephen Tse  <stephent@sfu.ca>
+
+	* process-unix.c (unix_open_network_stream): Add udp network
+ 	support; rename variable Qtcpip to Qtcp, parameter family to
+ 	protocol for consistency with Qudp.
+
+	* process-nt.c (nt_open_network_stream): Rename variable Qtcpip to
+ 	Qtcp, parameter family to protocol for consistency with Qudp.
+
+	* process.c (global_variables): Add a new variable Qudp for udp
+ 	network support; rename variable Qtcpip to Qtcp for consistency
+ 	with Qudp.
+	(Fopen_network_stream_internal): Rename parameter FAMILY to
+ 	PROTOCOL for consistency; fix a minor typo and add an explanation
+ 	in docstring for udp programming.
+	(Fopen_multicast_group_internal): Fix a minor typo in docstring.
+	(syms_of_process): Add a new variable Qudp for udp network
+ 	support; rename variable Qtcpip to Qtcp for consistency with Qudp.
+
+	* process.h (extern_variables): Add a new variable Qudp for udp
+ 	network support; rename variable Qtcpip to Qtcp for consistency
+ 	with Qudp.
+
+	* procimpl.h: Add a new variable Qudp for udp network support;
+ 	rename variable Qtcpip to Qtcp for consistency with Qudp.
+	(struct process_methods): Rename parameter family to protocol.
+
+
+1999-10-24  Olivier Galibert  <galibert@pobox.com>
+
+	* alloc.c (pdump_make_hash): Divide pointers by 8 for a better hash.
+
+1999-10-23  Olivier Galibert  <galibert@pobox.com>
+
+	* lrecord.h (struct lrecord_header): Removed dumped flags.
+
+	* dynarr.c: Use DUMPEDP instead of dumped flag.
+
+	* lisp.h (DUMPEDP): Added.  Removed dumped flag from dynarr.
+
+	* alloc.c: Removed hash_next linked list pointer.
+	
+	* *.c *.h: Removed markobj and mark_object parameters, removed GC_
+ 	and XGC macros.
+
+1999-10-14  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-x.c (x_output_shadows): fix dodgy maths for border
+ 	calculations.
+
+	* gutter.c (output_gutter): be more accurate about the area to be
+ 	cleared since X seems to manage to do the clear after drawing the
+ 	border.
+
+	* redisplay.h (RESET_CHANGED_FLAGS): new macro for setting
+ 	redisplay flags as a group.
+	(RESET_CHANGED_SET_FLAGS): ditto.
+	(CLASS_RESET_CHANGED_FLAGS): ditto.
+	(GLOBAL_RESET_CHANGED_FLAGS): ditto.
+	(REDISPLAY_FLAGS_CHANGEDP): new macro for testing redisplay flags
+ 	as a group.
+	(CLASS_REDISPLAY_FLAGS_CHANGEDP): ditto.
+	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.
+
+	* redisplay.c (redisplay_frame): use CLASS_RESET_CHANGED_FLAGS
+ 	instead of setting flags individually.
+	(redisplay_device): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
+	(redisplay_device): ditto.
+	(redisplay_device): ditto CLASS_RESET_CHANGED_FLAGS.
+	(redisplay_without_hooks): ditto GLOBAL_REDISPLAY_FLAGS_CHANGEDP.
+	(redisplay_without_hooks): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
+	(redisplay_without_hooks): ditto.
+	(redisplay_without_hooks): ditto GLOBAL_RESET_CHANGED_FLAGS.
+
+	* redisplay-x.c (x_output_string): unmap subwindows in the area.
+	(x_output_blank): ditto.
+
+	* redisplay-output.c (redisplay_output_display_block): don't unmap
+ 	subwindows in case layout optimization can avoid it.
+	(redisplay_output_subwindow): unmap subwindows in the area.
+	(redisplay_output_layout): optimize the output of layouts - only
+ 	output glyphs that have changed if nothing else of redisplay
+ 	significance has occurred.
+	(redisplay_output_pixmap): change args to
+ 	redisplay_clear_clipped_region.
+	(redisplay_clear_clipped_region): allow the clipped region to be
+ 	cleared of all subwindows except the one passed in.
+
+	* redisplay-msw.c (mswindows_output_blank): unmap subwindows in
+ 	the area.
+	(mswindows_output_cursor): ditto.
+	(mswindows_output_string): ditto.
+
+	* gutter.c (calculate_gutter_size): if the window buffer is nil
+ 	then don't continue.
+	(update_frame_gutters): be more lenient about when we actually
+ 	update the gutter. Layout optimization makes this
+ 	non-costly. Cache redisplay flags that we want to temporarily
+ 	ignore.
+
+	* glyphs.c (Fglyph_animated_timeout_handler): handle image
+ 	specific timeouts rather than iterating over the instance cache.
+	(glyph_animated_timeout_mapper): deleted.
+	(add_glyph_animated_timeout): use a weak list to hold onto the
+ 	image so that it can be GC'ed.
+	(disable_glyph_animated_timeout): disable a specific timeout.
+	(vars_of_glyphs): disable-animated-pixmaps is a new boolean for
+ 	controlling whether pixmaps are animated or not.
+
+	* glyphs-msw.c (mswindows_finalize_image_instance): make sure the
+	image timeout gets disabled when the image gets freed.
+
+	* glyphs-eimage.c (gif_instantiate): remove meaningless
+ 	comment. Cope with timeouts specified in the gif extension block.
+
+	* event-msw.c (vars_of_event_mswindows): new variable
+ 	mswindows-meta-activates-menu.
+	(mswindows_wnd_proc): only goto defproc with VK_MENU if the user
+ 	wants it.
+
+	* glyphs-x.c (x_finalize_image_instance): delete mask first so
+ 	that we can compare with image.
+
+1999-10-14  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c (mswindows_key_to_emacs_keysym):
+	Recognise keypad keys as different from normal keys.
+
+1999-10-14  Didier Verna  <didier@xemacs.org>
+
+	* glyphs-x.c (x_finalize_image_instance): avoid freeing null pixmaps.
+
+1999-10-10  Olivier Galibert  <galibert@pobox.com>
+
+	* symbols.c (init_symbols_once_early): dump Vquit_flag.
+
+	* symsinit.h: Updated.
+
+	* ntproc.c (vars_of_ntproc): Use defsymbol.
+
+	* emacs.c (main_1): Updated reinit calls.
+
+	* lisp.h: Removed Fpurecopy and pure_put declarations.
+	* fns.c: Removed pure_put.
+
+	* eval.c (Fdefvar): pure_put -> Fput
+	(Fdefconst): Ditto.
+	* frame-x.c (init_x_prop_symbols): Ditto.
+	* symbols.c (deferror): Ditto.
+
+	* alloc.c (Fmake_byte_code): Remove Fpurecopy call.
+	* buffer.c (vars_of_buffer): Ditto.
+	* bytecode.c (Ffetch_bytecode): Ditto.
+	(optimize_compiled_function): Ditto.
+	* emacs.c (vars_of_emacs): Ditto.
+	* emodules.c (vars_of_module): Ditto.
+	* eval.c (define_function): Ditto.
+	(Fautoload): Ditto.
+	* frame.c (vars_of_frame): Ditto.
+	* intl.c (Fset_domain): Ditto.
+	* lread.c (load_force_doc_string_unwind): Ditto.
+	* menubar.c (vars_of_menubar): Ditto.
+	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.
+
+	* debug.c (reinit_vars_of_debug): Extracted.
+	* device-x.c (reinit_vars_of_device_x): Ditto.
+	* emodules.c (reinit_vars_of_module): Ditto.
+	* font-lock.c (reinit_vars_of_font_lock): Ditto.
+	* glyphs-widget.c (reinit_vars_of_glyphs_widget): Ditto.
+	* glyphs.c (reinit_vars_of_glyphs): Ditto.
+	* gui-x.c (reinit_vars_of_gui_x): Ditto.
+	* insdel.c (reinit_vars_of_insdel): Ditto.
+	* menubar-x.c (reinit_vars_of_menubar_x): Ditto.
+	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.
+	* mule-wnnfns.c (reinit_vars_of_mule_wnn): Ditto.
+	* print.c (reinit_vars_of_print): Ditto.
+	* redisplay.c (reinit_vars_of_redisplay): Ditto.
+	* select-x.c (reinit_vars_of_xselect): Ditto.
+	* undo.c (reinit_vars_of_undo): Ditto.
+
+1999-10-10  Olivier Galibert  <galibert@pobox.com>
+
+	* symsinit.h: Updated declarations, see other ChangeLog entries.
+
+	* redisplay.c (init_redisplay): Ensure proper reinitialisation.
+
+	* lrecord.h (XD_DYNARR_DESC): Introduce XD_INT_RESET and use it.
+
+	* glyphs.c: Add the ii_keyword_entry and related descriptions.
+  	Fix the image_instantiator_methods one.
+
+	* file-coding.c: Plonk all data that needs to be dumped in a
+ 	dynamically allocated structure.
+
+	* extents.c (reinit_vars_of_extents): Extracted from
+ 	vars_of_extents.
+
+	* event-stream.c (vars_of_event_stream): Don't staticpro when
+ 	pdump_wire is enough.
+
+	* event-msw.c (reinit_vars_of_event_mswindows): Extracted from
+ 	vars_of_event_mswindows.
+
+	* event-Xt.c (reinit_vars_of_event_Xt): Extracted from
+ 	vars_of_event_Xt.
+
+	* eval.c (vars_of_eval): Don't staticpro when pdump_wire is enough.
+
+	* emacs.c (main_1): Added some reinit calls.
+
+	* device-x.c (reinit_console_type_create_device_x): Extracted from
+ 	console_type_create_device_x.
+
+	* console.h: Declare the console_type_entry_dynarr description.
+
+	* console.c: Unstatic the console_type_entry_dynarr description.
+
+	* alloc.c: Removed some dubious comments.  Handle XD_INT_RESET.
+
+1999-10-07  Olivier Galibert  <galibert@pobox.com>
+
+	* symsinit.h: Updated declarations, see other ChangeLog entries.
+
+	* minibuf.c (reinit_complex_vars_of_minibuf): Extracted from
+ 	complex_vars_of_minibuf.
+
+	* lrecord.h: Removed XD_PARENT_INDIRECT (unused and
+ 	unimplemented), added XD_LO_LINK.
+
+	* lisp.h (pdump_wire_list): Add declaration.
+
+	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT): Fix bug found by Andy.
+	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Fix stupid bug.
+	(REINITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Remove, useless once the
+ 	stupid bug fixed.
+
+	* glyphs.c (reinit_image_instantiator_format_create): Remove.
+
+	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
+ 	Remove.
+
+	* glyphs-widget.c
+ 	(reinit_image_instantiator_format_create_glyphs_widget): Remove.
+
+	* glyphs-msw.c
+ 	(reinit_image_instantiator_format_create_glyphs_mswindows):
+ 	Remove.
+
+	* glyphs-eimage.c
+ 	(reinit_image_instantiator_format_create_glyphs_eimage): Remove.
+
+	* frame.c (Fmake_frame): Don't reset the face cache when using the
+ 	stream device.
+
+	* file-coding.c: Dumped the_codesys_prop_dynarr and added all
+ 	relevant descriptions.
+
+	* events.c (reinit_vars_of_events): Extracted from vars_of_events.
+
+	* eval.c: The subr is _not_ a lcrecord.
+
+	* emacs.c (main_1): Call vars_of_specifier early before any
+ 	specifier creation (e.g in vars_of_glyphs, at least).  Remove the
+ 	useless reinit_image_instantiator_format*.  Add
+ 	reinit_vars_of_events and reinit_complex_vars_of_minibuf.  Add
+ 	calls to lstream_type_create* and process_type_create*.
+
+	* elhash.c: Dump Vall_weak_hash_tables correctly.
+
+	* data.c: Dump Vall_weak_lists correctly.
+
+	* console.c: Fix description.
+
+	* console-stream.c (init_console_stream): Do initializations
+ 	correctly in the pdump case.
+
+	* chartab.c: Fix description.  Dump Vall_syntax_tables correctly.
+	(Fcopy_char_table): Link into Vall_syntax_tables.
+
+	* alloc.c (pdump_wire_list): Added.
+	(Fgarbage_collect): Fix loop in stats couting missing the last
+ 	lrecord type.
+	(pdump_register_sub): Added XD_LO_LINK.
+	(pdump_dump_data): Ditto.  Fixed XD_LO_RESET_NIL forgttting the
+ 	counter.
+	(pdump_reloc_one): Ditto.
+	(pdump_scan_by_alignement): Use last_lrecord_type_index_assigned
+ 	instead of 256.
+	(pdump_dump_wired): Added lists.
+	(pdump): Use last_lrecord_type_index_assigned instead of 256.
+  	Dump last_lrecord_type_index_assigned value.  Fix minor bugs.
+
+1999-10-07  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (mswindows_finalize_image_instance): zero out
+ 	bitmap slices.
+
+	* glyphs-x.c (x_finalize_image_instance): fix FMW problem.
+
+1999-10-06  Andy Piper  <andy@xemacs.org>
+
+	* elhash.c (resize_hash_table): Correct reference to lrecord_header.
+
+1999-10-06  Damon Lipparelli  <lipp@primus.com>
+
+	* elhash.h: forward declare Lisp_Hash_Table.
+
+1999-10-06  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (Fset_image_instance_property): mark glyphs as dirty
+ 	after setting an image instance property.
+
+1999-10-05  Andy Piper  <andy@xemacs.org>
+
+	* gutter.c (update_frame_gutters): output gutters if
+ 	windows_changed is set. This is the only way of catching changes
+ 	in selected window which obviously can affect the specifiers.
+
+	* redisplay.c: new state flags, subwindows_state_changed and
+ 	subwindows_state_changed set.
+	(redisplay_window): use them.
+	(redisplay_device): ditto.
+	(redisplay_without_hooks): ditto.
+	(redisplay_frame): ditto. Reset subwindow cachels if
+ 	subwindows_changed is set.
+	(redisplay_window): call mark_glyph_cachels_as_clean after
+ 	redisplaying.
+
+	* redisplay-x.c (x_output_x_pixmap): select correct
+ 	pixmap image for display depending on the currently selected
+ 	slice.
+
+	* redisplay-output.c (compare_runes): check dirtiness when
+ 	checking RUNE_DGLYPH runes.
+	(compare_display_blocks): relax invalidation of display blocks
+ 	since we can now detect whether individual glyphs have changed or
+ 	not.
+
+	* redisplay-msw.c (mswindows_output_dibitmap): select correct
+ 	bitmap image for display depending on the currently selected
+ 	slice.
+
+	* glyphs.h (struct Lisp_Image_Instance): add a dirty flag.
+	(IMAGE_INSTANCE_DIRTYP): new macro.
+	(XIMAGE_INSTANCE_DIRTYP): ditto.
+	(MARK_IMAGE_INSTANCE_CHANGED): ditto.
+	(GLYPH_DIRTYP): ditto.
+	(XGLYPH_DIRTYP): ditto.
+	(MARK_GLYPH_CHANGED): ditto.
+	(GLYPH_CACHEL_DIRTYP): ditto.
+	(struct glyph_cachel): add a dirty flag.
+
+	* glyphs.c (update_frame_subwindows): Don't update on
+ 	glyphs_changed.
+	(glyph_animated_timeout_mapper): new function. Map over the
+ 	instance cache lookinng for animated images to update.
+	(Fglyph_animated_timeout_handler): new function. Lisp callback for
+ 	handling animated image timeout events.
+	(disable_glyph_animated_timeout): new function. Add the animated
+ 	image timeout.
+	(disable_glyph_animated_timeout): new function. Remove the
+ 	animated image timeout.
+	(syms_of_glyphs): initialize Qglyph_animated_timeout_handler and
+ 	friends.
+	(vars_of_glyphs): initialize Vglyph_animated_ticker.
+	(image_instance_equal): add the currently displayed slice.
+	(image_instance_hash): ditto.
+	(allocate_glyph): initialize dirty flag.
+	(glyph_width): rename glyph -> glyph_or_image.
+	(glyph_height_internal): ditto.
+	(glyph_dirty_p): new function. Determine whether the image
+ 	instance in the domain and/or glyph is dirty.
+	(set_glyph_dirty_p): set the dirtiness.
+	(update_glyph_cachel_data): take dirtiness into account. Pass the
+ 	image instance we are interested in to glyph_width and friends.
+	(get_glyph_cachel_index): make non-static. Always call
+ 	update_glyph_cachel_data.
+	(mark_glyph_cachels_as_not_updated): meaningless formatting
+ 	change.
+	(mark_glyph_cachels_as_clean): new function. Clean dirtiness from
+ 	glyph cachels.
+
+	* glyphs-x.h (struct x_image_instance_data): change
+	pixmap to a list of pixmaps.
+	(IMAGE_INSTANCE_X_PIXMAP_SLICE): new macro.
+	(IMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.
+	(XIMAGE_INSTANCE_X_PIXMAP_SLICE): ditto.
+	(XIMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.
+
+	* glyphs-x.c (x_finalize_image_instance): make sure multi pixmap
+ 	images get deleted properly.
+	(init_image_instance_from_x_image): add slices paramater and use
+ 	it to initialize x_image_instance_data correctly.
+	(image_instance_add_x_image): new function. Add new pixmaps to our
+ 	set of instantiated pixmaps for an image. Used by animated images.
+	(x_init_image_instance_from_eimage): add a slices
+ 	parameter. Instantiate all images from the eimage.
+	(x_xpm_instantiate): update use of
+ 	init_image_instance_from_x_image.
+	(init_image_instance_from_xbm_inline): ditto.
+	(x_initialize_pixmap_image_instance): add slices paramater and use
+ 	it to allocate x_image_instance_data correctly.
+
+	* glyphs-msw.h (struct mswindows_image_instance_data): change
+ 	bitmap to a list of bitmaps.
+	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): new macro.
+	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.
+	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): ditto.
+	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.
+
+	* glyphs-msw.c (init_image_instance_from_dibitmap): add slices
+ 	paramater and use it to initialize mswindows_image_instance_data
+ 	correctly.
+	(image_instance_add_dibitmap): new function. Add new bitmaps to
+ 	our set of instantiated bitmaps for an image. Used by animated
+ 	images.
+	(mswindows_init_image_instance_from_eimage): add a slices
+ 	parameter. Instantiate all images from the eimage.
+	(mswindows_xpm_instantiate): update use of
+ 	init_image_instance_from_dibitmap.
+	(bmp_instantiate): ditto.
+	(init_image_instance_from_xbm_inline): ditto.
+	(mswindows_finalize_image_instance): make sure all the bitmap
+ 	slices get deleted.
+	(mswindows_initialize_dibitmap_image_instance): add slices
+ 	paramater and use it to allocate mswindows_image_instance_data
+ 	correctly.
+
+	* glyphs-eimage.c (jpeg_instantiate): give extra paramter to
+ 	init_image_instance_from_eimage.
+	(png_instantiate): ditto.
+	(tiff_instantiate): ditto.
+	(gif_instantiate): allocate bitmaps for all gif slices not just
+ 	the first one.
+
+	* device.h (struct device): add subwindows_state_changed flag.
+	(MARK_DEVICE_SUBWINDOWS_STATE_CHANGED): new macro.
+	(MARK_DEVICE_FRAMES_GLYPHS_CHANGED): ditto.
+
+	* console.h (struct console_methods): add a slice parameter to
+ 	init_image_instance_from_eimage_method.
+
+	* redisplay.c (create_string_text_block): Allow buffer to be nil
+ 	without crashing.
+
+1999-09-24  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c: only include gui-x.h if we are building with
+ 	widgets.
+
+	* gui-x.c (vars_of_gui_x): only set popup_up_p if we have popups.
+
+1999-09-28  Lee Kindness <lkindness@csl.co.uk>
+
+	* objects-x.c (allocate_nearest_color): will return 0 (failure)
+ 	when the colormap is full and the color it has computed to be the
+ 	'nearest' has been allocated read/write.
+
+1999-10-02  Olivier Galibert  <galibert@pobox.com>
+
+	* search.c (reinit_vars_of_search):   Reinit   the  search   cache
+ 	correctly.
+
+	* elhash.h:     Make    the    description    visible.     Declare
+ 	resize_hash_table.
+
+	* elhash.c  (resize_hash_table): Extracted from enlarge_hash_table
+ 	to generalize the hash table reorganization.
+	(reorganize_hash_table): Added.
+	(enlarge_hash_table): Uses resize_has_table.
+
+	* casetab.c (complex_vars_of_casetab):  staticpro  the mule mirror
+ 	tables.
+
+	* alloc.c:   Add  correct  management  of   blocks of  structures.
+  	Reorganize hash tables at reload since  the hash values can change
+ 	with the pointers.
+
+1999-10-01  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp.h: Add pdump_wire declaration
+
+	* elhash.c (vars_of_elhash): Wire Vall_weak_hash_tables.
+	* symbols.c (init_symbols_once_early): Wire Qnil and Qunbound.
+
+	* alloc.c (pdump_wire): Added..
+	(pdump_load): Support it.
+	(pdump): Support it
+
+	* glyphs-msw.c
+ 	(reinit_image_instantiator_format_create_glyphs_mswindows): Fix
+ 	macro calls.
+
+1999-09-28  Olivier Galibert  <galibert@pobox.com>
+
+	* symsinit.h: Added lots of prototypes.
+
+	* symeval.h: Added defsymbol_nodump declaration.
+
+	* symbols.c (find_symbol_value): Lame attempt at making the
+ 	startup go further.
+	(defsymbol_nodump): Added.
+
+	* mule-charset.c: Collapsed global lisp objects arrays in one
+ 	dumpable structure.
+
+	* lrecord.h: Added some flags.
+
+	* lisp.h: Added dumped flag to dynarrs.  Added dumpstruct
+ 	declaration.
+
+	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): Don't
+ 	staticpro dynamic variables.
+
+	* glyphs.c (reinit_specifier_type_create_image): Added.
+	(image_instantiator_format_create): Dump image instantiator format
+ 	dynarr.
+	(reinit_image_instantiator_format_create): Added.
+
+	* emacs.c (main_1): Added reinits calls.
+
+	* dynarr.c: Protect dumped dynarrays from going berzek in free or
+ 	realloc.
+
+	* specifier.h (INITIALIZE_SPECIFIER_TYPE): Don't staticpro dynamic
+ 	variables.
+	* specifier.c (specifier_type_create): Dump the specifier type
+ 	dynarr.
+	(reinit_specifier_type_create): Added.
+	* console.h (INITIALIZE_CONSOLE_TYPE): Don't staticpro dynamic
+ 	variables.
+	* console.c (console_type_create): Dump the console type dynarr.
+	(reinit_vars_of_console): Extracted from vars_of_console.
+	(reinit_complex_vars_of_console): Extracted from
+ 	complex_vars_of_console
+	* window.c (reinit_vars_of_window): Extracted from vars_of_window.
+	* toolbar.c (reinit_specifier_type_create_toolbar): Added.
+	* search.c (reinit_vars_of_search): Extracted from vars_of_search.
+	* objects.c (reinit_specifier_type_create_objects): Added.
+	(reinit_vars_of_objects): Extracted from vars_of_objects.
+	* lstream.c (reinit_vars_of_lstream): Extracted from
+ 	vars_of_lstream.
+	* lread.c (reinit_vars_of_lread): Extracted from vars_of_lread.
+	* gutter.c (reinit_specifier_type_create_gutter): Added.
+	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
+ 	Added.
+	* glyphs-widget.c
+ 	(reinit_image_instantiator_format_create_glyphs_widget): Added
+	* glyphs-msw.c
+ 	(reinit_image_instantiator_format_create_glyphs_mswindows): Added.
+	* glyphs-eimage.c
+ 	(reinit_image_instantiator_format_create_glyphs_eimage): Added.
+	* event-stream.c (reinit_vars_of_event_stream): Extracted from
+ 	vars_of_event_stream
+	* eval.c (reinit_vars_of_eval): Extracted from vars_of_eval.
+	* device.c (reinit_vars_of_device): Extracted from vars_of_device.
+	* console-x.c (reinit_console_type_create_x): Added.
+	* console-tty.c (reinit_console_type_create_tty): Added
+	* console-stream.c (reinit_console_type_create_stream): Added.
+	(init_console_stream): If PDUMP, always reinitialise basic
+ 	devices.
+	* console-msw.c (reinit_console_type_create_mswindows): Added.
+	* buffer.c (reinit_vars_of_buffer): Extracted from
+ 	init_vars_of_buffer.
+	(reinit_complex_vars_of_buffer): Extracted from
+ 	complex_vars_of_buffer
+
+	* alloc.c: Further with the portable dumping, the revenge.
+	(dumpstruct): Added.
+	(reinit_alloc_once_early): Extracted from init_alloc_once_early.
+
+	* specifier.c (sizeof_specifier): Correct size computation.
+	(make_specifier_internal): Ditto.
+
+1999-09-27  Olivier Galibert  <galibert@pobox.com>
+
+	* alloc.c: Further with the portable dumping.
+
+1999-09-27  Martin Buchholz  <martin@xemacs.org>
+
+	* glyphs-x.c (update_widget_face): Remove bogus cast
+
+	* data.c (sign_extent_lisp):
+	* data.c (check_int_range):
+	* data.c (Faref):
+	* data.c (Faset):
+	* data.c (number_char_or_marker_to_int):
+	* data.c (number_char_or_marker_to_double):
+	* data.c (Frem):
+	* data.c (Fmod):
+	* extents.c (print_extent_1):
+	* fns.c (print_bit_vector):
+	* fns.c (Flength):
+	* fns.c (Fsafe_length):
+	* fns.c (copy_list):
+	* fns.c (Fsubseq):
+	* fns.c (Felt):
+	* fns.c (Flast):
+	* fns.c (Fnbutlast):
+	* insdel.h:
+	* marker.c (print_marker):
+	* syntax.h:
+	* bytecode.c (bytecode_arithcompare):
+	* bytecode.c (bytecode_arithop):
+	* lisp.h:
+	* lisp.h (EXTERNAL_LIST_LOOP_DELETE_IF):
+	* lisp.h (TRUE_LIST_P):
+	* lisp.h (CHECK_TRUE_LIST):
+	* lisp.h (bit_vector_length):
+	* lisp.h (GCPRO4): Make consistent.
+	* lisp.h (NGCPRO4): Make consistent.
+	* lisp.h (NNGCPRO4): Make consistent.
+	* alloc.c (Fmake_list):
+	* alloc.c (Fmake_string):
+	Use proper 64-bit types, e.g. EMACS_INT or size_t instead of int.
+	This should make all arithmetic 64-bit clean.
+
+	Use %ld with (long) casts in print statements of types with sizes
+	possibly larger than int.
+
+	Following functions had mismatched prototypes!!:
+	do_marker_adjustment(), fixup_internal_substring(), scan_lists(),
+	char_quoted(), make_string_from_buffer(),
+	make_string_from_buffer_no_extents()
+
+	The types of Bufpos, Bytind, Memind, Bytecount, Charcount,
+	Extcount are all now EMACS_INT.  I hope to see the day when I can
+	create a buffer with more than INT_MAX characters, without having
+	XEmacs slow down to a crawl.  I also hope to be able to create a
+	list with more than INT_MAX cons cells.
+
+	* redisplay.c (decode_mode_spec): 
+	The %p and %P specs in the mode line were not correct for buffers
+	larger than MAX_INT/100!  The %p spec was off by .5% even for
+	small buffers!
+
+1999-09-27  Martin Buchholz  <martin@xemacs.org>
+
+	* cmdloop.c (num_input_keys):
+	* print.c (debug_temp):
+	* emacs.c (Vinfo_directory):
+	Delete unused variables 
+
+	* console-x.h (x_interline_space):  Mark as unimplemented.
+	* redisplay-x.c (x_interline_space):  Mark as unimplemented.
+
+	* event-Xt.c (pending_timeouts):
+	* linuxplay.c (linuxplay_sndbuf):
+	* profile.c (QS*):
+	* search.c (searchbufs):
+	* specifier.c (specifier_type_entry_dynarr):
+	* undo.c (pending_boundary):
+	* event-stream.c (the_low_level_timeout_blocktype):
+	* extents.c (gap_array_marker_freelist):
+	* extents.c (extent_list_marker_freelist):
+	* print.c (being_printed):
+	* print.c (alternate_do_pointer):
+	* alloc.c (first_string_chars_block):
+	* alloc.c (current_string_chars_block):
+	* emacs.c (initial_argv):
+	* emacs.c (initial_argc):
+	* eval.c (lisp_eval_depth):
+	* free-hook.c (pointer_table):
+	* free-hook.c (free_queue):
+	* free-hook.c (current_free):
+	* free-hook.c (strict_free_check):
+	* redisplay.c (formatted_string_emchar_dynarr):
+	* redisplay.c (formatted_string_display_line):
+	* redisplay.c (formatted_string_extent_dynarr):
+	* redisplay.c (formatted_string_extent_start_dynarr):
+	* redisplay.c (formatted_string_extent_end_dynarr):
+	* redisplay.c (updating_line_start_cache):
+	* redisplay.c (last_display_warning_tick):
+	* redisplay.c (display_warning_tick):
+	* redisplay.c (internal_cache):
+	* window.c (Vwindow_configuration_free_list):
+	Make static.
+
+	* redisplay.c (Vinitial_window_system):  Make CONST.
+
+1999-09-24  Martin Buchholz  <martin@xemacs.org>
+
+	* redisplay-tty.c (term_get_fkeys_1): Minor aesthetic improvements.
+
+	* doprnt.c (get_doprnt_args): Use int, not short, with va_arg.
+
+1999-09-24  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (output_display_line): only clear the borders
+ 	if we are not displaying the gutter.
+
+1999-09-24  Jan Vroonhof <vroonhof@math.ethz.ch>
+
+	* frame-x.c (x_any_window_to_frame): Let Xt find the widget and
+ 	then use x_any_widget_or_parent_to_frame().
+	(x_find_frame_for_window): remove special cases.
+
+1999-09-24  Andy Piper  <andy@xemacs.org>
+
+	* scrollbar-x.c (x_window_is_scrollbar): deleted.
+	* scrollbar-x.h: ditto.
+	
+1999-09-23  Martin Buchholz  <martin@xemacs.org>
+
+	* alloc.c (this_marks_a_marked_record): Remove.
+
+	* buffer.c (mark_buffer):
+	* buffer.c (nuke_all_buffer_slots):
+	* console.c (mark_console):
+	* console.c (nuke_all_console_slots):
+	* frame.c (mark_frame):
+	* frame.c (nuke_all_frame_slots):
+	Treat MARKED_SLOT() macros consistently.
+
+	* device.h (error_check_device_type):
+	* faces.c (face_getprop):
+	* fileio.c (DRIVE_LETTER):
+	* filelock.c (lock_file_1):
+	* frame-x.c (x_create_widgets):
+	* frame.h (error_check_frame_type):
+	* keymap.c (print_keymap):
+	* keymap.c (Fkey_description):
+	* keymap.c (where_is_recursive_mapper):
+	* mule-charset.h (CHARSET_LEADING_BYTE):
+	* objects-msw.c (mswindows_color_instance_hash):
+	* objects.c (color_instance_equal):
+	* objects.h (struct color_specifier):
+	* objects.h (struct font_specifier):
+	* objects.h (struct face_boolean_specifier):
+	* opaque.h (get_opaque_ptr):
+	* opaque.h (set_opaque_ptr):
+	* process-unix.c (set_socket_nonblocking_maybe):
+	* specifier.h (SPECIFIER_TYPE_P):
+	* symbols.c (store_symval_forwarding):
+	* syssignal.h (EMACS_KILLPG):
+	* terminfo.c (emacs_tparam):
+	* glyphs.c (glyph_putprop):
+	* glyphs.c (glyph_remprop):
+	* glyphs.c (Fimage_instance_subwindow_id):
+	* window.c (mark_window):
+	* window.c (mark_window_config):
+	* window.c (Fset_window_configuration):
+	* window.c (save_window_save):
+	* eval.c (Fuser_variable_p):
+	* eval.c (Fcommand_execute):
+	* eval.c (Feval):
+	* eval.c (Ffuncall):
+	* lisp.h (XPNTR):
+	* lisp.h (INT_OR_FLOATP):
+	* lisp.h (GC_INT_OR_FLOATP):
+	* lisp.h (XFLOATINT):
+	* lisp.h (IS_ANY_SEP):
+	* mule-ccl.c (Fccl_execute):
+	* mule-ccl.c (Fccl_execute_on_string):
+	* redisplay-x.c (x_output_string):
+	Remove redundant extra parentheses.
+
+1999-09-22  Martin Buchholz  <martin@xemacs.org>
+
+	* chartab.c (word_boundary_p): Add prototype for warning avoidance.
+	* eval.c (PRIMITIVE_FUNCALL): ANSIfy
+	* free-hook.c (fun_ptr): ANSIfy
+	* getloadavg.c: Remove declaration for errno.
+	* gui.c (allocate_gui_item): ANSIfy
+	* gui.h (allocate_gui_item): ANSIfy
+	* mule-ccl.c (resolve_symbol_ccl_program): Make static
+	* realpath.c: Remove K&R support.
+	* redisplay-x.c (x_output_display_block): Don't shadow previous local
+	* glyphs-widget.c (layout_instantiate):  Don't shadow previous local
+	* gutter.c (get_gutter_coords): Make static.
+	* lread.c (locate_file_map_suffixes): Make static.
+	* ralloc.c (relinquish): ANSIfy
+	* redisplay.c:
+	* lisp.h:
+	Move prototypes from redisplay.c to lisp.h
+
+1999-09-22  Martin Buchholz  <martin@xemacs.org>
+
+	* glyphs-x.c (x_widget_set_property):
+	- Remove unnecessary initialization.
+	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
+	* glyphs-x.c (x_widget_instantiate):
+	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
+	* unexelf.c (unexec):
+	Add cast for C++ compilability.
+	* redisplay.h:
+	Fix a typo.
+	* ralloc.c (r_alloc_reinit):
+	SET_FUN_PTR was broken wrt ANSI aliasing!
+	To compensate, use __typeof__ when using gcc, else live with
+	possible (but rare) warnings.
+	* ralloc.c (init_ralloc):
+	Ditto
+	* ralloc.c: Use the real dlmalloc prototype for __morecore.
+	* lread.c (locate_file_map_suffixes):
+	* input-method-xlib.c (XIM_init_frame):
+	- Xlib functions should use XPointer, not XtPointer.
+	* input-method-xlib.c (XIM_delete_frame):
+	- Xlib functions should use XPointer, not XtPointer.
+	* input-method-xlib.c (IMDestroyCallback):
+	- Simplify.
+	- XFRAME (obj) can never be NULL, so don't test for it.
+	* gutter.h:
+	Add GUTTER_POS_LOOP for iterating over all gutter_pos'es
+	* gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG):
+	Run c-backslash-region on macro body.
+	* gutter.c (gutter_was_visible):
+	Remove redundant parens - this is not a macro.
+	* gutter.c (redraw_exposed_gutters):
+	Use GUTTER_POS_LOOP.
+	* gutter.c (gutter_specs_changed):
+	Use GUTTER_POS_LOOP.
+	* gutter.c (gutter_geometry_changed_in_window):
+	Use GUTTER_POS_LOOP.
+	* gutter.c (update_frame_gutters):
+	Use GUTTER_POS_LOOP.
+	* gutter.c (init_frame_gutters):
+	Use GUTTER_POS_LOOP.
+	* file-coding.c (determine_real_coding_system):
+	Fix C++ compile error.
+	* emodules.c (find_make_module):
+	Cast return value from xrealloc
+	* emacs.c (Fkill_emacs):
+	Use __typeof__, when available.
+	* emacs.c (voodoo_free_hook):
+	Use __typeof__, when available.
+	(Unfortunately, the type of __free_hook is glibc-version-dependent)
+	* dired.c (user_cache): Use Bufbyte *, not char *
+	* dired.c (Fuser_name_all_completions): Ditto.
+
+1999-09-22  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.c (redisplay_frame): reset the gutter display lines
+ 	when we reset the subwindows.
+
+	* gutter.c (reset_gutter_display_lines): new function.
+
+	* window.c (Flast_nonminibuf_window): new function equivalent to
+ 	FRAME_LAST_NONMINIBUF_WINDOW ().
+	(syms_of_window): declare it.
+
+	* redisplay.c (create_string_text_block): don't add bogus eol
+ 	markers to gutter display lines.
+
+	* glyphs.c (reset_subwindow_cachels): make sure we unmap
+ 	subwindows using unmap_subwindow so that expose events get
+ 	registered correctly.
+
+	* window.c (window_scroll): use Vwindow_pixel_scroll_increment to
+ 	determine how much to scroll the window.
+	(vars_of_window): Vwindow_pixel_scroll_increment is a new
+ 	variable.
+
+1999-09-20  Robert Pluim  <rpluim@nortelnetworks.com>
+
+	* glyphs-x.c (update_widget_face): Guard fontList declaration for
+	non-motif uses.
+
+1999-09-20  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (mswindows_update_subwindow): update faces.
+
+1999-09-19  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (update_frame_subwindows): update if faces have
+ 	changed.
+
+	* glyphs-x.c (x_widget_instantiate): create the clip widget using
+ 	lwlib rather than directly.
+	(x_finalize_image_instance): delete the clip widget using lwlib.
+	(x_update_subwindow): update widget faces.
+	(update_widget_face): new function for updating the face
+ 	properties of a widget.
+	(x_widget_set_property): update widget faces.
+
+	* lwlib-Xlw.c (xlw_create_clip_window): new function. We need to
+ 	manage the clip widgets using lwlib so that we can delete them in
+ 	a safe manner.
+
+1999-09-16  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp-union.h:
+	* lisp-disunion.h:
+	Define new, potentially faster INT arithmetic macros
+	INT_PLUS, INT_MINUS, INT_PLUS1, INT_MINUS1
+	* bytecode.c (execute_optimized_function):
+	Use new macros.
+	Fix metering code
+	* bytecode.c (bytecode_negate):
+	Optimize for integer case.
+
+1999-08-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* m/mips.h: Support for mips-linux: Add !linux around places
+	that are not valid for linux, define TEXT_START, DATA_START,
+	DATA_SEG_BITS.
+
+1999-09-16  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_output_subwindow): clip subwindows
+ 	that don't completely fit on-screen rather than just unmapping
+ 	them.
+
+	* glyphs.h: change signature of map_subwindow.
+
+	* glyphs.c (map_subwindow): add display_glyph_area to the
+ 	signature. make sure the mapped area saved in the subwindow_cachel
+ 	reflects this.
+	(Fforce_subwindow_map): make a no-op. I don't think this does
+ 	anything useful.
+
+	* glyphs-x.h (struct x_subwindow_data): save the Display rather
+ 	than the Screen. Add a clipwindow and clipwidget handle.
+	(IMAGE_INSTANCE_X_CLIPWINDOW): new accessor.
+	(IMAGE_INSTANCE_X_CLIPWIDGET): ditto.
+	(XIMAGE_INSTANCE_X_CLIPWIDGET): ditto.
+	(XIMAGE_INSTANCE_X_CLIPWINDOW): ditto.
+
+	* glyphs-x.c (x_finalize_image_instance): destroy the clipwidget
+ 	as well as the widget itself.
+	(x_unmap_subwindow): unmap the clipwindow and clipwidget rather
+ 	than the widgets and subwindows themselves. move the widget inside
+ 	the clipwidget.
+	(x_subwindow_instantiate): hold onto the Display rather than the
+ 	Screen. allocate a clipwindow to put the subwindow inside.
+	(x_resize_subwindow): use saved Display directly.
+	(x_widget_instantiate): allocate a clipwidget of type EmacsManager
+ 	to put widgets inside.
+
+	* glyphs-widget.c: remove group stuff.
+
+	* glyphs-msw.h (struct mswindows_subwindow_data): new structure to
+ 	hold the clipwindow.
+	(IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): new accessor.
+	(XIMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): ditto.
+
+	* glyphs-msw.c: remove group stuff.
+	(mswindows_finalize_image_instance): destroy clipwindow as well as
+ 	the widget itself.
+	(mswindows_unmap_subwindow): unmap the clipwindow rather than the
+ 	widget.
+	(mswindows_map_subwindow): ditto. move the widget within the
+ 	clipwindow.
+	(mswindows_subwindow_instantiate): allocate and initialize
+ 	mswindows_subwindow_data. allocate a clipwindow with the subwindow
+ 	as a child.
+	(mswindows_widget_instantiate): ditto.
+	(mswindows_control_wnd_proc): new function that allows us to
+ 	propagate events from the widget to the main windows control loop.
+
+	* device-msw.c (mswindows_init_device): register new widget clip window
+ 	class.
+
+	* console.h (struct console_methods): add display_glyph_area to
+ 	map_window.
+
+	* console-msw.h: declare new window class and wnd proc for
+ 	widgets.
+
+1999-09-14  Martin Buchholz  <martin@xemacs.org>
+
+	* general.c:
+	* eldap.c:
+	Move symbols used only by eldap.c into eldap.c as statics.
+
+1999-09-09  Martin Buchholz  <martin@xemacs.org>
+
+	* window.c (syms_of_window):
+	* symbols.c (syms_of_symbols):
+	* redisplay.c (syms_of_redisplay):
+	* print.c (syms_of_print):
+	* lisp.h:
+	* intl.c (syms_of_intl):
+	* general.c (syms_of_general):
+	* frame.c (syms_of_frame):
+	* fileio.c (syms_of_fileio):
+	* file-coding.h:
+	* file-coding.c (syms_of_file_coding):
+	* extents.c (syms_of_extents):
+	* event-stream.c (syms_of_event_stream):
+	* event-stream.c (Fnext_event):
+	* device.c (syms_of_device):
+	* data.c (syms_of_data):
+	* casetab.c (syms_of_casetab):
+	* casetab.c (check_case_table):
+	* callint.c (syms_of_callint):
+	* buffer.c (syms_of_buffer):
+	Delete unused C symbols:
+	Qbuffer_file_name, Qbuffer_undo_list, Quser_variable_p,
+	Qcurrent_prefix_arg, Qtranslate_table, Qkeywordp,
+	Qnumber_or_marker_p, Qcons, Qkeyword, Qignore, Qdelete_device,
+	Qcommand_execute, Qglyph_invisible,
+	Qbuffer_file_coding_system, Qfile_name_handler_alist,
+	Qframe_x_p, Qframe_tty_p, Qblack, Qkeyboard, Qmenubar, Qpath,
+	Qvector, Qwhite, Qcase, Qdomain, Qalternate_debugging_output,
+	Qprint_escape_newlines, Qprint_readably, Qfloat_output_format,
+	Qwindow_scroll_functions, Qfboundp, Qscroll_up, Qscroll_down
+
+	Rename symbols as required by the CHECK_RECORD macro:
+	- Qcase_table_p to Qcase_tablep
+	- Qcoding_system_p to Qcoding_systemp
+
+	* debug.h:
+	* debug.c (syms_of_debug):
+	Make debug.c's internal Lisp_Objects static.
+
+	* events.c (vars_of_events):
+	* events.c (syms_of_events):
+	Use regular old defsymbol instead of KEYSYM + staticpro().
+
+	* select-x.c (CHECK_CUTBUFFER):
+	Rewrite in accordance with coding standards.
+
+	* keymap.c (syms_of_keymap):
+	Use SPC in the same way as RET, TAB, etc.
+
+1999-08-27  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* xemacs-20/src/menubar-x.c (make_dummy_xbutton_event): Don't add
+	offset twice if HAVE_WMCOMMAND is defined.
+
+1999-09-13 Mike McEwan <mike@lotusland.demon.co.uk>
+
+	* redisplay-x.c (x_output_vertical_divider): make sure
+ 	shadow_thickness is positive.
+
+1999-09-10 Julian Back <jback@rudd.compulink.co.uk>
+
+	* process-nt.c (nt_create_process): fixup to cope with
+ 	Vprocess_environment.
+
+1999-09-02  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_output_layout): call output
+ 	routines with clear_clip false. output layout borders with text
+ 	correctly.
+
+	* redisplay-msw.c (mswindows_output_blank): call output routines
+ 	with clear_clip true.
+	(mswindows_output_string): ditto.
+	(mswindows_output_display_block): ditto.
+
+	* redisplay-x.c (x_output_display_block): call output routines
+ 	with clear_clip true.
+
+	* redisplay.h: fix output routines for clear_clip parameter.
+
+	* redisplay-output.c (redisplay_output_layout): cope with glyphs
+ 	in the border.
+
+	* glyphs-widget.c (layout_instantiate): deal with border glyphs.
+	(check_valid_glyph_or_instantiator): renamed from
+ 	check_valid_glyph_or_image.
+	(check_valid_border): allow glyphs or their instantiators.
+	(check_valid_glyph_or_instantiator_list): renamed from
+ 	check_valid_glyph_or_image_list,
+	(glyph_instantiator_to_glyph): new function. make sure a glyph is
+ 	a glyph and not an instantiator.
+	(substitute_keyword_value): new function. replace a keyword value
+ 	with a new one.
+
+1999-09-01  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (string_set_property): new function to set the data of
+ 	a string.
+	(image_instantiator_format_create): use it.
+
+1999-09-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fmapc): Rename back to Fmapc_internal.
+
+1999-07-30  Gleb Arshinov  <gleb@cs.stanford.edu>
+
+	* ntheap.h: CONST (semantically constant) name field of file_data
+ 	struct
+
+	* unexnt.c (open_output_file): match function definition with
+ 	function declaration
+
+	* editfns.c: #include "sysfile.h" for getcwd() prototype
+
+	* gif_io.c:  #include "sysfile.h" for close() prototype
+
+1999-09-02  Martin Buchholz  <martin@xemacs.org>
+
+	* elhash.c:
+	* elhash.h:
+	Change the :type keyword to :weakness, for compatibility with the
+	GNU Emacs 20.5 hash table implementation.
+	Keep (but don't document) the :type keyword for compatibility.
+	Obsolete function hash-table-type
+	General cleanup.
+	Define function sxhash for compatibility with Common Lisp and GNU Emacs.
+
+1999-09-01  Martin Buchholz  <martin@xemacs.org>
+
+	* floatfns.c (arith_error):
+	* floatfns.c (range_error):
+	* floatfns.c (range_error2):
+	* floatfns.c (domain_error):
+	* floatfns.c (domain_error2):
+	* lrecord.h (LRECORDP):
+	* console-x.h (X_ERROR_OCCURRED):
+	* console-x.h (HANDLING_X_ERROR):
+	* chartab.c (CATEGORYP):
+	* buffer.h (XCHAR_OR_CHAR_INT):
+	Remove redundant and confusing parentheses.
+
+	* redisplay-output.c (redisplay_clear_to_window_end):
+	Remove redundant initialization.
+
+	* redisplay.h:
+	* redisplay-msw.c:
+	* redisplay-x.c:
+	Move declarations of bevel_modeline() into redisplay.h.
+
+1999-08-30  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp.h: Add staticpro_nodump for undumped staticpro-ing.
+	* alloc.c: Add staticpro_nodump for undumped staticpro-ing.  Add
+		  alignment information for dumped data.  Enhance
+		  descriptions.  Phase out Vterminal_* variables while
+		  dumping.
+	* lrecord.h: Add chained descriptions and automagically-reset
+		  lisp_objects to the description system.
+
+	* console-stream.h: Declare the Vterminal_* variables.
+
+	* buffer.c: Don't dump Vbuffer_alist, Vbuffer_defaults and
+		  Vbuffer_local_symbols.
+	* console.c: Don't dump Vconsole_list, Vconsole_defaults and
+		  Vconsole_local_symbols.
+	* eval.c: Don't dump Qunbound_suspended_errors_tag.
+	* lread.c: Don't dump Vread_buffer_stream.
+	* lstream.c: Don't dump Vlstream_free_list[].
+	* search.c: Don't dump last_thing_searched.
+	* window.c: Don't dump minibuf_window and
+		  Vwindow_configuration_free_list[].
+
+	* faces.c: Add face description.
+	* fns.c: Add bit_vector description.
+	* glyphs.c: Add image specifier description.
+	* objects.c: Add color, face and face boolean specifiers descriptions.
+	* opaque.c: Add opaque description.  Don't dump Vopaque_ptr_free_list.
+	* rangetab.c: Add range table description.
+	* specifier.c: Add specifier and specifier methods description.
+	* specifier.h: Add specifier extra description support.
+
+	* symbols.c: Fix symbol_value_buffer_local_description.
+
+	* gdbinit (Lisp): Add opaque_ptr, remove opaque_list.
+
+1999-09-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* extents.c (extent_remprop): Get extent's plist address
+ 	correctly.
+
+1999-08-31  Andy Piper  <andy@xemacs.org>
+
+	* xmu.h: define Xmu/Converters.h things.
+
+1999-08-31  Andy Piper  <andy@xemacs.org>
+
+	* opaque.c (equal_opaque_ptr): define.
+	(hash_opaque_ptr): define.
+
+	* xmu.h: define Xmu/Misc.h things.
+
+1999-08-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (determine_real_coding_system): Treat `coding:'
+	cookie.
+
+1999-08-16  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (struct decoding_stream): New member `counter'.
+	(reset_decoding_stream): Initialize `counter'.
+	(decode_coding_ucs4): Use `counter'.
+	(decode_coding_utf8): Likewise.
+
+1999-08-31  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_normalize_glyph_area): make sure
+ 	the clip offset doesn't exceed the height we have available to
+ 	show.
+
+	* window.h (struct window): add top_yoffset and left_xoffset for
+ 	pixel scrolling.
+	(WINDOW_TEXT_TOP_CLIP): new macro.
+
+	* window.c (window_scroll): add behaviour for pixel-scrolling of
+ 	tall lines.
+
+	* redisplay.h (struct display_line): add top_clip.
+	(DISPLAY_LINE_HEIGHT): adjust for top_clip.
+	(DISPLAY_LINE_YPOS): ditto.
+
+	* redisplay.c (position_redisplay_data_type): add
+ 	start_col_xoffset to prepare for pixel-based h-scrolling.
+	(WINDOW_SCROLLED): new macro.
+	(next_tab_position): use it.
+	(add_glyph_rune): use new hscoll vars.
+	(create_text_block): ditto.
+	(generate_displayable_area): adjust off-by-one error.
+	(regenerate_window): take top_clip into account.
+	(regenerate_window_extents_only_changed): ditto.
+	(regenerate_window_incrementally): ditto.
+
+	* redisplay-x.c (x_output_display_block): use DISPLAY_LINE_YPOS,
+ 	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
+	(x_output_string): ditto.
+	(x_output_blank): ditto.
+	(x_output_hline): ditto.
+	(x_output_eol_cursor): ditto.
+
+	* redisplay-output.c (output_display_line): allow for
+ 	top_clip. use DISPLAY_LINE_YPOS, DISPLAY_LINE_HEIGHT and
+ 	DISPLAY_LINE_YEND macros.
+	(redisplay_output_layout): output strings in layouts correctly.
+	(redisplay_clear_clipped_region): allow for top_clip.
+	(redisplay_calculate_display_boxes): ditto.
+
+	* redisplay-msw.c (mswindows_output_blank): use DISPLAY_LINE_YPOS,
+ 	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
+	(mswindows_output_cursor): ditto.
+	(mswindows_output_string): ditto.
+	(mswindows_redraw_exposed_window): ditto.
+	(mswindows_output_display_block): ditto.
+
+	* gutter.c: new specifier type gutter-size.
+	(gutter_size_validate): validate gutter-size specifier.
+	(Fgutter_size_specifier_p): predicate for gutter-size.
+	(Fredisplay_gutter_area): allow the gutter area to be redisplayed
+ 	under user contol, like Fredisplay_echo_area.
+	(syms_of_gutter): add new functions.
+	(specifier_type_create_gutter): add new specifier.
+	(specifier_vars_of_gutter): change specifier types of *-height to
+ 	gutter-size.
+
+	* glyphs.c (glyph_width): make work with image instances.
+
+	* console.h (struct console_methods): change api of output_string.
+
+	* glyphs-x.c (x_map_subwindow): move before mapping as reported by
+ 	Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>
+
+1999-08-30  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_finalize_image_instance): X_MASK -> PIXMAP_MASK
+ 	for assignment.
+	(init_image_instance_from_x_image): ditto.
+	(x_xpm_instantiate): ditto.
+	(x_colorize_image_instance): ditto. Reported by Richard Cognot
+ 	<cognot@ensg.u-nancy.fr>
+
+1999-08-29  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_widget_instantiate): move font initialisation so
+ 	that it doesn't get saved in the user defined args.
+	(x_tab_control_instantiate): Set the fg color of the tab's
+ 	children.
+	(x_tab_control_set_property): ditto.
+
+1999-08-27  Damon Lipparelli  <lipp@primus.com>
+
+	* events.h (XTIMEOUT): must preface Lisp_Timeout with ``struct''
+	(XSETTIMEOUT): fixup typo
+
+1999-08-11  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* syntax.c (scan_words): Unified Mule and Non-mule scanning.
+	Word boundary search looks back instead of forward so that it
+	doesn't peek over the limit.
+
+1999-08-20  Olivier Galibert  <galibert@pobox.com>
+
+	* config.h.in: Add PDUMP define.
+	* emacs.c (Fdump_emacs): Hackish, call pdump() if configured in.
+
+	* lrecord.h: Enhance description system.
+	* alloc.c: Fix vector and string description.  Add portable
+	dumper enumeration fonctions.
+
+	* symbols.c:  Fix symbols description.   Add  symbol_value_forward
+	description.
+	* eval.c: Add subr description.
+	* elhash.c (CLEAR_HENTRY):   Clean  value pointer  too.   Fix hash
+	table description.
+	(remhash_1): CLEAR_HENTRY evaluates the parameter two times now.
+
+1999-08-20  Olivier Galibert  <galibert@pobox.com>
+
+	* opaque.c: Kill opaque lists, make  Lisp_Opaque_Ptr a lrecord of
+	its own.
+	* opaque.h: Ditto.
+
+	* eval.c (eval_in_buffer_trapping_errors):
+	(run_hook_trapping_errors):
+	(safe_run_hook_trapping_errors):
+	(call0_trapping_errors):
+	(call1_trapping_errors):
+	(call2_trapping_errors): OPAQUEP  -> OPAQUE_PTRP.  make_opaque_ptr
+	now takes a non-const void *.
+
+1999-08-20  Olivier Galibert  <galibert@pobox.com>
+
+	* opaque.c: Remove make_opaque_long.
+
+	* opaque.h: Remove everything opaque_long related.
+
+	* eval.c (vars_of_eval): Make Qunbound_suspended_errors_tag an
+	opaque_ptr.
+
+	* emacs.c (main_1): Remove make_opaque_long from comment.
+
+1999-08-20  Olivier Galibert  <galibert@pobox.com>
+
+	* event-stream.c (mark_timeout):
+	(print_timeout):
+	(event_stream_generate_wakeup):
+	(event_stream_resignal_wakeup):
+	(event_stream_disable_wakeup):
+	(event_stream_wakeup_pending_p):
+	(vars_of_event_stream): Lisp_Timeout is now a lrecord.
+
+	* events.h (struct Lisp_Timeout): Added.
+
+1999-08-24  Andy Piper  <andy@xemacs.org>
+
+	* console-x.h: declare new pixmap signatures.
+
+1999-08-23  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_update_subwindow): make sure the widget size is
+ 	maintained after an update.
+
+	* event-Xt.c (emacs_Xt_handle_magic_event): use
+ 	find_matching_subwindow to check whether the exposure is totally
+ 	inside a subwindow, if it is then ignore it.
+
+	* glyphs.c (find_matching_subwindow): new function.
+
+	* toolbar-x.c (x_draw_blank_toolbar_button): use new
+ 	x_output_shadows signature.
+	(x_output_toolbar_button): use new x_output_x_pixmap signature.
+
+	* redisplay.h (struct display_box): new structure.
+	(struct display_glyph_area): ditto.
+  	declare new display_box functions.
+
+	* redisplay-x.c (x_output_pixmap): update for new display
+ 	box stuff.
+	(x_bevel_area): update to allow multiple edge styles and border
+ 	segments.
+	(x_output_display_block): update for new display_box stuff and
+ 	signatures.
+	(x_clear_region): ditto.
+	(x_output_x_pixmap): ditto. adjust offsets rather than clip.
+	(console_type_create_redisplay_x): declare new console methods.
+	(x_output_vertical_divider): update for new bevel_area signature.
+	(x_output_shadows): update to allow selective drawing of edges.
+
+	* redisplay-tty.c (tty_output_display_block): do nothing for
+ 	layouts.
+
+	* redisplay-output.c (redisplay_output_subwindow): convert to use
+ 	display_box structure, this allows us to put subwindows anywhere
+ 	with any offset, useful for layout glyphs.
+	(redisplay_output_layout): new function. output a layout and its
+ 	sub-glyphs.
+	(redisplay_output_pixmap): new modular function combining generic
+ 	parts of the X and mswindows versions. convert to use display_box
+ 	structures.
+	(redisplay_clear_clipped_region): new function. clear the area a
+ 	glyph is going into.
+	(redisplay_normalize_glyph_area): new function. calculate the
+ 	bounds of a display_glyph_area given a display_box.
+	(redisplay_normalize_display_box): new function. shrink a
+ 	display_box to enclose a display_glyph_area.
+	(redisplay_display_boxes_in_window_p): check whether the input
+ 	display_box and display_glyph_area are actually in a window.
+	(redisplay_calculate_display_boxes): calculate display boxes based
+ 	on conventional display_line metrics.
+	(bevel_modeline): update for new bevel_area signature.
+
+	* redisplay-msw.c (mswindows_output_blank): update for new
+ 	display_box stuff.
+	(mswindows_output_string): ditto.
+	(mswindows_output_dibitmap): ditto.
+	(mswindows_output_dibitmap_region): ditto.
+	(mswindows_output_pixmap): ditto.
+	(mswindows_bevel_area): update to allow multiple edge styles and
+ 	border segments.
+	(mswindows_output_display_block): update for new display_box stuff
+ 	and signatures.
+	(mswindows_clear_region): ditto.
+	(console_type_create_redisplay_mswindows): declare new console methods.
+
+	* lisp.h (edge_style): new enum.
+	declare display_box and display_glyph_area.
+
+	* gutter.c (output_gutter): update for new bevel_area signature.
+
+	* glyphs.h (image_instance_type): add layout.
+	(IMAGE_LAYOUT_MASK): ditto.
+	(LAYOUT_IMAGE_INSTANCEP): new macro.
+	(CHECK_LAYOUT_IMAGE_INSTANCE): ditto.
+	(struct Lisp_Image_Instance): add offsets for layout and the
+ 	layout type itself. move mask here also.
+	(IMAGE_INSTANCE_LAYOUT_CHILDREN): new macro.
+	(IMAGE_INSTANCE_LAYOUT_BORDER): ditto.
+	(XIMAGE_INSTANCE_LAYOUT_CHILDREN): ditto.
+	(XIMAGE_INSTANCE_LAYOUT_BORDER): ditto.
+
+	* glyphs.c (mark_image_instance): update for layouts.
+	(print_image_instance): ditto.
+	(image_instance_equal): ditto.
+	(image_instance_hash): ditto.
+	(allocate_image_instance): initialise offsets for layout.
+	(decode_image_instance_type): update for layouts.
+	(encode_image_instance_type): ditto.
+	(Fimage_instance_height): ditto.
+	(Fimage_instance_width): ditto.
+	(allocate_glyph): ditto.
+	(glyph_width): allow image instances as an argument. update for layouts.
+	(glyph_height_internal): ditto.
+	(syms_of_glyphs): add layout symbols.
+
+	* glyphs-x.h (struct x_image_instance_data): remove mask entry.
+	(IMAGE_INSTANCE_X_MASK): update.
+
+	* glyphs-x.c (x_label_instantiate): new function. instantiate a
+ 	label.
+	(image_instantiator_format_create_glyphs_x): initialise new layout
+ 	glyph type.
+
+	* glyphs-widget.c: new layout type.
+	(check_valid_orientation): new keyword checker for layouts.
+	(check_valid_justification): ditto.
+	(check_valid_border): ditto.
+	(check_valid_glyph_or_image_list): ditto.
+	(layout_possible_dest_types): new function for layout glyph type.
+	(layout_normalize): ditto.
+	(layout_instantiate): ditto.
+	(syms_of_glyphs_widget): new keywords for layout.
+	(image_instantiator_format_create_glyphs_widget): initialise the
+ 	layout glyph type.
+
+	* glyphs-msw.h (struct mswindows_image_instance_data): remove mask
+ 	argument.
+	(IMAGE_INSTANCE_MSWINDOWS_MASK): update.
+
+	* glyphs-msw.c: declare layout format.
+	(image_instantiator_format_create_glyphs_mswindows): initialise it.
+
+	* general.c: new symbols for layouts.
+
+	* console.h (struct console_methods): new console methods for
+ 	outputting pixmaps and strings.
+
+1999-08-23  Didier Verna  <verna@inf.enst.fr>
+
+	* sound.c: revert the renaming of `bell_volume' to `Vbell_volume'
+ 	and `bell_inhibit_time' to `Vbell_inhibit_time'.
+
+1999-08-18  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_output_subwindow): disable
+ 	clipping attempt.
+
+1999-08-17  Andy Piper  <andy@xemacs.org>
+
+	* gutter.c (redraw_exposed_gutter): handle degenerate case of no
+ 	area to expose or no gutter to display.
+
+1999-08-16  Charles G Waldman  <cgw@fnal.gov>
+
+	* sound.c: rename `bell_volume' to `Vbell_volume' and
+	`bell_inhibit_time' to `Vbell_inhibit_time'.
+
+1999-08-13  Charles G Waldman  <cgw@fnal.gov>
+
+	* sound.c: (bell-inhibit-time): New variable.
+	(ding): Use it.
+	(sound-alist): Fix docstring.
+
+1999-08-17  Andy Piper  <andy@xemacs.org>
+
+	* gui-x.c (button_item_to_widget_value): xstrdup name so that
+ 	deleting it is ok.
+
+1999-08-16 Jeff Miller <jmiller@smart.net>
+
+	* syntax.c (scan_words): make compile.
+
+1999-08-16  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_output_subwindow): try and be more
+ 	relaxed about clipping possibilities.
+
+	* glyphs-x.c (x_tab_control_set_property): free_widget_value_tree
+ 	rather than just the widget_value.
+	(x_update_subwindow): ditto.
+	(x_widget_instantiate): ditto.
+
+	* gutter.c (output_gutter): shrink current display lines if
+ 	required.
+
+1999-08-15  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.h: declare free_display_lines.
+
+	* redisplay.c (free_display_lines): make non-static.
+
+	* gutter.c (free_frame_gutters): use free_display_lines instead of
+ 	Dynarr_free.
+	(calculate_gutter_size): ditto.
+
+1999-08-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* eval.c (run_hook_with_args_in_buffer): GCPRO globals.
+
+1999-08-14  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (update_subwindow_cachel): make it less brittle.
+
+1999-08-04  Mike Woolley  <mike@bulsara.com>
+
+	* scrollbar-msw.c (mswindows_handle_mousewheel_event): Fixed
+ 	problem in wheelmouse code occurring when the horizontal scrollbar
+ 	is enabled but not visible.
+
+1999-08-08  Andy Piper  <andyp@beasys.com>
+
+	* toolbar-msw.c (mswindows_redraw_frame_toolbars): new function.
+	(console_type_create_toolbar_mswindows): use it.
+
+	* glyphs.c (Fset_image_instance_property): fiddly reorganisation.
+
+	* redisplay-output.c (redisplay_output_display_block): unmap
+ 	subwindows in the block area before outputting the block.
+
+	* event-msw.c (mswindows_wnd_proc): check the update rect before
+ 	painting and disable expose registration while painting.
+
+	* glyphs.c (register_ignored_expose): check
+ 	hold_ignored_expose_registration before registering expose events.
+
+	* redisplay.c (redisplay_frame): reset the subwindow cache before
+ 	displaying the gutter.
+
+	* glyphs-msw.c (mswindows_map_subwindow): move the window before
+ 	mapping.
+
+	* gutter.c (update_frame_gutters): check for glyphs_changed as if
+ 	it is the subwindow cache will have been reset.
+
+1999-08-06  Andy Piper  <andyp@beasys.com>
+
+	* gui-x.c (button_item_to_widget_value): cope with strings.
+
+	* glyphs.h: declare global widget functions.
+	(IIFORMAT_HAS_SHARED_DEVMETHOD): new macro.
+
+	* glyphs-x.c (x_combo_box_instantiate): do generic initialization
+ 	here. remove dead code.
+	(image_instantiator_format_create_glyphs_x): enable combo boxes
+ 	for Motif 2.0.
+
+	* glyphs-widget.c (widget_instantiate_1): make non-static.
+	(tree_view_instantiate): renamed from combo_box_instantiate.
+	(image_instantiator_format_create_glyphs_widget): use new/changed methods.
+
+	* glyphs-msw.c (mswindows_combo_box_instantiate): do generic
+ 	initialization here.
+
+	* lwlib-Xm.c (xm_update_combo_box): new function.
+	(xm_update_one_widget): call it.
+	(xm_update_one_value): deal with combo boxes as well as lists.
+	(xm_create_combo_box): create a drop-down combo box.
+
+	* toolbar-msw.c (mswindows_output_toolbar): call
+ 	mswindows_move_toolbar.
+
+1999-08-05  Andy Piper  <andyp@beasys.com>
+
+	* window.c (Fcurrent_pixel_column): new function. use display
+ 	lines to calculate pixel position of point.
+	* window.c (syms_of_window): declare it.
+
+1999-08-05  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (check_for_ignored_expose): ignore exposures wholly
+ 	contained in our ignore list.
+
+	* buffer.c (Frecord_buffer): add call to record-buffer-hook.
+	(syms_of_buffer): declare record-buffer-hook.
+
+	* s/mingw32.h: define mousewheel things.
+
+1999-08-04  Mike Woolley <mike@bulsara.com>
+
+	* windowsnt.h (_WIN32_WINNT): enable for win95
+
+	* s/cygwin32.h: define mousewheel things.
+
+	* scrollbar-msw.h: declare mousewheel handler.
+
+	* scrollbar-msw.c (mswindows_handle_mousewheel_event): new function.
+
+1999-08-04  Andy Piper  <andy@xemacs.org>
+
+	* gui-x.c (gui_items_to_widget_values): remove unused variable.
+	(gui_items_to_widget_values_1): ditto.
+
+	* gui-x.h: unconditionally define since it is used everywhere.
+
+1999-08-04  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_finalize_image_instance): only free pixels if we
+ 	have that type of image.
+
+1999-07-30  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_unmap_subwindows): add comparison
+ 	subwindow to not unmap if required.
+	(redisplay_unmap_subwindows_maybe): comparison is Qnil.
+	(redisplay_unmap_subwindows_except_us): new function.
+	(redisplay_output_subwindow): use it to unmap windows in the area
+ 	we are displaying into.
+
+	* glyphs.c (update_subwindow_cachel_data): always update as we
+ 	only ever get called when an update is required.
+	(update_subwindow_cachel): new function. sync a subwindow with its
+ 	cachel.
+	(Fresize_subwindow): use it.
+	(register_ignored_expose): make sure we set the tail correctly.
+
+1999-07-28  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_clear_bottom_of_window): remove
+ 	unneeded device.
+
+	* gutter.c (redraw_exposed_gutter): unmap subwindows from the
+ 	whole gutter.
+
+	* gui.h: declare parse_gui_item_tree_list and
+ 	parse_gui_item_tree_children.
+
+	* gui.c (parse_gui_item_tree_item): new function for parsing item
+ 	lists into gui-item trees.
+	(parse_gui_item_tree_children): ditto.
+	(parse_gui_item_tree_list): ditto.
+
+	* gui-x.h: declare gui_items_to_widget_values.
+
+	* gui-x.c (gui_items_to_widget_values_1): new function for
+ 	recursively parsing gui-items into widget_values.
+	(gui_item_children_to_widget_values): ditto.
+	(gui_items_to_widget_values): ditto.
+	(sanity_check_lwlib): add widgets macrolets.
+
+	* glyphs.h (IMAGE_INSTANCE_WIDGET_ITEMS): rename from *ITEM.
+	(XIMAGE_INSTANCE_WIDGET_ITEMS): ditto.
+	(IMAGE_INSTANCE_WIDGET_ITEM): rename from *SINGLE_ITEM.
+	(XIMAGE_INSTANCE_WIDGET_ITEM): ditto.
+	(struct expose_ignore): new structure for storing ignorable expose
+ 	events.
+
+	* glyphs.c (valid_image_instantiator_format_p): fix so that using
+ 	a console-type as a locale works.
+	(mark_image_instance): ITEM->ITEMS.
+	(image_instance_equal): ditto.
+	(image_instance_hash): ditto.
+	(struct expose_ignore_blocktype): new blocktype.
+	(check_for_ignored_expose): new function. checks frame exposure
+ 	list for events to ignore.
+	(register_ignored_expose): new function. registers an expose event
+ 	as ignorable.
+	(unmap_subwindow): register the expose event as ignorable.
+	(vars_of_glyphs): initialise the exposure blocktype.
+
+	* glyphs-x.c (x_finalize_image_instance): use lw_destroy_widget.
+	(x_update_subwindow): modify all widgets using widget_value tree
+ 	rather than just a single widget value.
+	(x_widget_instantiate): LWLIB_USES_MOTIF -> LWLIB_WIDGETS_MOTIF.
+	make sure widgets don't resize themselves.
+	(x_tab_control_instantiate): new function. use lwlib tab functions.
+	(x_tab_control_set_property): new function.
+	(image_instantiator_format_create_glyphs_x): add tab_control.
+
+	* glyphs-widget.c (widget_text_to_pixel_conversion): calculate
+ 	slightly more sensibly.
+	(initialize_widget_image_instance): ITEM->ITEMS.
+	(widget_instantiate_1): parse gui items generically into the ITEMS
+ 	entry.
+
+	* glyphs-msw.c (mswindows_update_subwindow): replace
+ 	SINGLE_ITEM->ITEM.
+	(mswindows_register_widget_instance): ditto.
+	(add_tree_item): modify to use new pre-initialised gui-item
+ 	structure.
+	(add_tab_item): ditto.
+	(mswindows_tab_control_instantiate): ditto.
+	(mswindows_tab_control_set_property): ditto.
+	(image_instantiator_format_create_glyphs_mswindows): predicate
+ 	existance of widgets on HAVE_WIDGETS.
+
+	* frame.h (struct frame): add subwindow_exposures variables.
+
+	* frame.c (allocate_frame_core): reset subwindow_exposures links.
+
+	* event-msw.c (mswindows_wnd_proc): check for ignored
+ 	expose events before redrawing.
+
+	* event-Xt.c (emacs_Xt_handle_magic_event): check for ignored
+ 	expose events before redrawing.
+
+1999-07-30  SL Baur  <steve@xemacs.org>
+
+	* scrollbar-x.c: should include EmacsFrame.h.
+	From Jeff Miller <jmiller@smart.net>
+
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.19 is released
+
+1999-07-27  Jeff Miller  <jmiller@smart.net>
+
+	* add a "#ifdef HAVE_MENUBARS"  wrapper to gui.c around
+	  menubar_show_keybindings.
+
+1999-07-23  SL Baur  <steve@miho>
+
+	* mule-charset.c (syms_of_mule_charset): Delete duplicated
+	definition of Qccl_program.
+
+	* mule-ccl.h: Make a global declaration of it here.
+
+1999-07-20  Bob Weiner  <weiner@beopen.com>
+
+	* s/sco7.h: Added from rr@sco.com.
+
+1999-06-25  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'.
+
+1999-06-24  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (mule_decode): Setup `str->ccl.last_block'.
+	(mule_encode): Likewise.
+
+	* mule-ccl.c (Qccl_program): New variable.
+	(CCL_SUSPEND): New macro.
+	(CCL_INVALID_CMD): New macro.
+	(CCL_READ_CHAR): Don't regard as invalid command while processing
+	the last block even if input is empty; use
+	`CCL_STAT_SUSPEND_BY_SRC' instead of `CCL_STAT_SUSPEND'.
+	(vars_of_mule_ccl): Setup `Qccl_program' and `Qccl_program_idx'.
+
+	* mule-ccl.h (CCL_STAT_SUCCESS): Moved from mule-ccl.c.
+	(CCL_STAT_SUSPEND_BY_SRC): Imported from Emacs 20.3.10.
+	(CCL_STAT_SUSPEND_BY_DST): Likewise.
+	(CCL_STAT_INVALID_CMD): Moved from mule-ccl.c; change value from 2.
+	(CCL_STAT_QUIT): Moved from mule-ccl.c; change value from 3.
+
+1999-05-04  Ken'ichi Handa  <handa@gnu.org>
+
+	* mule-ccl.h (struct ccl_program): New member stack_idx.
+
+	* mule-ccl.c (ccl_prog_stack_struct): Declare it as static.
+	(ccl_driver): Setup stack_idx and ccl_prog correctly.  Update them
+	before returing.
+	(setup_ccl_program): Initialize ccl->stack_idx to 0.
+
+1998-10-12  Kenichi Handa  <handa@etl.go.jp>
+
+	* mule-ccl.c (CCL_DECODE_SJIS, CCL_ENCODE_SJIS): Swap the
+	definitions.
+
+1998-08-18  Kenichi Handa  <handa@etl.go.jp>
+
+	* mule-ccl.c (CCL_READ_CHAR): If eof is encounterd while
+	processing the last block, don't just finish but processes eol
+	block of the current CCL program.
+	(ccl_driver): Add a new jump label ccl_repeat for the above
+	change.
+
+1998-04-15  Kenichi Handa  <handa@etl.go.jp>
+
+	* mule-ccl.c: Typo in comments fixed.
+	(Qccl_program_idx): New variables.
+	(CCL_ReadMultibyteChar2): Macro name changed from
+	CCL_ReadMultibyteCharacter.
+	(CCL_WriteMultibyteChar2): Macro name changed from
+	CCL_WriteMultibyteChar2.
+	(ccl_driver): Adjusted for the above changes.
+	(resolve_symbol_ccl_program): New function.
+	(Fccl_execute): The arg CCL-PROGRAM can be a symbol of CCL
+	program.  If CCL-PRGRAM is a vector, convert symbols in it to ID
+	numbers by resolve_symbol_ccl_program.
+	(Fccl_execute_on_string): Likewise.
+	(Fregister_ccl_program): If the arg CCL-PRGRAM is a vector,
+	convert symbols in it to ID numbers by resolve_symbol_ccl_program.
+
+1998-01-21  Kenichi Handa  <handa@etl.go.jp>
+
+	* mule-ccl.h: (struct ccl_program): New member private_state.
+
+	* mule-ccl.c
+	(CCL_Call): Fix the comment.
+	(CCL_ReadMultibyteCharacter, CCL_WriteMultibyteCharacter): New
+	macros for CCL Commands.
+	(EXCMD): New macro.
+	(ccl_driver): New case lable `CCL_Extention'.
+	(setup_ccl_program): Initialize the member `private_state' of CCL.
+
+1999-07-08  Katsumi Yamaoka <yamaoka@jpl.org>
+
+	* keymap.c (copy_keymap_internal): Inherit the default binding.
+
+1999-07-14  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+	* event-Xt.c (handle_focus_event_1): Re-enable Motif/XIM to get
+	focus the event (XIM_focus_event).
+	(emacs_Xt_handle_magic_event): No side effect on Motif/XIM because
+	XIM_SetGeometry does nothing in input_method_motif.c, but re-unify
+	the interface for future use (XIM_SetGeometry).
+	* redisplay-x.c (x_output_string): Re-enable Motif/XIM to set spot
+	location (XIM_SetSpotLocation).
+	(x_output_eol_cursor): Ditto.
+
+1999-07-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* gdbinit (pobj): change lrecord_foo to &lrecord_foo to match
+	Olivier's change to lrecord.h of 1999-04-22
+
+1999-07-20  Robert Pluim  <rpluim@bigfoot.com>
+
+	* gutter.c (redraw_exposed_gutter): Change type of pos from
+	enum toolbar_pos -> enum gutter_pos, since former is only defined
+	if toolbar support is.
+
+1999-07-19  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_resize_subwindow): cope with widgets as well as
+ 	subwindows.
+
+	* gutter.c (gutter_validate): new function for the gutter specifier.
+	(specifier_type_create_gutter): declare specifier validator.
+
+	* buffer.h (INC_CHARBYTIND): add for no error checking version.
+
+1999-07-18  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
+
+	* glyphs-msw.c (console_type_create_glyphs_mswindows): add
+ 	resize_subwindow.
+	(mswindows_resize_subwindow): new function.
+
+	* gutter.c (redraw_exposed_gutter): only reset the
+ 	current_display_lines if non-zero.
+	(Fgutter_pixel_height): new function.
+	(Fgutter_pixel_width): new function.
+
+	* event-msw.c (mswindows_wnd_proc): set the mask of the parameter
+ 	we want to retrive from the tab control.
+
+1999-07-17  Andy Piper  <andy@xemacs.org>
+
+	* window.c (change_window_height): mark gutters changed when we're
+ 	done.
+
+	* gutter.c (specifier_vars_of_gutter): make defaults more
+ 	sensible.
+
+	* gutter.h (WINDOW_REAL_GUTTER_BORDER_WIDTH): adjust to be 0 for 0
+ 	height gutter.
+	(DEFAULT_GUTTER_WIDTH): change.
+	(DEFAULT_GUTTER_BORDER_WIDTH): change.
+
+1999-07-18  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
+
+1999-07-16  Andy Piper  <andy@xemacs.org>
+
+	* frame.c (Fmake_frame): call init_frame_gutters().
+
+	* redisplay.c (add_emchar_rune): use string functions if we are
+ 	working with a string.
+	(position_redisplay_data_type): add string element.
+
+1999-07-15  Andy Piper  <andy@xemacs.org>
+
+	* winslots.h: add real_gutter_size slots to hold the actual gutter
+ 	size. This is important for autodetected sizes.
+
+	* gutter.c (calculate_gutter_size): calculate size for gutters
+ 	that have 'autodetect size.
+
+	* redisplay-msw.c (mswindows_output_vertical_divider): adjust
+ 	extent of divider for gutters.
+
+	* redisplay-x.c (x_output_vertical_divider): adjust extent of
+ 	divider for gutters.
+
+	* scrollbar.c (update_scrollbar_instance): adjust scrollbar
+ 	position to take into account the gutters.
+
+	* redisplay.c (generate_modeline): adjust modeline position to
+ 	take into account the gutters.
+
+1999-07-14  Andy Piper  <andy@xemacs.org>
+
+	* gutter.c (frame_topmost_window): new function.
+	(frame_bottommost_window): ditto.
+	(frame_leftmost_window): ditto.
+	(frame_rightmost_window): ditto.
+
+1999-07-13  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.c (calculate_display_line_boundaries): use text
+ 	boundaries so that gutters get handled properly.
+
+1999-07-12  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c (x_widget_instantiate): set the font Motif-style if
+ 	we're using Motif.
+
+	* redisplay-output.c (redisplay_clear_to_window_end): generalised
+ 	from redisplay-x.c
+
+	* redisplay-x.c (redisplay_clear_to_window_end): moved to
+ 	redisplay.c
+
+	* redisplay-msw.c (redisplay_clear_to_window_end): deleted.
+
+	* gutter.c: new file - implements gutters. All new functions are
+ 	semantically equivalent to the toolbar functions.
+	(gutter_was_visible): new function.
+	(get_gutter_coords): ditto.
+	(output_gutter): ditto.
+	(clear_gutter): ditto.
+	(update_frame_gutters): ditto.
+	(redraw_exposed_gutter): ditto.
+	(redraw_exposed_gutters): ditto.
+	(free_frame_gutters): ditto.
+	(init_frame_gutters): ditto.
+	(decode_gutter_position): ditto.
+	(Fset_default_gutter_position): ditto.
+	(Fset_default_gutter_position): ditto.
+	(Fdefault_gutter_position): ditto.
+	(gutter_after_change): ditto.
+	(Fgutter_specifier_p): ditto.
+	(recompute_overlaying_specifier): ditto.
+	(gutter_specs_changed): ditto.
+	(default_gutter_specs_changed): ditto.
+	(gutter_geometry_changed_in_window): ditto.
+	(default_gutter_size_changed_in_window): ditto.
+	(default_gutter_border_width_changed_in_window): ditto.
+	(default_gutter_visible_p_changed_in_window): ditto.
+	(syms_of_gutter): ditto.
+	(vars_of_gutter): ditto.
+	(specifier_type_create_gutter): ditto.
+	(specifier_vars_of_gutter): ditto.
+
+	* gutter.h: new file. Contains gutter constants and sizing macros
+ 	similar to those for the toolbar.
+
+	* winslots.h: add gutter variables.
+
+	* window.h: declare window_is_* functions.
+
+	* window.c (window_is_lowest): make non-static.
+	(window_is_highest): ditto.
+	(window_top_toolbar_height): deleted.
+	(window_bottom_toolbar_height): deleted.
+	(window_left_toolbar_width): deleted.
+	(window_right_toolbar_width): deleted.
+	(window_top_gutter_height): add gutter sizing.
+	(window_bottom_gutter_height): ditto.
+	(window_left_gutter_width): ditto.
+	(window_right_gutter_width): ditto.
+
+	* symsinit.h: declarations for gutters vars etc.
+
+	* search.c (bi_find_next_emchar_in_string): new function.
+
+	* scrollbar.c (update_scrollbar_instance): remove reference to
+ 	window_bottom_toolbar_height which did nothing.
+
+	* redisplay.h (struct display_line): add face indices for
+ 	overriding defaults in output_display_line.
+	Add gutter_changed flags and declarations.
+
+	* redisplay.c (create_string_text_block): new function, similar to
+ 	create_text_block but for strings. Display tables etc are used
+ 	from the currently selected window.
+	(generate_string_display_line): ditto. Similar to
+ 	generate_display_line.
+	(generate_displayable_area): generate display lines for a given
+ 	area on a frame. Input is the string, with associated extents, to
+ 	display.
+	(redisplay_frame): add gutter_changed check.
+	(redisplay_device): ditto.
+	(redisplay_without_hooks): ditto.
+
+	* redisplay-x.c (bevel_modeline): moved to redisplay.c.
+	(x_redraw_exposed_area): redraw exposed gutters.
+	(x_bevel_area): new redisplay device method.
+	(x_type_create_redisplay_mswindows): add bevel_area device method.
+	(x_output_display_block): fiddly Martin-style cleanup.
+	(x_output_vertical_divider): use bevel_area.
+
+	* redisplay-output.c (output_display_line): check display_lines
+ 	for face information before using defaults.
+	(bevel_modeline): new function, calls bevel_area with appropriate
+ 	values.
+
+	* redisplay-msw.c (bevel_modeline): moved to redisplay.c.
+	(mswindows_redraw_exposed_area): redraw exposed gutters.
+	(mswindows_bevel_area): new redisplay device method.
+	(console_type_create_redisplay_mswindows): add bevel_area device
+ 	method.
+
+	* indent.c (string_column_at_point): add column_at_point but for
+ 	strings.
+
+	* glyphs-x.c (image_instantiator_format_create_glyphs_x): only
+ 	instantiate widgets that we have a toolkit for.
+
+	* general.c: add Qgutter.
+
+	* frame.h (struct frame): add display lines for gutters and
+ 	visibility flags.
+
+	* frame.c (set_frame_selected_window): mark gutters changed.
+
+	* emacs.c (main_1): add gutter initialisation.
+
+	* device.h (struct device): add gutter_changed flag and macros to
+ 	manipulate it.
+
+	* console.h (struct console_methods): new bevel area redisplay
+ 	method.
+
+	* buffer.h (REAL_INC_CHARBYTIND): new macro for strings as
+ 	REAL_INC_BYTIND is for buffers.
+	(INC_CHARPTR): ditto.
+
+	* Makefile.in.in (objs): add gutter.o
+
+1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.18 is released
+
+1999-07-08  SL Baur  <steve@mule.m17n.org>
+
+	* event-Xt.c (handle_focus_event_1): Guard FRAME_X_XIC with
+	XIM_XLIB.
+	(emacs_Xt_handle_magic_event): Ditto.
+	* redisplay-x.c (x_output_string): Ditto.
+	(x_output_eol_cursor): Ditto.
+
+1999-06-30  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+	*  event-Xt.c, input-method-xlib.c, redisplay-x.c: Avoid the
+	problem that when XIM is destroyed or missed with some reason,
+	xemacs will die.  Now xim=xlib waits the XIM will be ready and
+	endures the case of XIM end up.
+
+1999-07-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* tooltalk.c (init_tooltalk): save signal actions for SIGQUIT,
+	SIGINT and SIGCHLD before calling tt_open and restore the
+	afterwards. This fixes e.g. the zombie subprocesses on Solaris
+
+1999-07-06  SL Baur  <steve@xemacs.org>
+
+	* s/linux.h: gcc-2.8 changes for powerpc
+	From Justin Vallon <vallon@mindspring.com>
+
+1999-07-05  Didier Verna  <verna@inf.enst.fr>
+
+	* indent.c: new symbol Qcoerce.
+	(Fmove_to_column): use it + doc string update.
+
+1999-07-04  Andy Piper  <andy@xemacs.org>
+
+	* console.c: undo earlier Fprovide changes.
+	* fns.c: ditto.
+	* console.h: ditto.
+
+	* console-tty.c (image_instantiator_format_create_glyphs_tty): new
+ 	function. validate appropriate image formats for tty.
+
+	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM):
+ 	initialize consoles parameter.
+	(struct image_instantiator_methods): add consoles parameter.
+	(IIFORMAT_VALID_CONSOLE): new function. validate the format on the
+ 	console.
+	(INITIALIZE_DEVICE_IIFORMAT): validate the format on the given
+ 	console.
+
+	* glyphs-msw.c: declare instantiators for later use.
+	(image_instantiator_format_create_glyphs_mswindows): validate xpm
+ 	and friends on the mswindows console.
+	* glyphs-x.c: ditto.
+
+	* glyphs.c (valid_image_instantiator_format_p): disallow glyphs
+ 	that have not been registered on the supplied device.
+	(Fvalid_image_instantiator_format_p): add locale argument.
+	(instantiate_image_instantiator): valid image instantiator on the
+ 	device.
+
+	* symsinit.h: add image_instantiator_format_create_glyphs_tty()
+ 	declaration.
+
+	* emacs.c (main_1): add call to
+ 	image_instantiator_format_create_glyphs_tty().
+
+1999-06-29  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp.h: Add #include <stddef.h>.
+
+	* sysdep.c: Remove #include <stddef.h>.
+	* symbols.c: Remove #include <stddef.h>.
+	* sheap.c: Remove #include <stddef.h>.
+	* opaque.c: Remove #include <stddef.h>.
+	* nt.c: Remove #include <stddef.h>.
+	* mule-charset.c: Remove #include <stddef.h>.
+	* marker.c: Remove #include <stddef.h>.
+	* file-coding.c: Remove #include <stddef.h>.
+	* extents.c: Remove #include <stddef.h>.
+	* elhash.c: Remove #include <stddef.h>.
+	* data.c: Remove #include <stddef.h>.
+	* chartab.c: Remove #include <stddef.h>.
+	* bytecode.c: Remove #include <stddef.h>.
+	* alloc.c: Remove #include <stddef.h>.  Fix vector description
+
+1999-06-30  SL Baur  <steve@miho.m17n.org>
+
+	* editfns.c: Document "%s" format spec.
+	Suggested by Bob Weiner <weiner@altrasoft.com>
+
+1999-06-29  Andy Piper  <andy@xemacs.org>
+
+	* event-msw.c: fix definition booboo.
+
+1999-06-28  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-x.c: change tree -> tree-view, progress ->
+ 	progress_gauge, edit -> edit-field, tab -> tab-control, combo ->
+ 	combo-box.
+	(complex_vars_of_glyphs_x): provide-on-console the implemented
+ 	widget types.
+
+	* glyphs-msw.c: ditto.
+	(complex_vars_of_glyphs_mswindows): ditto.
+
+	* lisp.h: add Fprovide_on_console.
+
+	* fns.c (Ffeaturep): add extra optional console argument.
+	(Fprovide_on_console): like Fprovide but provides only on the
+ 	specified console-type.
+	(Frequire): check console-features as well as global features.
+
+	* console.c (Fconsole_features): new function. return features for
+ 	this console.
+	(syms_of_console): add Fconsole_features.
+
+	* console.h (CONMETH_FEATURES): new function for accessing features.
+	(CONSOLE_FEATURES): ditto.
+	(struct console_methods): add features slot.
+	(INITIALIZE_CONSOLE_TYPE): initialize features slot.
+
+1999-06-28  Andy Piper  <andy@xemacs.org>
+
+	* event-Xt.c (handle_focus_event_1): conditionally compile for
+ 	X11R5.
+
+	* s/cygwin32.h: fix me website address.
+
+	* event-msw.c: add NMHDR for pre b20 cygwin builds.
+
+	* gui-x.c (button_item_to_widget_value): only add callback if it
+ 	is non-nil.
+
+	* glyphs-x.c: add progress, edit and combo instantiators.
+	(x_widget_set_property): new function. uses lwlib to set widget
+ 	values.
+	(x_widget_property): new function. uses lwlib to get widget
+ 	values.
+	(x_button_instantiate): support images in buttons.
+	(x_button_property): new function. use lwlib to get the selected
+ 	state.
+	(x_progress_instantiate): new function for instantiating progress
+ 	gauges.
+	(x_progress_set_property): new function. sets the progress gauge
+ 	position.
+	(x_edit_instantiate): new function. for instantiating edit fields.
+	(x_combo_instantiate): new function. for instantiating combo
+ 	boxes.
+	(image_instantiator_format_create_glyphs_x): add new device ii
+ 	formats.
+
+	* glyphs-msw.c (mswindows_tab_instantiate): remove redundant var.
+
+	* console.h (CONSOLE_FEATURES): new features accesor.
+
+	* conslots.h (MARKED_SLOT): add features entry.
+
+1999-06-25  Andy Piper  <andy@xemacs.org>
+
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): use new
+ 	gui functions.
+
+	* menubar-msw.c: move MAX_MENUITEM_LENGTH to gui.h
+
+	* gui.h (struct Lisp_Gui_Item): add accelerator.
+
+	* gui.c (gui_item_add_keyval_pair): deal with accelerators.
+	(gui_item_init): ditto.
+	(gui_add_item_keywords_to_plist): ditto.
+	(mark_gui_item): ditto.
+	(gui_item_hash): ditto.
+	(gui_item_accelerator): new function.
+	(gui_name_accelerator): new function stolen from gui-x.c
+
+	* gui-x.c (popup_selection_callback): always define. mark
+ 	subwindows changed after calling a callback.
+	(menu_name_to_accelerator): deleted.
+	(button_item_to_widget_value): forward gui_item things to gui_item
+ 	functions.
+
+	* glyphs-x.h (struct x_subwindow_data): add data for widgets. add
+ 	appropriate accesors.
+
+	* glyphs-x.c: declare new glyph formats.
+	(x_finalize_image_instance): unmanage and destroy widgets if they
+ 	exist.
+	(x_unmap_subwindow): handle widgets specially.
+	(x_map_subwindow): ditto. offset display of widgets by offset of
+ 	text widget within container.
+	(x_update_subwindow): new function. call lw_modify_all_widgets
+ 	when we are a widget.
+	(x_widget_instantiate): new function for generically creating
+ 	widgets-glyphs. toolkit specifics forwarded to lwlib.
+	(x_button_instantiate): new function for instantiating
+ 	widgets-glyph buttons.
+	(console_type_create_glyphs_x): register update_subwindow.
+	(image_instantiator_format_create_glyphs_x): register widget and
+ 	button types.
+
+	* event-msw.c (mswindows_wnd_proc): remove redundant variable.
+
+	* event-Xt.c (x_event_to_emacs_event): call handle_focus_event_1
+ 	when we get a button press in case we do not have the focus.
+	(handle_focus_event_1): set the keyboard focus to the text widget
+ 	if we do not have it.
+
+	* dialog-x.c (dbox_descriptor_to_widget_value): use new gui_item
+ 	functions.
+
+1999-06-24  SL Baur  <steve@miho.m17n.org>
+
+	* syntax.c (scan_words): Restore non-Mule code.
+	(word_constituent_p): Restore.
+
+1999-06-23  Olivier Galibert  <galibert@pobox.com>
+
+	* config.h.in: Add missing #undef *_USER_DEFINED.
+
+1999-06-23  SL Baur  <steve@miho.m17n.org>
+
+	* lisp.h (set_bit_vector_bit): Force promotion to unsigned long
+	int (fixes a 64-bit problem).
+
+	* chartab.c (word_boundary_p): Use EQ not == for lisp_object
+	comparison.
+
+1999-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* paths.h.in (PATH_DOC): Made doc-directory configurable.
+
+1999-06-22  Olivier Galibert  <galibert@pobox.com>
+
+	* lrecord.h: Added basic external description system.
+
+	* symbols.c: Added symbol, symbol-value-buffer-local,
+ 	symbol-value-lisp-magic and symbol-value-varalias description.
+	* mule-charset.c: Added charset description.
+	* marker.c: Added marker description.
+	* keymap.c: Added keymap description.
+	* glyphs.c: Added glyph description.
+	* floatfns.c: Added float description.
+	* file-coding.c: Added coding-system description.
+	* extents.c: Added extent description.
+	* elhash.c: Added hash-table description.
+	* data.c: Added weak-list desciption.
+	* chartab.c: Added char-table-entry and char-table description.
+	* bytecode.c: Added compiled-function description.
+	* alloc.c: Added cons, vector and string description.
+
+1999-06-22  Olivier Galibert  <galibert@pobox.com>
+
+	* lrecord.h (struct lrecord_header): Reduced size to 4 bytes.
+	Updated everything to the removal of the "flags" substructure.
+
+	* lisp.h (subr_lheader_initializer): Updated.
+	* symeval.h (symbol_value_forward_lheader_initializer): Updated.
+
+1999-06-20  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* syntax.c (word_constituent_p): Deleted.
+	(scan_words): Use `WORD_BOUNDARY_P'.
+
+	* chartab.c (Vword_combining_categories): New variable.
+	(Vword_separating_categories): Likewise.
+	(CATEGORYP): New macro.
+	(CATEGORY_SET): Likewise.
+	(CATEGORY_MEMBER): Likewise.
+	(word_boundary_p): New function.
+	(complex_vars_of_chartab): Set up new variable
+	`word-combining-categories' and `word-separating-categories'.
+
+1999-06-18  Olivier Galibert  <galibert@pobox.com>
+
+	* lrecord.h: Added description as a placehold in the lrecord
+ 	implementation structures.  Added the parameter to all constructor
+ 	defines.
+
+	* alloc.c: Added placeholders.
+	* buffer.c: Ditto.
+	* bytecode.c: Ditto.
+	* chartab.c: Ditto.
+	* console.c: Ditto.
+	* data.c: Ditto.
+	* database.c: Ditto.
+	* device.c: Ditto.
+	* eldap.c: Ditto.
+	* elhash.c: Ditto.
+	* eval.c: Ditto.
+	* event-stream.c: Ditto.
+	* events.c: Ditto.
+	* extents.c: Ditto.
+	* faces.c: Ditto.
+	* file-coding.c: Ditto.
+	* floatfns.c: Ditto.
+	* fns.c: Ditto.
+	* frame.c: Ditto.
+	* glyphs.c: Ditto.
+	* gui-x.c: Ditto.
+	* keymap.c: Ditto.
+	* lstream.c: Ditto.
+	* marker.c: Ditto.
+	* mule-charset.c: Ditto.
+	* objects.c: Ditto.
+	* opaque.c: Ditto.
+	* process.c: Ditto.
+	* rangetab.c: Ditto.
+	* specifier.c: Ditto.
+	* symbols.c: Ditto.
+	* toolbar.c: Ditto.
+	* tooltalk.c: Ditto.
+	* window.c: Ditto.
+
+1999-06-22  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.17 is released
+
+1999-06-13  Oscar Figueiredo  <oscar@xemacs.org>
+
+	* config.h.in (HAVE_LDAP_SET_OPTION): New define
+	(HAVE_LDAP_GET_LDERRNO): Ditto
+	(HAVE_LDAP_RESULT2ERROR): Ditto
+	(HAVE_LDAP_PARSE_RESULT): Ditto
+	(HAVE_UMICH_LDAP): Removed
+	(HAVE_NS_LDAP): Removed
+
+	* eldap.h (struct Lisp_LDAP): Removed the `livep' member as
+	suggested by Olivier Galibert
+	(CHECK_LIVE_LDAP): Test on `ld' instead of `livep'
+
+	* eldap.c: Take the removal of `livep' into account in all the
+	necessary functions
+	(signal_ldap_error): Take two additional parameters
+	Added new finer compilation conditions in order to use
+	ldap_parse_result or ldap_result2error if available
+	(Fldap_open): Conform to this new API
+	(Fldap_search_internal): Ditto
+
+1999-06-17  SL Baur  <steve@miho.m17n.org>
+
+	* data.c (struct int_or_double): Should use EMACS_INT not int.
+
+1999-06-16  Norbert Koch  <n.koch@eai-delta.de>
+
+	* redisplay-msw.c: Run 'ccl_driver' with 'CCL_MODE_ENCODING' as in
+	redisplay-x.c
+
+1999-06-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* redisplay-x.c (separate_textual_runs): Run `ccl_driver' with
+	`CCL_MODE_ENCODING'.
+
+	* file-coding.c (mule_decode): Run `ccl_driver' with
+	`CCL_MODE_DECODING'.
+	(mule_encode): Run `ccl_driver' with `CCL_MODE_ENCODING'.
+
+	* mule-ccl.c (CCL_WRITE_CHAR): Refer `conversion_mode'.
+	(ccl_driver): Add new argument `conversion_mode'.
+	(Fccl_execute): Run `ccl_driver' with `CCL_MODE_ENCODING'.
+	(Fccl_execute_on_string): Likewise [perhaps it is better to add
+	new optional argument].
+
+	* mule-ccl.h (CCL_MODE_ENCODING): New macro.
+	(CCL_MODE_DECODING): New macro.
+	(ccl_driver): Add new argument `conversion_mode'.
+
+1999-06-15  SL Baur  <steve@miho.m17n.org>
+
+	* mule-charset.c (Fsplit_char): New subr.
+	(Fchar_octet): delete.
+	(syms_of_mule_charset): DEFSUBR it.
+
+1999-06-13  Andy Piper  <andy@xemacs.org>
+
+	* menubar.h: update declarations involving gui_items.
+
+	* lisp.h: declare Lisp_Gui_Item.
+
+	* glyphs.h (struct Lisp_Image_Instance): update type of gui_item.
+
+	* glyphs.c (mark_image_instance): modify for new lisp-based gui_items.
+	(print_image_instance): ditto.
+	(image_instance_equal): ditto.
+	(image_instance_hash): ditto.
+
+	* event-msw.c (mswindows_need_event): assert badly_p status.
+	(mswindows_wnd_proc): modify WM_NOTIFY handling to cope with
+ 	callbacks in tree-view and tab-control widgets.
+	(emacs_mswindows_next_event): modify use of
+ 	mswindows_dequeue_dispatch_event.
+
+	* dialog-msw.c (mswindows_popup_dialog_box): modify for new
+ 	lisp-based gui_items.
+
+	* glyphs-msw.c (mswindows_update_subwindow): update use of
+ 	gui_items.
+	(mswindows_register_gui_item): new function.
+	(mswindows_register_gui_item): fix to use lisp gui_items.
+	(mswindows_widget_instantiate): ditto.
+	(mswindows_button_instantiate): ditto.
+	(add_tree_item): new function to recursively add tree view
+ 	elements.
+	(add_tree_item_list): ditto.
+	(mswindows_tree_instantiate): new function. instantiate tree view
+ 	controls.
+	(add_tab_item): new function to add tabs to a tab control.
+	(mswindows_tab_instantiate): new function. instantiate tab
+ 	controls.
+	(image_instantiator_format_create_glyphs_mswindows): add tree view
+ 	and tab controls.
+	(vars_of_glyphs_mswindows): ditto.
+
+	* glyphs-widget.c (check_valid_item_list_1): allow nested lists in
+ 	item lists.
+	(check_valid_item_list): ditto.
+	(initialize_widget_image_instance): fix to use new lisp gui_item.
+	(widget_instantiate_1): allow the setting of default textwidth in
+ 	characters.
+	(widget_instantiate): change to use new widget_instantiate_1
+ 	signature.
+	(combo_instantiate): ditto.
+	(static_instantiate): ditto.
+	(tab_instantiate): new function for tab widgets.
+	(image_instantiator_format_create_glyphs_widget): add tab and tree
+ 	view widgets.
+
+	* menubar-msw.c (displayable_menu_item): convert to use lisp
+ 	gui_items.
+	(populate_menu_add_item): ditto.
+	(populate_or_checksum_helper): ditto.
+
+	* menubar.c (menu_parse_submenu_keywords): convert to use lisp
+ 	gui_items.
+	(Fmenu_find_real_submenu): ditto.
+
+	* gui.h (struct Lisp_Gui_Item): make gui_item a lisp oebjct.
+
+	* gui.c (gui_item_add_keyval_pair): gui_items are now lisp
+ 	objects, convert functions that use them accordingly.
+	(gui_item_init): ditto.
+	(gui_item_active_p): ditto.
+	(gui_item_selected_p): ditto.
+	(gui_item_included_p): ditto.
+	(gui_item_display_flush_left): ditto.
+	(gui_item_display_flush_right): ditto.
+	(mark_gui_item): ditto.
+	(allocate_gui_item): new function to create a gui_item.
+	(make_gui_item_from_keywords_internal): ditto. create and return a
+ 	gui_item as well as setting keywords.
+	(gui_parse_item_keywords): ditto.
+	(gui_parse_item_keywords_no_errors): ditto.
+	(gui_add_item_keywords_to_plist): new function, not yet used.
+	(gui_item_hash): new function.
+	(gui_item_id_hash): use gui_item_hash.
+	(gui_item_equal): new function.
+	(print_gui_item): new function.
+
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.16 is released
+
+1999-06-10  Andy Piper  <andy@xemacs.org>
+
+	* select-msw.c (mswindows_own_selection): only set the clipboard
+ 	if asked.
+	(mswindows_get_foreign_selection): only get the clipboard if
+ 	asked.
+	(mswindows_disown_selection): only disown the clipboard if asked.
+
+1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (coding_system_from_mask): Use `raw-text' instead
+	of `no-conversion'.
+	(complex_vars_of_mule_coding): Use `raw-text' as the coding-system
+	of coding-category `no-conversion'.
+
+1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (Qraw_text): New variable.
+	(syms_of_mule_coding): Add new symbol `raw-text'.
+	(complex_vars_of_mule_coding): Add new coding-system `raw-text';
+	define coding-system `binary' independently; define coding-system
+	`no-conversion' as an alias for `raw-text'.
+
+	* file-coding.h (Qraw_text): New variable.
+
+1999-06-08  SL Baur  <steve@xemacs.org>
+
+	* s/decosf4-0.h: Explicitly #undef SYSTEM_MALLOC.
+
+1999-06-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (MIME_LINE_LENGTH): Default to 72, as in mimencode and
+ 	base64.el.
+	(base64_decode_1): Signal errors instead of returning -1.
+
+1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* mule-charset.c (Fmake_char): Update docstring.
+
+1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fstring_lessp): Actually increment the Bufbyte pointers.
+
+1999-06-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (base64_decode_1): Allow and ignore any non-base64
+ 	characters in input.
+
+1999-05-27  Olivier Galibert  <galibert@pobox.com>
+
+	* emacs.c (Fdump_emacs): Add clear_message() lost with the removal
+	of report_pure_usage().
+
+1999-06-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fstring_lessp): Remove O(n^2) under Mule.
+
+1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.15 is released
+
+1999-06-01  Hirokazu FUKUI  <fukui@atesoft.advantest.co.jp>
+
+	* frame.c (Fset_mouse_position):
+	(Fset_mouse_pixel_position):
+	* window.c (Fsplit_window):
+	(Fmove_to_window_line):
+	Fix crash when invoking functions with an already-deleted window
+	argument.
+
+	* indent.c (vertical_motion_1):
+	(vmotion_pixels):
+	(Fvertical_motion_pixels):
+	* window.c (Fwindow_displayed_text_pixel_height):
+	Fix error message when invoking functions with an already-deleted
+	window argument.
+
+1999-06-01  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* sysdep.c (request_sigio_on_device): Guard against glibc
+	2.1's stub streams implementation.
+
+1999-06-03  SL Baur  <steve@xemacs.org>
+
+	* config.h.in:
+	* emacs.c:  Implement x.y.z version numbers
+	From Jan Vroonhof <vroonhof@math.ethz.ch>
+
+1999-05-20  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* mule-charset.c (complex_vars_of_mule_charset): Registry of
+	japanese-jisx0208-1978 should not match with "jisx0208.1983" nor
+	"jisc6226.1983".
+
+1999-06-03  SL Baur  <steve@xemacs.org>
+
+	* frame-x.c:
+	* device-x.c: rename session option to wmcommand.
+	From Oliver Graf <ograf@rhein-zeitung.de>
+
+1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fsubstring): Don't traverse the same region twice with
+ 	charcount_to_bytecount().
+
+1999-06-03  SL Baur  <steve@steve1.m17n.org>
+
+	* m/alpha.h (SYSTEM_MALLOC): Fix indented preprocessor directive
+	garbage.
+
+	* s/decosf4-0.h: Defining ORDINARY_LINK here is redundant (and it
+	doesn't really work as is implied by the commentary).
+	Don't define SYSTEM_MALLOC so the old GNU malloc can be used.
+
+1999-06-02  SL Baur  <steve@steve1.m17n.org>
+
+	* symsinit.h: Declare vars_of_ntproc.
+	* emacs.c (main_1): Call it.
+
+	* ntproc.c (syms_of_ntproc): Move variable initializations from
+	here ...
+	(vars_of_ntproc): ... to here [new function].
+
+	* file-coding.c (syms_of_file_coding): Rename.
+	(vars_of_file_coding): Ditto.
+	(complex_vars_of_file_coding): Ditto.
+
+	* symsinit.h: Rename *_mule_coding to *_file_coding.
+
+	* emacs.c (main_1): Call them by the proper name.
+
+	* device-msw.c (syms_of_device_mswindows): Move variable
+	initializations from here ...
+	(vars_of_device_mswindows): ... to here.
+
+	* chartab.c (vars_of_chartab): New function.
+
+	* symsinit.h: New function, vars_of_chartab.
+
+	* emacs.c (main_1): Call it.
+
+	* mule-canna.c (syms_of_mule_canna): Move CANNA initialization ...
+	(vars_of_mule_canna): ... to here.
+
+	* mule-ccl.c (vars_of_mule_ccl): New function.  Move variable
+	initializations out of syms_of_mule_ccl.
+
+	* symsinit.h: Declare new function vars_of_mule_ccl.
+
+	* emacs.c (main_1): Call it.
+
+1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (base64_decode_1): Ignore whitespace.
+
+1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* mule-charset.c (Fmake_char): Strip the eighth bit off ARG1 and
+ 	ARG2.
+
+1999-05-21  Andy Piper  <andy@xemacs.org>
+
+	* xselect.c: deleted.
+
+	* symsinit.h: declare select initialisation.
+
+	* select.h: new file. declare commonly used select functions and
+ 	variables.
+
+	* select.c: new file. generalised from xselect.c.
+	(clean_local_selection_data): moved from xselect.c.
+	(get_local_selection): ditto. device specific pieces called via a
+ 	devmeth.
+	(handle_selection_clear): ditto.
+	(Fown_selection_internal): renamed and generalised from
+ 	Fx_own_selection_internal. moved from xselect.c.
+	(Fdisown_selection_internal): ditto.
+	(Fselection_owner_p): ditto.
+	(Fselection_exists_p): ditto.
+	(Fget_selection_internal): ditto.
+	(syms_of_select): new function. QXXXX values moved from xselect.c
+	(vars_of_select): new function. selection_converter_alist,
+ 	lost_selection_hooks moved and renamed from xselect.c
+
+	* select-x.c: renamed from xselect.c.
+ 	(x_own_selection): converted to device specific. non-X-specific
+ 	bits moved to select.c.
+	(x_get_foreign_selection): ditto.
+	(x_disown_selection): ditto.
+	(x_selection_exists_p): ditto.
+	(console_type_create_select_x): new function.
+
+	* select-msw.c (mswindows_own_selection): new device method to set
+ 	the clipboard when we 'own' the selection.
+	(mswindows_get_foreign_selection): new device method to get the
+ 	clipboard.
+	(mswindows_disown_selection): new device method to delete the
+ 	selection when we 'disown' it.
+	(console_type_create_select_mswindows): new function.
+
+	* emacs.c (main_1): add select to things to initialise.
+
+	* console.h (struct console_methods): new console methods for
+ 	selection.
+
+	* Makefile.in.in (x_objs): xselect.c renamed to select-x.c
+
+1999-05-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* print.c (long_to_string): Install a faster version.
+
+1999-05-16  Andy Piper  <andy@xemacs.org>
+
+	* ntproc.c (syms_of_ntproc): default
+ 	win32-start-process-share-console to t.
+
+1999-05-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* config.h.in: Do it here.
+
+	* bytecode.c: Don't define ERROR_CHECK_TYPECHECK here.
+
+1999-05-14  Andy Piper  <andy@xemacs.org>
+
+	* toolbar-msw.c (mswindows_output_toolbar): hash on something
+ 	hashable.
+
+1999-05-14  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.14 is released
+
+1999-05-12  Andy Piper  <andy@xemacs.org>
+
+	* ntproc.c (sys_spawnve): kludge argv[0] in a MS compatible way.
+
+1999-05-11  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* emacs.c (Frun_emacs_from_temacs): (re)alloc natgs+2 entries for
+	run_temacs_argv array -- fixes random memory corruption crash
+
+1999-05-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* window.c (Fcurrent_window_configuration):
+	Save minibuffer height;
+
+	* window.c (set_window_configuration): use it.
+
+1999-05-10  Robert Pluim  <rpluim@bigfoot.com>
+
+	* lisp.h (NNUNGCPRO): fix typo in name of DEBUG_GCPRO version
+
+1999-04-21  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* redisplay.c (redisplay_window): Do not put data
+	in the line start cache if it is not guaranteed to be correct
+
+1999-04-02  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* window.c (struct window_config): Removed frame
+	size members.
+	(window_config_equal): No longer compare frame sizes.
+	(Fset_window_configuration): Resize old top window to fit in the
+	current frame directly, no longer use a fake frame resize.
+	(Fcurrent_window_configuration): No longer save frame size
+
+1999-05-11  Andy Piper  <andy@xemacs.org>
+
+	* ntproc.c (sys_spawnve): actually assign argv[0] instead of the
+ 	first character.
+
+1999-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* sysdep.c (init_system_name): If gethostname gives a proper
+	domain name, don't look further for one.
+
+1999-05-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* symbols.c (Fintern): Avoid frequent XSYMBOL (foo).
+	(Fintern_soft): Accept a symbol argument.
+
+1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* symbols.c (Fintern): ...do it here.
+
+	* lread.c (read_atom): Don't handle keywords here.
+
+1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* symbols.c (reject_constant_symbols): Just use SYMBOL_IS_KEYWORD.
+
+1999-05-03  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp.h (SYMBOL_IS_KEYWORD): A symbol can be a keyword only if it
+	is interned in the main obarray.
+
+1999-04-23  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* menubar-x.c (pre_activate_callback): set accelerator field in
+	"No menu" entries to nil. Avoid crash in
+	command_builder_operate_menu_accelerator
+
+1999-05-03  Olivier Galibert  <galibert@pobox.com>
+
+	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.
+
+	* lisp.h (DEFUN): Fix lrecord header initialisation.
+
+1999-05-02  Andy Piper  <andy@xemacs.org>
+
+	* objects-msw.c (mswindows_font_instance_truename): add a ';'.
+
+	* ntproc.c (sys_kill): cast using MS mandated defines.
+
+1999-04-29  Andy Piper  <andy@xemacs.org>
+
+	* m/intel386.h: remove redundant definitions.
+
+	* s/mingw32.h: new header for mingw32.
+
+	* unexnt.c: (open_input_file): function moved to nt.c.
+	(close_file_data): ditto.
+	(rva_to_section): function moved to ntproc.
+
+	* symsinit.h: declare syms_of_ntproc();
+
+	* objects-msw.c (mswindows_font_instance_truename): new function.
+
+	* ntproc.c: remove many warnings.
+	(_sys_read_ahead): moved from nt.c and made static.
+	(rva_to_section): moved from unexnt.c but not defined under
+ 	mingw32.
+	(win32_executable_type): implement what we can for mingw32
+ 	headers.
+	(sys_spawnve): fix bad MULE/GCPRO bug in filename handling.
+
+	* ntheap.h: remove declarations of functions that are now static.
+
+	* ntheap.c: support static heap.
+
+	* nt.h: conditionalise X_OK definition.
+
+	* nt.c: eliminate many warnings and support mingw32.
+	(open_input_file): function moved from unexnt.c and made static
+	(close_file_data): ditto.
+	(_sys_read_ahead): moved to ntproc.c
+
+	* emacs.c: make sure syms_of_ntptroc gets called under windows.
+
+	* console-msw.h: support mingw32.
+	* getloadavg.c: ditto.
+	* ntplay.c: ditto.
+	* sysdep.c: ditto.
+	* sysdir.h: ditto.
+	* systime.h: ditto.
+	* systty.h: ditto.
+
+	* config.h.in: dont turn on DEBUG_ENCAPSULATION by default because
+ 	some systems don't have all of the encapsulated system calls.
+
+	* callproc.c: warning elimination.
+	* dired-msw.c: ditto.
+	* process-nt.c: ditto.
+	* realpath.c: ditto.
+
+	* Makefile.in.in: tweak : and ; for building under mswindows.
+
+1999-04-26  Michael Harnois  <mharnois@willinet.net>
+
+	* eldap.c (allocate_ldap): Adapt to the new semantics of
+	alloc_lcrecord_type().
+
+1999-03-16  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+	* file-coding.c (DECODE_HANDLE_END_OF_CONVERSION): fixed.
+
+1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* Delete mule-coding.c and mule-coding.h because they are not
+	used.
+
+1999-04-22  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* objects.c (print_font_instance): Check for NILP(f->device),
+	i.e. Vthe_null_font_instance.
+	(font_instance_truename_internal): ditto.
+	(Ffont_instance_properties): ditto.
+
+1999-04-22  Olivier Galibert  <galibert@pobox.com>
+
+	* lrecord.h (DECLARE_LRECORD): lrecord_implementation isn't an
+	array anymore.
+
+1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* Makefile.in.in (tests): Don't mention tests explicitly -- makes
+	it easier to add new ones.
+
+1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* symbols.c (reject_constant_symbols): Ditto.
+	(init_symbols_once_early): Ditto.
+
+	* print.c (print_symbol): Don't use ->obarray.
+
+	* symbols.c (Funintern): Ditto.
+
+	* alloc.c (Fmake_symbol): Don't set ->obarray.
+
+	* lisp.h (struct Lisp_Symbol): Removed .obarray field.
+
+	* symbols.c (init_symbols_once_early): Removed
+ 	Vpure_uninterned_symbol_table.
+	(Fintern): Don't store to ->obarray field.
+
+1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* data.c (vars_of_data): Default debug_issue_ebola_notices to 0.
+	(eq_with_ebola_notice): Remove abracadabra support.
+
+1999-04-11  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (Fldap_search_internal): Add a new parameter `withdn' to
+ 	retrieve the distinguished names of entries
+
+1999-03-08  Martin Buchholz  <martin@xemacs.org>
+
+	* lread.c (read_escape): Make hex escapes read only two hex digits.
+
+1999-04-05  Olivier Galibert  <galibert@pobox.com>
+
+	* Makefile.in.in: Remove puresize-adjust.h and recursive makes.
+	* make-src-depend: Remove puresize-adjust.h.
+	* src-headers: Remove puresize-adjust.h.
+	* config.h.in: Kill everything purespace/gung-ho related.
+
+	* dbxrc: Make gung-ho mandatory.
+	* gdbinit: Ditto.
+
+	* lrecord.h: Make gung-ho mandatory.  Remove pure flag and add
+ 	c_readonly and lisp_readonly.  Remove implementation arrays.
+	(C_READONLY_RECORD_HEADER_P): Added.
+	(LISP_READONLY_RECORD_HEADER_P): Added.
+	(SET_C_READONLY_RECORD_HEADER): Added.
+	(SET_LISP_READONLY_RECORD_HEADER): Added.
+
+	* lisp.h: Kill everything purespace/non gung-ho related.
+	(CHECK_C_WRITEABLE): Added.
+	(CHECK_LISP_WRITEABLE): Added.
+	(C_READONLY): Added.
+	(LISP_READONLY): Added.
+
+	* lisp-union.h: Make gung-ho mandatory.
+	* lisp-disunion.h: Ditto.
+
+	* alloc.c: Kill everything purespace/non  gung-ho related. Fix all
+ 	set_lheader_implementation calls.
+	(c_readonly): Added.
+	(lisp_readonly): Added.
+	(make_string_nocopy): Added.
+	(Fpurecopy):  Changed to do  nothing.   Kept the old documentation
+ 	for reference purposes for the next patches.
+	(sweep_lcrecords_1): Don't free C readonly lcrecords.
+	(sweep_bit_vectors_1): Don't free C readonly bitvectors.
+	(SWEEP_FIXED_TYPE_BLOCK): Don't free C readonly lrecords.
+
+	* fns.c: Make gung-ho mandatory.
+ 	(Fput): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
+	(Fremprop): Ditto.
+	(Ffillarray): Ditto.
+
+	* data.c: Make gung-ho mandatory.
+	(pure_write_error): Removed.
+	(c_write_error): Added.
+	(lisp_write_error): Added.
+	(Fsetcar): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
+	(Fsetcdr): Ditto.
+	(Faset): Ditto.
+
+	* symbols.c: Make gung-ho mandatory.  make_pure_pname ->
+ 		  make_string or make_string_nocopy.  Fix various
+	 	  alloc_lcrecord_type.
+
+	* lread.c: Remove everything purespace related.
+	(Flocate_file_clear_hashing): purified -> c_readonly.
+	(locate_file): Ditto.
+	(read_atom): make_pure_pname -> make_string.
+
+	* emacs.c (Frun_emacs_from_temacs): Remove purespace stats
+ 		  reporting.
+	(Fdump_emacs): Ditto.
+
+	* print.c (print_internal): Make gung-ho mandatory.
+	* ntheap.c (sbrk): Ditto.
+	* mem-limits.h (EXCEEDS_LISP_PTR): Ditto
+	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.
+
+	* sheap.c (more_static_core): Remove puresize-adjust.h from
+ 		  message.
+
+	* syntax.c (complex_vars_of_syntax): make_pure_string ->
+ 		  make_string_nocopy.
+	* keymap.c (make_keymap): Fix alloc_lcrecord_type.
+	(vars_of_keymap): make_pure_string -> make_string_nocopy.
+	* events.c (deinitialize_event): Fix set_lheader_implementation.
+	(zero_event): Ditto.
+	* specifier.c (make_specifier_internal): Fix alloc_lcrecord.
+	* menubar-x.c (set_frame_menubar): Fix alloc_lcrecord_type.
+	* mule-charset.c (make_charset): Ditto.
+	* console.c (allocate_console): Ditto.
+	(complex_vars_of_console): Ditto.
+	* file-coding.c (allocate_coding_system): Ditto.
+	* device.c (allocate_device): Ditto
+	* gui-x.c (gcpro_popup_callbacks): Ditto.
+	* extents.c (allocate_extent_auxiliary): Ditto.
+	(allocate_extent_info): Ditto.
+	(copy_extent): Ditto.
+	* glyphs.c (allocate_image_instance): Ditto.
+	(allocate_glyph): Ditto.
+	* frame.c (allocate_frame_core): Ditto.
+	* database.c (allocate_database): Ditto.
+	* tooltalk.c (make_tooltalk_message): Ditto.
+	(make_tooltalk_pattern): Ditto.
+	* rangetab.c (Fmake_range_table): Ditto.
+	(Fcopy_range_table): Ditto.
+	* process.c (make_process_internal): Ditto.
+	* chartab.c (Fmake_char_table): Ditto.
+	(make_char_table_entry): Ditto.
+	(copy_char_table_entry): Ditto.
+	(Fcopy_char_table): Ditto.
+	* elhash.c (make_general_lisp_hash_table): Ditto.
+	(Fcopy_hash_table): Ditto.
+	* buffer.c (allocate_buffer): Ditto.
+	(complex_vars_of_buffer): Ditto.
+	* event-stream.c (allocate_command_builder): Ditto.
+	* objects.c (Fmake_color_instance): Ditto.
+	(Fmake_font_instance): Ditto.
+	(vars_of_objects): Ditto.
+	* toolbar.c (update_toolbar_button): Ditto.
+	* window.c (allocate_window): Ditto.
+	(make_dummy_parent): Ditto.
+	(Fcurrent_window_configuration): Fix alloc_lcrecord.
+	(vars_of_window): Fix make_lcrecord_list.
+	* faces.c (allocate_face): Fix alloc_lcrecord_type. pure_list ->
+ 		  Flist.
+	* lstream.c (Lstream_new): Fix make_lcrecord_list.
+	* opaque.c (make_opaque): Fix alloc_lrecord.
+	(make_opaque_list): Fix alloc_lrecord_type.
+
+1999-04-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* process.c (Fstart_process_internal): Ditto.
+
+	* ntproc.c (sys_spawnve): Use Vlisp_EXEC_SUFFIXES when calling
+ 	locate_file().
+
+	* glyphs-x.c (x_locate_pixmap_file): Ditto.
+
+	* glyphs-msw.c (mswindows_locate_pixmap_file): Fix call to
+ 	locate_file().
+
+	* emodules.c (vars_of_module): New variable Vmodule_extensions.
+	(emodules_load): Use it when calling locate_file().
+
+	* emacs.c (main_1): Use Vlisp_EXEC_SUFFIXES when calling
+ 	locate_file().
+
+	* callproc.c: Vlisp_EXEC_SUFFIXES: New variable.
+	(vars_of_callproc): Initialize it.
+	(Fcall_process_internal): Use it when calling locate_file().
+
+	* alloc.c (disksave_object_finalization): Use
+ 	Flocate_file_clear_hashing().
+
+	* lread.c (Flocate_file_clear_hashing): Clear all hasing when
+	given `t' as argument.
+
+1999-04-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* lread.c (locate_file): Expand `pathel' when appropriate.
+	(Flocate_file_clear_hashing): Expand path elements.
+	(Flocate_file_clear_hashing): Use Vlocate_file_hash_table.
+
+	* dired.c (make_directory_hash_table): Create the hash-table only
+	if the directory open is successful.
+
+	* lread.c (decode_mode_1): New function.
+	(decode_mode): Ditto.
+	(Flocate_file): Use them.
+	(Flocate_file): Expand FILENAME.
+	(locate_file_map_suffixes): New function.
+	(locate_file_in_directory_mapper): New function.
+	(locate_file_in_directory): Use locate_file_in_directory_mapper()
+ 	and locate_file_map_suffixes().
+	(locate_file_construct_suffixed_files): Use
+ 	locate_file_map_suffixes().
+	(locate_file_without_hash): Don't GCPRO path.
+	(Flocate_file_clear_hashing): Use EXTERNAL_LIST_LOOP.
+	(syms_of_lread): Remove Qlocate_file_hash_table.
+	(locate_file_find_directory_hash_table): Use
+ 	Vlocate_file_hash_table.
+	(locate_file_refresh_hashing): Ditto.
+
+	* lread.c: Renamed read_objects to Vread_objects.
+
+1999-04-16  Olivier Galibert  <galibert@pobox.com>
+
+	* mule-charset.c: Generally resync with fsf 20.3 charset
+ 	interface.
+	(make_charset): Add long and short name.  Use id instead of
+ 	leading byte.
+	(Fmake_charset): Ditto.
+	(Fmake_reverse_direction_charset): Ditto.
+	(Fcharset_property): Ditto.
+	(Fcharset_short_name): Added.
+	(Fcharset_long_name): Added.
+	(Fcharset_description): Renamed from charset-doc-string.
+	(syms_of_mule_charset): Synced symbols.
+	(complex_vars_of_mule_charset): Synced charsets.
+
+	* mule-charset.h: Removed leading byte (uses id instead), added
+ 	short and long name.
+
+1999-04-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* file-coding.c (Fdefine_coding_system_alias): New function.
+
+1999-04-08  Olivier Galibert  <galibert@pobox.com>
+
+	* mule-charset.c (complex_vars_of_mule_charset): Allow all iso8859
+ 	and -ascii fonts for displaying ascii instead of iso8859-1 only.
+
+1998-12-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* extents.c (set_extent_glyph_1): Make sure that the glyph we
+	attach to the extent is valid.
+
+1998-12-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* dired.c (user_name_completion): Mule-ize.
+	(user_name_completion): Use xmalloc/xrealloc/xfree.
+	(user_name_completion): Use DO_REALLOC.
+	(user_name_completion): Cut down the number of static variables;
+ 	use a structure.
+	(user_name_completion): Username completion is always
+ 	case-sensitive.
+
+1998-12-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (base64_decode_1): Remove COUNTER.
+	(base64_decode_1): Accept CRLF in addition to CR.
+	(base64_decode_1): Disallow a stray character after final EOF; the
+	check was probably a remnant of buggy recode code.
+
+1998-12-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (init_provide_once): Provide `base64'.
+
+1998-12-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (XMALLOC_UNBIND): Include SPECCOUNT argument, for clarity.
+	(Fbase64_encode_region): If buffer is read-only, bail out early.
+	(Fbase64_decode_region): Ditto.
+	(Fbase64_encode_region): Initialize SPECCOUNT to pacify the
+ 	compiler.
+	(Fbase64_encode_string): Ditto.
+	(Fbase64_decode_region): Ditto.
+	(Fbase64_decode_string): Ditto.
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* dired.c (Fdirectory_files): Remove redundant code.
+
+1999-03-05  Philip Aston  <philipa@parallax.co.uk>
+
+	* frame-msw.c Make raise-frame restore minimised windows.
+
+1999-03-05  Philip Aston  <philipa@parallax.co.uk>
+
+	* device-msw.c: Fix DEFVAR format - Death to phantom quote, and
+ 	add magic newline.
+
+1999-03-05  Philip Aston  <philipa@parallax.co.uk>
+
+	* toolbar-msw.c Consider captions when deciding whether to rebuild
+ 	toolbar. This fixes the initial toolbar display for those of us
+ 	who don't like captions. These patches applied by Andy Piper.
+
+1999-03-12  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.13 is released
+
+1999-03-12  SL Baur  <steve@xemacs.org>
+
+	* file-coding.c: Guard ucs table initialization with ifdef MULE.
+
+1999-03-10  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>
+
+	* file-coding.c:  docstring and comment improvements.
+	(decode_ucs4)  flag possible data loss with comment.
+
+1999-03-10  Martin Buchholz  <martin@xemacs.org>
+
+	* file-coding.c (Fset_ucs_char): add CHECK_INT, CHECK_CHAR
+	(ucs_to_char):
+	(Fucs_char):
+	(Fset_char_ucs):
+	(decode_coding_ucs4):
+	(encode_coding_ucs4):
+	(detect_coding_utf8):
+	(decode_coding_utf8):
+	(encode_utf8):
+	(encode_coding_utf8):
+	Add CHECK_* macros where needed to avoid crashes.
+	#ifdef out all composite character support using
+	#ifdef ENABLE_COMPOSITE_CHARS
+	Use normal XEmacs coding standards.
+	Fix docstrings.
+	Remove CODING_STREAM_COMPOSE, CODING_STREAM_DECOMPOSE.
+
+1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (make-coding-system): Add description about
+	`ucs-4' and `utf-8'.
+	(detection_state): Modify to implement ucs-4 and utf-8.
+	(detect_coding_type): Likewise.
+	(detect_coding_ucs4): New implementation.
+	(detect_coding_utf8): New implementation.
+	(encode_utf8): fixed.
+	(syms_of_mule_coding): Rename `ucs4' and `utf8' to `ucs-4' and
+	`utf-8'.
+
+1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (mule_char_to_ucs4): Encode 94x94 chars in ISO
+	2022 registry to private area.
+
+1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (encode_utf8): New function.
+	(encode_coding_utf8): New implementation.
+
+1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (ucs_to_mule_table): New variable; abolish
+	`Vucs_to_mule_table'
+	(mule_to_ucs_table): renamed from `Vmule_to_ucs_table'.
+	(set-ucs-char): New function.
+	(ucs_to_char): New function.
+	(ucs-char): New function.
+	(set-char-ucs): New function.
+	(char-ucs): New function.
+	(decode_ucs4): Use `ucs_to_char'.
+	(complex_vars_of_mule_coding): Abolish `ucs-to-mule-table' and
+	`mule-to-ucs-table'.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* chartab.h: EXFUN `Fget_char_table'.
+
+	* file-coding.c (encode_ucs4): New function.
+	(encode_coding_ucs4): Use `encode_ucs4'.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (decode_coding_ucs4): New implementation.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (decode_coding_ucs4): fixed.
+
+	* file-coding.c (Vmule_to_ucs_table): New variable.
+	(mule_char_to_ucs4): New function.
+	(encode_coding_ucs4): New implementation.
+	(complex_vars_of_mule_coding): Define variable
+	`mule-to-ucs-table'.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (decode_coding_utf8): New implementation.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (decode_coding_utf8): fixed.
+
+1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (Vucs_to_mule_table): New variable.
+	(decode_ucs4): Refer `Vucs_to_mule_table'.
+	(complex_vars_of_mule_coding): Define variable
+	`ucs-to-mule-table'.
+
+1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* file-coding.c (detect_coding_ucs4): New function (not
+	implemented yet).
+	(decode_coding_ucs4): New function.
+	(encode_coding_ucs4): New function (not implemented yet).
+	(detect_coding_utf8): New function (not implemented yet).
+	(decode_coding_utf8): New function.
+	(encode_coding_utf8): New function (not implemented yet).
+	(make-coding-system): New type `ucs4' and `utf8'.
+	(coding-system-type): Likewise.
+	(detection_state): Add `ucs4' and `utf8'.
+	(detect_coding_type): Likewise.
+	(mule_decode): Use `decode_coding_ucs4' and `decode_coding_utf8'.
+	(mule_encode): Use `encode_coding_ucs4' and `encode_coding_utf8'.
+	(decode_ucs4): New function (very incomplete).
+	(syms_of_mule_coding): Add `ucs4' and `utf8'.
+
+	* file-coding.h: Add definitions for UCS-4 and UTF-8.
+
+1999-03-08  Martin Buchholz  <martin@xemacs.org>
+
+	* mule-charset.c:
+	(non_ascii_valid_char_p):
+	(lookup_composite_char):
+	(composite_char_string):
+	(make-composite-char):
+	(composite-char-string):
+	(syms_of_mule_charset):
+	(complex_vars_of_mule_charset):
+	* mule-charset.h (LEADING_BYTE_COMPOSITE):
+	(CHAR_LEADING_BYTE):
+	(MAKE_CHAR):
+	* file-coding.h (CODING_STATE_COMPOSITE):
+	(CODING_STATE_ISO2022_LOCK):
+	(iso_esc_flag):
+	(LEADING_BYTE_COMPOSITE):
+	* file-coding.c (struct iso2022_decoder):
+	(decoding_closer):
+	(reset_iso2022):
+	(parse_iso2022_esc):
+	(encode_coding_iso2022):
+	#ifdef out all composite character support using
+	#ifdef ENABLE_COMPOSITE_CHARS
+
+	* alloc.c: Define lrecord_coding_system only if ! FILE_CODING
+
+1999-03-04  Takeshi YAMADA <yamada@cslab.kecl.ntt.co.jp>
+
+	* fns.c (Fbase64_encode_string): Calculate `allength' in the same
+	way of `Fbase64_encode_region'.
+
+1999-02-18  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* fns.c (base64_encode_1): Don't add a newline at the tail.
+
+1999-03-08  Andy Piper  <andy@xemacs.org>
+
+	* menubar-msw.c (displayable_menu_item): correct off-by-one &
+	handling.
+
+1999-03-07  Martin Buchholz  <martin@xemacs.org>
+
+	* console-stream.h (struct stream_console):
+	* event-unixoid.c (event_stream_unixoid_select_console):
+	(event_stream_unixoid_unselect_console):
+	* print.c (Fexternal_debugging_output):
+	* sysdep.c (reset_one_device):
+	* console-stream.c (stream_init_console):
+	(stream_delete_console):
+	(allocate_stream_console_struct): move into stream_init_console.
+	(free_stream_console_struct): move into stream_delete_console.
+	Use `fd' only for file descriptors.
+	Therefore, rename members of struct stream_console.
+
+	* systime.h: Unix98 says sys/time.h should define select(), but
+	some systems define that in unistd.h.  So include that file always.
+
+	* glyphs.h (MAYBE_IIFORMAT_METH): Don't use leading `_'.  Avoid
+	multiple evaluation of first arg.  Do proper do {} while (0) wrapping.
+	(HAS_IIFORMAT_METH_P): Prevent macro from being used in
+	non-boolean context
+	(MAYBE_IIFORMAT_DEVMETH): Use standard internal macro naming convention.
+
+	* EmacsShell.c:
+	* balloon_help.c:
+	Add #include <stdio.h>.
+	Some versions of assert.h use printf() without #include'ing stdio.h
+
+	* free-hook.c (blocktype): Add gcpro5_type to blocktype.
+	(log_gcpro): Remove unused variable FRAME.
+	(show_gcprohist): Ansify.
+	Comment the #endif's
+
+	* frame-x.c (x_delete_frame): Don't use FRAME_X_SHELL_WIDGET(f)
+	after it's just been XtDestroy'ed!
+
+1999-02-18  Martin Buchholz  <martin@xemacs.org>
+
+	* opaque.c (print_opaque):
+	(sizeof_opaque):
+	(equal_opaque):
+	(hash_opaque):
+	Egcs 1.1.1 seems to have a bug where
+	INTP (p->size_or_chain)
+	will crash XEmacs.  Fix by introducing intermediate variable.
+
+	* sound.c (Fdevice_sound_enabled_p): Fix compiler warning.
+
+	* dired.c (Fdirectory_files):
+	(Ffile_name_completion):
+	(Ffile_name_all_completions):
+	(file_name_completion):
+	- Use `directory' instead of `dirname' to sync with FSF Emacs and
+	avoid compiler warnings.
+	- Fix up docstrings so that C variables match documentation.
+
+1999-03-05  Martin Buchholz  <martin@xemacs.org>
+
+	* alloc.c: (garbage_collect_1): Reorg code to make scope of local
+	variables as small as possible to help out the compiler and the maintainer.
+
+	* alloc.c: (disksave_object_finalization):
+	Set all the *-load-path variables to
+	nil, not just load-path itself.  This gets the locate-file hash
+	tables garbage collected BEFORE dump, and has the side effect of
+	preventing crashes on OSF4.0+egcs.
+
+	* alloc.c:
+	* gdbinit:
+	* dbxrc:
+	- Clean up gdb/dbx debugging support.
+	- Storing an EMACS_INT in an enum is not 64-bit clean!
+	- So change the enum to a set of separate variables.
+	- Add test cases to help debug the debugging support!
+	- Add `lisp-shadows' and `run-temacs' targets for dbx.
+	- Both dbx and gdb have been tested now.
+
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.12 is released
+
+1999-02-16  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
+
+	* device-x.c: Support to find best visual without flashing.
+
+1999-03-02  Paul Keusemann  <pkeusem@visi.com>
+
+	* database.c (berkdb_map): Add flags argument to cursor call (must
+	  be 0 according to docs) required for Berkeley DB 2.6.4 and later.
+
+1999-03-03  Martin Buchholz  <martin@xemacs.org>
+
+	* hash.c:
+	* hash.h:
+	General cleanup.  Get free-hook.c working again.
+	Remove unused functions:
+	make_strings_hash_table, copy_hash, expand_hash_table.
+
+	* malloc.c:
+	* mem-limits.h:
+	Always use new ANSI-style function prototypes.
+
+	* unexalpha.c (unexec): Never use implicit int.
+
+	* sgiplay.c (close_sound_file):
+	(play_sound_file):
+	(restore_audio_port):
+	(play_sound_data):
+	(audio_initialize):
+	(play_internal):
+	(drain_audio_port):
+	(write_mulaw_8_chunk):
+	(write_linear_chunk):
+	(write_linear_32_chunk):
+	(initialize_audio_port):
+	(open_audio_port):
+	(set_channels):
+	(set_output_format):
+	(adjust_audio_volume):
+	(get_current_volumes):
+	(parse_snd_header):
+	Always use new ANSI-style function prototypes.
+	Use unistd.h for missing prototypes.
+
+	* unexelfsgi.c (round_up):
+	(find_section):
+	(unexec): Always use new ANSI-style function prototypes
+
+	* elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio
+
+	* console.h (struct console_methods): Always use full ANSI prototypes
+
+	* emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes
+
+1999-03-02  Andy Piper  <andy@xemacs.org>
+
+	* event-stream.c (init_event_stream): make sure native mswindows
+ 	gets an appropriate event loop.
+
+1999-02-22  Andy Piper  <andy@xemacs.org>
+
+	* frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather
+	than SW_SHOWNORMAL to prevent resizing of maximised frames.
+	(mswindows_raise_frame): remove comment.
+
+1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.11 is released
+
+1999-02-25  SL Baur  <steve@xemacs.org>
+
+	* mule-charset.c (Qleading_byte): New variable to implement
+	charset-leading-byte function.
+	(Fcharset_property): Use it.
+	(syms_of_mule_charset): Initialize it.
+	From Kazuyuki IENAGA <ienaga@jsys.co.jp>
+
+1999-02-17  Kazuo Oishi <oishi@ae.agr.yamaguchi-u.ac.jp>
+
+	* glyphs-x.c (cononvert_EImage_to_XImage): correct
+	bytes per pixel counting.
+
+1999-02-15  Andy Piper  <andy@xemacs.org>
+
+	* s/cygwin32.h (BROKEN_SIGIO): don't define this as it causes
+	major lockups.
+
+1999-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+	* fns.c (Fbase64_encode_string): New optional argument
+	`NO_LINE_BREAK'.
+
+1999-02-16  Martin Buchholz  <martin@xemacs.org>
+
+	* gdbinit:  Fix up commands to run temacs.  Add lisp-shadows command.
+	* alloc.c (xcalloc):  undef xcalloc, just like xmalloc
+
+1999-02-10  Martin Buchholz  <martin@xemacs.org>
+
+	* s/bsdos4.h: New file.  Port to BSDI BSD/OS 4.0.
+	* xintrinsic.h:  Redo CONST support for X11 R4 compatibility.
+
+1999-02-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.10 is released
+
+1999-02-02  Gleb Arshinov  <gleb@cs.stanford.edu>
+
+	* process-nt.c (nt_send_process):
+ 	Fix for process-send-region/process-send-string breaking when size
+	of the input > 128 chars: change maximum chunk size for process
+	stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer
+	succeeds.
+
+1999-02-02  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.9 is released
+
+1999-01-30  Martin Buchholz  <martin@xemacs.org>
+
+	* bytecode.c (funcall_compiled_function): Call
+	UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY.
+
+	* backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
+	#ifdef 0 out unused macro.
+
+1999-01-27  Martin Buchholz  <martin@xemacs.org>
+
+	* gui.c (gui_parse_item_keywords_internal): Make static.
+
+1999-01-21  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c: add xface support.
+	(mswindows_xface_instantiate): new function copied from glyphs-x.c
+	(image_instantiator_format_create_glyphs_mswindows): do device
+ 	specific initialisation for xfaces.
+	(xbm_create_bitmap_from_data): line data must be padded to a word
+ 	boundary.
+
+	* glyphs-x.c (xface_validate): moved to glyphs.c
+	(xface_normalize): ditto.
+	(xface_possible_dest_types): ditto.
+	(image_instantiator_format_create_glyphs_x): do device specific
+ 	initialisation for xfaces.
+
+	* glyphs.h: declare xface symbol.
+
+	* glyphs.c: move generic xface support here.
+	(xface_validate): moved from glyphs-x.c
+	(xface_normalize): ditto.
+	(xface_possible_dest_types): ditto.
+	(image_instantiator_format_create): xface declarations moved from
+ 	glyphs-x.c.
+
+1999-01-14  Adrian Aichner  <adrian@xemacs.org>
+
+	* event-stream.c (vars_of_event_stream): Fixing documentation.
+
+1999-01-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* glyphs-eimage.c (gif_instantiate): Correct handling of
+	interlaced gifs to avoid writing past the end of the eimage
+	buffer.
+
+1999-01-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* search.c (Freplace_match): Handle single backslash at end of
+	NEWTEXT correctly.
+
+1999-01-12  William M. Perry  <wmperry@aventail.com>
+
+	* eldap.c (Fldap_open): slow down interrupts around ldap_open to
+	  avoid connection errors.
+
+1999-01-12  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_update_line): backout change that
+ 	shouldn't have gone ine.
+
+1999-01-09  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (vars_of_ldap): Do no provide `ldap' here since it may
+ 	collide with ldap.el
+
+1999-01-11  Andy Piper  <andy@xemacs.org>
+
+	* redisplay.h (DISPLAY_LINE_HEIGHT): new macro.
+	(DISPLAY_LINE_YPOS): new macro.
+
+	* redisplay-msw.c (mswindows_output_string): use it.
+	(mswindows_output_pixmap): ditto.
+	(mswindows_output_display_block): ditto.
+
+	* redisplay-output.c (redisplay_output_display_block): new
+ 	function. just call the devmeth, maybe insert some generic code
+ 	here later.
+	(compare_display_blocks): use it.
+	(output_display_line): ditto.
+	(redisplay_unmap_subwindows_maybe): new function. potentially
+ 	unmap subwindows in the given area.
+
+	* glyphs.c (reset_subwindow_cachels): unmap subwindows that we are
+ 	resetting.
+
+1999-01-10  J. Kean Johnston  <jkj@sco.com>
+
+	* Makefile.in.in: Set value of moduledir
+	- Changed DUMPENV to include $(MODULEPATH)
+	- Added install rule to install header files for use by ellcc.
+
+	* config.h.in: Added INHIBIT_SITE_MODULES
+	- Added HAVE__DLERROR
+	- Added HAVE_DLFCN_H
+	- Added DLSYM_NEEDS_UNDERSCORE
+
+	* dll.c: Removed.
+
+	* emodules.c: New file containing dynamic loading code.
+
+	* emodules.h: New file.
+
+	* emacs.c: Added variables Vmodule_directory,
+	Vsite_module_directory, Vconfigure_module_directory and
+	Vconfigure_site_module_directory.
+	- (main_1): Added new variable inhibit_site_modules and command
+	line options `-no-site-modules' and `--no-site-modules'.
+	- (main_1): Call syms_of_module() instead of syms_of_dll().
+	- (main_1): Call vars_of_module().
+	- (vars_of_emacs): Introduce inhibit-site-modules,
+	module-directory, configure-module-directory,
+	site-module-directory, and configure-site-module-directory to the
+	Lisp reader.
+
+	* lisp.h: Declare load_module and list_modules, as well as
+	Vmodule_directory, Vsite_module_directory,
+	Vconfigure_module_directory and Vconfigure_site_module_directory.
+
+	* paths.h.in: Added PATH_MODULESEARCH and PATH_SITE_MODULES.
+	- Added correct support for site-lisp directory.
+
+	* symbols.c (defsubr): Modified to allow modules to add new subrs
+	after dump time.
+	- (defsubr_macro): Same.
+	- (defvar_magick): Only use purespace when not initialized, so
+	that loaded modules can still add symbols.
+
+	* symsinit.h: Add definitions for syms_of_module(),
+	vars_of_module().  Removed syms_of_dll().
+
+	* sysdll.c: Include dlfcn.h if HAVE_DLFCN_H is defined.
+	- (dll_variable): Take DLSYM_NEEDS_UNDERSCORE into account.
+	- (dll_error): use _dlerror() if HAVE__DLERROR is defined.
+
+	* s/sco5-shr.h (C_SWITCH_SYSTEM): Correct for modern gcc and
+	explicitly pass -belf for native cc.
+
+	* s/sco5.h (LIB_GCC): Use -print-libgcc-file-name instead of
+	hard-coding the library name.
+
+1999-01-01    <martin@xemacs.org>
+
+	* device-x.c (Fx_set_font_path):
+	Add proper cast to permit compilation under C++.
+
+	* buffer.c (directory_is_current_directory):
+	Add proper casts to permit compilation under C++.
+
+1998-12-30  Damon Lipparelli  <lipp@primus.com>
+
+	* event-msw.c (mswindows_wnd_proc):
+	  Fixed failure when building with MSVC 5.
+
+1998-12-29  Martin Buchholz  <martin@xemacs.org>
+
+	* file-coding.c (decode_coding_iso2022):
+	- Prevent crash when decoding ISO7/Lock detected files
+	- the usual martin fiddling
+
+1998-12-29  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c:
+	  glyphs-msw.c:
+	  Fixed failures when building with MSVC.
+	* unexnt.c (dump_bss_and_heap):
+	  Removed compiler warning by removing bss_data variable.
+
+1998-12-18  Jim Radford  <radford@robby.caltech.edu>
+
+	* device-x.c (Fx_set_font_path, Fx_get_font_path): New functions
+ 	so that packages that distribute their own fonts can access them.
+
+1998-12-28  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (mswindows_button_instantiate): cope with buttons
+ 	that have an image provided.
+
+	* glyphs.h: add Q_image decl.
+
+	* glyphs-widget.c new functionality allowing images in
+ 	widgets.
+ 	(check_valid_glyph_or_image): new function to validate
+ 	glyphs passed in through :image.
+	(widget_normalize): new function. convert :image parameters into
+ 	real glyphs if not already so.
+	(widget_instantiate_1): mess with size parameters to be similar to
+ 	:image if provided.
+	(syms_of_glyphs_widget): new keyword :image.
+	(image_instantiator_format_create_glyphs_widget): normalize
+ 	buttons and allow :image.
+
+1998-12-27  Andy Piper  <andy@xemacs.org>
+
+	* frame-msw.c (mswindows_init_frame_1): warning elimination.
+
+	* glyphs-widget.c (check_valid_anything): no-op function.
+	(check_valid_callback): check callbacks in gui_items.
+	(check_valid_symbol): as it sounds.
+	(check_valid_string_or_vector): ditto.
+	(widget_validate): modified for descriptors that are vectors or
+ 	sequences of keyword/val pairs.
+	(widget_instantiate_1): ditto.
+	(image_instantiator_format_create_glyphs_widget): allow gui_item
+ 	keywords in the instantiator.
+
+	* gui.c (gui_parse_item_keywords_internal): renamed from
+ 	gui_parse_item_keywords but taking error behaviour.
+	(gui_parse_item_keywords): use it.
+	(gui_parse_item_keywords_no_errors): ditto.
+	(gui_item_add_keyval_pair): add Error_behavior flag and only
+ 	signal invalid keywords if required.
+
+	* gui.h: new gui signatures.
+
+	* menubar.c (menu_parse_submenu_keywords): use new
+ 	gui_item_add_keyval_pair signature.
+
+	* s/cygwin32.h: modify PTY_ITERATION to eliminate warnings.
+
+1998-12-28  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.8 is released.
+
+1998-12-28  Martin Buchholz  <martin@xemacs.org>
+
+	* editfns.c (get_home_directory):
+	(user-home-directory): Simplify.
+
+
+	* callproc.c (child_setup):
+	- Environment variables were being passed to inferior processes
+	  using internal encoding.
+	- Convert to external encoding.
+	- Rename local var `tem' to better name `tail'.
+	- Use Flength instead of `manual' calculation.
+
+	* buffer.c (kill-buffer):
+	(record-buffer):
+	(set-buffer-major-mode):
+	(current-buffer):
+	- Fix up parameter names to correspond to docstrings.
+	- Don't use `bufname' when a buffer will do as well.
+	- Remove one unneeded GCPRO.
+
+	* buffer.h (initial_directory):
+	* buffer.c (init_initial_directory):
+	- use correct conversions between internal and external format.
+	(directory_is_current_directory): new function
+	(init_buffer): convert initial_directory to internal format.
+	- solve crashes when current working directory is non-ASCII.
+
+	* alloc.c (xmalloc):
+	(xcalloc):
+	(xrealloc):
+	- remove stupid casts, since XEmacs requires an ANSI C system.
+	(lrecord_type_index): replace abort() with more readable assert().
+
+	(reset_lcrecord_stats): remove.
+	(sweep_lcrecords_1):
+	- replace call to reset_lcrecord_stats() with call to xzero().
+
+1998-12-27  Martin Buchholz  <martin@xemacs.org>
+
+	* process-unix.c (unix_create_process):
+	- Fix crash invoking program with non-ASCII name.
+	  Try invoking xemacs with SHELL=/bin/sh, then M-x shell.
+	- Remove unused variable `env'.
+	- Rename `temp' to better name `save_errno'.
+	- Reorganize code for clarity.  But still too chicken to nuke the
+	  BSD 4.2 support.
+
+1998-12-24  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.7 is released.
+
+1998-12-23  Martin Buchholz  <martin@xemacs.org>
+
+	* glyphs.c (decode_device_ii_format):
+	- Fix indentation.
+	- Use GET_C_STRING_FILENAME_DATA_ALLOCA with char *, not Extbyte *.
+
+	* glyphs-x.c (x_subwindow_instantiate):
+	- A image instance mask was being assigned to a image instance type!
+	- X_SUBWINDOW_INSTANCE_DATA (ii) is not an lvalue in C++.
+
+	* glyphs-msw.c (mswindows_initialize_dibitmap_image_instance):
+	Fix indentation.
+	* glyphs-x.h: Make indentation consistent.
+
+	* emacs.c (Fdump_emacs): Remove Steve Martin merge artifacts.
+
+	* glyphs-widget.c (check_valid_glyph): Warning suppression.
+	- Make it static
+	- #ifdef it out, since it's not actually used yet (FIX THIS!)
+
+	* glyphs-widget.c:
+	* glyphs.h:
+	Move declarations of decode_device_ii_format and
+	decode_image_instantiator_format into glyphs.h where they belong.
+
+1998-12-22  Martin Buchholz  <martin@xemacs.org>
+
+	* frame-x.c (x_delete_frame): Revert part of my changes at the
+	suggestion of Gunnar Evermann - unfortunately no one really
+	understands this code.
+
+	* callproc.c (init_callproc): code cleanup.
+
+	* free-hook.c (malloc):
+	(check_malloc):
+	(__free_hook):
+	(__malloc_hook):
+	(__realloc_hook):
+	(block_input_malloc):
+	(block_input_realloc):
+	* device-x.c (x_delete_device):
+	* emacs.c (voodoo_free_hook):
+	* events.c (print_event):
+	(CHECK_EVENT_TYPE):
+	(CHECK_EVENT_TYPE2):
+	(CHECK_EVENT_TYPE3):
+	Use proper prototypes.
+	Make C_E_T macros a little faster.
+	Pedantic fiddly little changes.  You really don't care.
+
+1998-12-22  Andy Piper  <andy@xemacs.org>
+
+	* redisplay-output.c (redisplay_clear_region): make sure that
+ 	fg/bg colors get set even when we are in the border area.
+
+1998-12-13  Martin Buchholz  <martin@xemacs.org>
+
+	* console-msw.c: Function definitions follow coding standards
+	- This prevents e.g. find-tag on Lisp_Event finding DEVENT
+
+1998-12-11  Martin Buchholz  <martin@xemacs.org>
+
+	* events.h (struct timeout_data):
+	* event-tty.c (tty_timeout_to_emacs_event):
+	* event-msw.c (mswindows_wm_timer_callback):
+	* event-Xt.c (Xt_timeout_to_emacs_event):
+	* event-msw.c (mswindows_cancel_dispatch_event):
+	Make sure Lisp_Objects inside events are initialized to Qnil, not
+	Qnull_pointer, which is now illegal.
+
+1998-12-10  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp.h: Fix up prototypes to match alloc.c
+
+1998-12-08  Martin Buchholz  <martin@xemacs.org>
+
+	* windowsnt.h: Remove `support' for using index and rindex
+
+	* filelock.c (current_lock_owner):
+	- Change uses of index -> strchr, rindex -> strrchr
+
+1998-12-07  Martin Buchholz  <martin@xemacs.org>
+
+	* sysdep.c (set_descriptor_non_blocking):
+	Since O_NONBLOCK is now always #defined, make use of fcntl
+	conditional on F_SETFL being defined.
+
+	* console-msw.c (DHEADgER):
+	(DOPAQUE_DATA):
+	(DEVENT):
+	(DCONS):
+	(DCONSCDR):
+	(DSTRING):
+	(DVECTOR):
+	(DSYMBOL):
+	(DSYMNAME):
+	- max_align_t should not be visible to the user of the
+	  XOPAQUE_DATA macro.
+	- use Bufbyte instead of char
+	- parens around (FOOP (obj)) are always redundant.
+	  If they were necessary, we should fix the macro instead.
+	- Always use string_data(foo) instead of foo->data.
+
+
+1998-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* frame-msw.c (mswindows_init_frame_1):
+	- use make_lisp_hash_table, not Fmake_hash_table
+	- include elhash.h
+
+	* lisp.h:
+	* alloc.c (make_vector): remove travesty
+	(Fmake_vector):
+	(make_pure_vector):
+	(pure_cons):
+	(make_bit_vector_internal):
+	(make_bit_vector):
+	(make_bit_vector_from_byte_vector):
+	(Fmake_bit_vector):
+	- make vector_equal a little faster.
+	- Don't use variable name `new'.
+	- Use size_t instead of EMACS_INT.
+	- usual Martin-style pointless bit-twiddling.
+
+	* fns.c (mapcar1):
+	(Fmapconcat):
+	(Fmapcar):
+	(Fmapvector):
+	Make mapcar faster.  In particular, make
+	  (mapc #'identity long-string)
+	MUCH faster under Mule.
+	* tests/automated/lisp-tests.el: Test 'em!
+
+	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
+	bytecode.
+
+1998-12-01  Martin Buchholz  <martin@xemacs.org>
+
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Always use
+	Qnil, not NULL, to initialize `null' Lisp_Objects.
+
+1998-11-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* specifier.c (display_table_validate): Update.
+
+	* redisplay.c (create_text_block): Use them.
+
+	* glyphs.c (display_table_entry): New function.
+	(get_display_tables): Ditto.
+
+1998-12-15  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (toplevel): Mention that eldap.c compiles with
+	OpenLDAP libs
+	(Fldap_open): Use `GET_C_STRING_OS_DATA_ALLOCA'
+	(Fldap_search_internal): Ditto
+
+1998-12-11  Martin Buchholz  <martin@xemacs.org>
+
+	* event-msw.c (mswindows_cancel_dispatch_event):
+	Gratuitous code prettification
+
+
+1998-12-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fnconc): Fix use of wrong_type_argument().
+
+	* floatfns.c (Ffloat): Fix docstring.
+	(Ffloat): Fix use of wrong_type_argument().
+	(Fabs): Ditto.
+	(extract_float): Ditto.
+	(Fceiling): Ditto.
+	(Fround): Ditto.
+	(Ftruncate): Ditto.
+
+1998-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* frame-msw.c (mswindows_init_frame_1):
+	- use make_lisp_hash_table, not Fmake_hash_table
+	- include elhash.h
+
+	* lisp.h:
+	* alloc.c (make_vector): remove travesty
+	(Fmake_vector):
+	(make_pure_vector):
+	(pure_cons):
+	(make_bit_vector_internal):
+	(make_bit_vector):
+	(make_bit_vector_from_byte_vector):
+	(Fmake_bit_vector):
+	- make vector_equal a little faster.
+	- Don't use variable name `new'.
+	- Use size_t instead of EMACS_INT.
+	- usual Martin-style pointless bit-twiddling.
+
+	* fns.c (mapcar1):
+	(Fmapconcat):
+	(Fmapcar):
+	(Fmapvector):
+	Make mapcar faster.  In particular, make
+	  (mapc #'identity long-string)
+	MUCH faster under Mule.
+	* tests/automated/lisp-tests.el: Test 'em!
+
+	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
+	bytecode.
+
+1998-12-02  Didier Verna  <verna@inf.enst.fr>
+
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): set the
+	accelerator field to nil for labels.
+
+1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* menubar-msw.c (displayable_menu_item):
+	  Escape occurrences of '&' and support occurrences of the
+	 '%_' accelerator indicator in menus.
+
+1998-11-26  Didier Verna  <verna@inf.enst.fr>
+
+	* dired.c (Fdirectory_files): use make_string instead of
+	make_ext_string on the filename. The conversion external->internal
+	format is already done in sys_readdir.
+
+1998-12-15  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* glyphs.c (normalize_image_instantiator): GCPRO instantiator
+
+1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c
+	  (Belatedly) added Kirill to list of file's authors.
+	  emacs_mswindows_quit_p: Don't process WM_PAINT messages in
+	  quit checking. WM_PAINT messages cause redisplay, but
+	  windows' states are not necessarily stable when this function
+	  gets called.
+
+1998-12-17  Andy Piper  <andy@xemacs.org>
+
+	* strftime.c (zone_name): CONSTify.
+
+1998-12-15  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (mswindows_combo_instantiate): ditto.
+	(mswindows_widget_property): return Qunbound when no property available.
+	(mswindows_button_property): ditto.
+	(mswindows_combo_property): ditto.
+	(mswindows_widget_set_property): ditto.
+
+	* glyphs-widget.c (check_valid_item_list): use properties.
+
+	* glyphs.h (struct Lisp_Image_Instance): we have properties now.
+
+	* glyphs.c (Fset_image_instance_property): allow setting of arbitrary properties.
+	(Fimage_instance_property): ditto.
+	* glyphs-widget.c (widget_property): ditto.
+	(widget_set_property): ditto.
+
+	* frame-msw.c (mswindows_set_frame_pointer): SetCursor() as well
+ 	as setting the class cursor so that GC actually changes the
+ 	cursor.
+
+	* config.h: don't undef MAIL_USE_POP.
+
+1998-12-13  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c
+ 	(image_instantiator_format_create_glyphs_mswindows): line ->
+ 	label.
+	(mswindows_label_instantiate): ditto. Play with window flags.
+	(image_instantiator_format_create_glyphs_mswindows): ditto.
+	(vars_of_glyphs_mswindows): provide Qlabel as we support it now.
+
+	* glyphs-widget.c (widget_instantiate_1): re-jig autosizing to
+ 	cope with lines and labels.
+	(static_instantiate): use widget_instantiate_1.
+	line -> label.
+	(image_instantiator_format_create_glyphs_widget): ditto.
+
+1998-12-10  Andy Piper  <andy@xemacs.org>
+
+	* Makefile.in.in (objs): add gui.o
+
+1998-12-10  Andy Piper  <andy@xemacs.org>
+
+	* gui.c: adjust defines of HAVE_POPUPS so that we can build with
+ 	no window system.
+
+1998-12-09  Andy Piper  <andy@xemacs.org>
+
+	* glyphs.c (finalize_image_instance): mark glyphs changed when an
+ 	image instance is removed so that the subwindow cache gets reset
+ 	and thus destroyed images get GC'd.
+
+1998-12-08  Andy Piper  <andy@xemacs.org>
+
+	* gui-msw.c (mswindows_handle_gui_wm_command): call
+ 	MARK_SUBWINDOWS_CHANGED.
+
+	* glyphs-msw.c (mswindows_finalize_image_instance): make sure
+ 	subwindows really get deleted.
+
+	* redisplay.c: new variable subwindows_changed[_set].
+	(redisplay_window): use it.
+	(redisplay_frame): ditto.
+	(redisplay_device): ditto.
+	(redisplay_without_hooks): ditto.
+
+	* device.h (MARK_DEVICE_SUBWINDOWS_CHANGED): new macro for
+ 	subwindows redisplay as per glyphs equivalent.
+	* redisplay.h: ditto.
+	(MARK_SUBWINDOWS_CHANGED): ditto.
+	(RESET_CHANGED_SET_FLAGS): ditto.
+	* frame.h (MARK_FRAME_SUBWINDOWS_CHANGED): ditto.
+
+1998-12-07  Andy Piper  <andy@xemacs.org>
+
+	* frame.c (Fmake_frame): reset subwindow cachels on non-stream
+ 	frames.
+
+	* redisplay.c (redisplay_frame): invalidate subwindow cachels.
+
+	* event-msw.c (mswindows_wnd_proc): catch the various WM_CTLCOLOR*
+ 	messages and paint widget glyphs as appropriate with their face fg
+ 	& bg.
+
+1998-12-06  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (vars_of_glyphs_mswindows): provide widget types
+ 	here rather than in glyphs-widget - do this because we only want
+ 	to provide what is really available.
+
+	* glyphs.c (Fimage_instance_property): new function to get the
+ 	properties of image instances. wires through to console specific
+ 	methods and then to widget specific methods.
+	(Fset_image_instance_property): ditto but for setting widget properties.
+	(check_valid_face): make extern so that it can be used elsewhere.
+
+	* glyphs-widget.c (widget_property): new function. gets the
+ 	properties of widgets in general and wires the function through to
+ 	widget specific ones.
+	(widget_set_property): ditto but for setting widget properties.
+
+	* glyphs-msw.c (mswindows_combo_instantiate): Add functionality to
+ 	add items to the list. Play with window styles a bit to get the
+ 	desired effect.
+	(mswindows_widget_property): break out specific widget properties.
+	(mswindows_button_property): new function. gets the checked state
+ 	of a button.
+	(mswindows_combo_property): new function. gets the current
+ 	selection in the combo box.
+	(mswindows_widget_set_property): new function. sets specific
+ 	properties of specific widgets.
+
+	* glyphs-widget.c (check_valid_item_list): new function. check
+ 	that items for a combo-box are just a list of strings.
+	(combo_validate): new function. check there is an item list.
+	(widget_instantiate_1): new function. renamed from
+ 	widget_instantiate so that we can do slightly different things for
+ 	other widgets.
+	(widget_instantiate): call widget_instantiate_1.
+	(combo_instantiate): new function to instantiate combo boxes,
+ 	defaults height to the pixel height of the number of items in the
+ 	box.
+	(syms_of_glyphs_widget): move widget keywords here.
+	(image_instantiator_format_create_glyphs_widget): use new combo
+ 	functions.
+
+1998-12-04  Andy Piper  <andy@xemacs.org>
+
+	* event-msw.c (mswindows_wnd_proc): mule-ize.
+
+	* glyphs.c (pixmap_to_lisp_data): mule-ize.
+
+	* glyphs-msw.c (extract_xpm_color_names): mule-ize.
+	(resource_name_to_resource): ditto.
+	(mswindows_resource_instantiate): ditto.
+	(mswindows_widget_instantiate): ditto.
+	(mswindows_widget_set_property): ditto.
+
+	* redisplay-output.c (redisplay_output_subwindow): don't show
+ 	subwindows if they are obscured at the edge of the frame, emacs
+ 	gets into some sort of redisplay loop otherwise.
+
+	* gui.h: prototype gui_item_selected_p.
+
+	* gui.c (gui_item_selected_p): new function to determine the
+ 	selected state of a gui_item.
+
+	* frame.h (struct frame): add subwindows_changed flag.
+
+	* redisplay.c (redisplay_frame): call update_frame_subwindows ().
+
+	* glyphs.c (update_subwindow): new function to update a
+ 	subwindow's state.
+	(update_frame_subwindows): new function to update all the
+ 	subwindows on a frame.
+
+	* console.h (struct console_methods): add update_subwindow.
+
+	* glyphs-msw.c (mswindows_widget_property): return selected state
+ 	for selected property.
+	(mswindows_update_subwindow): new function. updates widget glyphs
+ 	in redisplay as per menubars or toolbars e.g. selected state.
+	(console_type_create_glyphs_mswindows): add update_subwindow.
+
+1998-12-03  Andy Piper  <andy@xemacs.org>
+
+	* console-tty.c (syms_of_console_tty): MULE -> FILE_CODING since
+ 	tty coding system things are such.
+
+	* glyphs-widget.c (widget_face_font_info): new function for
+ 	pulling out height and width metrics for a widget's face.
+	(widget_text_to_pixel_conversion): calculate pixel sizes of text
+ 	for widgets.
+
+	* event-msw.c (mswindows_drain_windows_queue): translate messages
+ 	that are destined for subwindows. This makes edit fields interact
+ 	with the keyboard correctly.
+	nuke warnings by #ifndef'ing out stuff not required by msg select().
+
+	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): new
+ 	macro defining the iiforma without the symbol required by widget.
+	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): use it.
+
+	* general.c (syms_of_general): add Qwidget, Qselected.
+
+	* faces.c (complex_vars_of_faces): add widget face inheriting from
+ 	gui-element face.
+
+1998-11-09  Andy Piper  <andy@xemacs.org>
+
+	* window.h (struct window): add a cache of subwindows on a
+ 	per-window basis.
+
+	* window.c (mark_window): mark the subwindow_instance_cache.
+	(allocate_window): initialise the subwindow instance_cache.
+
+	* toolbar-x.c (x_output_toolbar): call redisplay_clear_region
+ 	instead of the devmeth.
+	(x_clear_toolbar): ditto.
+
+	* redisplay-x.c (x_output_display_block): call
+ 	redisplay_output_subwindow for subwindows and widgets.
+
+	* redisplay-tty.c (tty_output_display_block): add IMAGE_WIDGET to
+ 	types to do nothing for.
+
+	* lisp.h: declare new widget/subwindow symbols.
+
+	* glyphs.c (image_instantiate): cache subwindows on a per-window
+ 	basis.
+	(subwindow_possible_dest_types): new function for subwindow dest
+ 	types.
+	(subwindow_instantiate): generic instantiation of a
+ 	subwindow. specialised by device multi-methods.
+	(Fsubwindowp): moved from glyphs-x.c. adapted for glyph-based
+ 	subwindows.
+	(Fimage_instance_subwindow_id): ditto.
+	(Fresize_subwindow): ditto.
+	(Fforce_subwindow_map): ditto.
+
+	* glyphs-x.c (x_print_image_instance): remove subwindow
+ 	stuff. Handled genrically in glyphs.c.
+	(x_image_instance_equal): ditto.
+	(x_image_instance_hash): ditto.
+	(x_finalize_image_instance): delete subwindows when required.
+	(mark_subwindow) (print_subwindow) (finalize_subwindow)
+ 	(subwindow_hash) (Fmake_subwindow): deleted because of new,
+ 	glyph-based, subwindow implementation.
+	(Fsubwindow_height) (Fsubwindow_width) (Fsubwindow_xid): aliased
+ 	in glyphs.el
+	(Fsubwindowp) (Fresize_subwindow) (Fforce_subwindow_map): moved to
+ 	glyphs.c.
+	(x_unmap_subwindow): new function to unmap X subwindows.
+	(x_map_subwindow): new function to map X subwindows.
+	(x_subwindow_instantiate): new function to instantiate X
+ 	subwindows.
+	(x_resize_subwindow): new function to resize X subwindows.
+	(console_type_create_glyphs_x): add subwindow functions.
+	(image_instantiator_format_create_glyphs_x): add device
+ 	multi-methods for xpm, xbm and subwindow.
+
+	* glyphs.el (subwindow-xid): old alias for new subwindow functions.
+	(subwindow-width): ditto.
+	(subwindow-height): ditto.
+
+	* glyphs-msw.c (mswindows_widget_instantiate): new function for
+ 	generally instantiating ms subwindows. Used by
+ 	mswindows_*_instantiate.
+	(mswindows_edit_instantiate): instantiate an edit field on a
+ 	mswindows frame.
+
+1998-11-04  Andy Piper  <andy@xemacs.org>
+
+	* symsinit.h: declare new functions.
+
+	* redisplay.h: declare new functions.
+
+	* redisplay-x.c (x_output_display_block): call
+ 	redisplay_clear_region rather than x_clear_region.
+	(x_output_string): ditto.
+	(x_output_pixmap): ditto.
+	(x_clear_to_window_end): ditto.
+	(x_output_eol_cursor): ditto.
+	(x_clear_region): only do X specific things. other duties handled
+ 	in redisplay_clear_region.
+
+	* redisplay-tty.c (tty_clear_region): do tty specific things - some
+ 	duties moved to redisplay_clear_region.
+
+	* redisplay-output.c (clear_left_border): use
+ 	redisplay_clear_region instead of device method.
+	(clear_right_border): ditto.
+	(output_display_line): ditto.
+	(redisplay_output_subwindow): ditto.
+	(redisplay_clear_top_of_window): ditto.
+	(redisplay_clear_region): perform duties previously handled by
+ 	device methods. call the appropriate device method at the
+ 	end. unmap subwindows if necessary.
+
+	* redisplay-msw.c (mswindows_output_string): use
+ 	redisplay_clear_region instead of mswindows_clear_region.
+	(mswindows_clear_to_window_end): ditto.
+	(mswindows_output_display_block): output subwindows when required.
+	(mswindows_clear_region): only do mswindows specific things,
+ 	everything else is now handled in redisplay_clear_region.
+
+	* gui.h: add item id hash defines and declare function prototypes.
+
+	* gui.c (mark_gui_item): new function for marking gui_items.
+	(gui_item_hash): generic hash function for generating command ids
+ 	for gui_items.
+
+	* gui-msw.c: new file.
+	(mswindows_handle_gui_wm_command): new function to handle widget
+ 	callbacks.
+
+	* glyphs.h (MAYBE_IIFORMAT_DEVMETH): new function for device
+ 	multi-methods.
+	(IIFORMAT_HAS_SHARED_METHOD): ditto.
+	(DEFINE_DEVICE_IIFORMAT): ditto.
+	(INITIALIZE_DEVICE_IIFORMAT): ditto.
+	(struct Lisp_Image_Instance): add widget and subwindow data plus
+ 	appropriate access functions.
+
+	* glyphs.c (decode_device_ii_format): new function for decoding
+ 	image instantiator functions based on a device type as well as an
+ 	image format.
+	(decode_image_instantiator_format): just call
+ 	decode_device_ii_format with nil device.
+	(add_entry_to_device_ii_format_list): new function for per device
+ 	method instances.
+	(add_entry_to_image_instantiator_format_list): just call
+ 	add_entry_to_device_ii_format_list with nil device.
+	(check_valid_vector): new function.
+	(instantiate_image_instantiator): instantiate using per-format
+ 	method and then per-format-per-device method (device
+ 	multi-methods). signal an error if neither is possible.
+	(mark_image_instance): cope with subwindows and widgets.
+	(print_image_instance): ditto.
+	(image_instance_equal): ditto.
+	(image_instance_hash): ditto.
+	(allocate_glyph): ditto.
+	(glyph_width): ditto.
+	(glyph_height_internal): ditto.
+	(xpm_instantiate): removed because of device multi-methods.
+	(mark_subwindow_cachels): new cachel functions for caching
+ 	instantiated subwindows on a per-frame basis. mostly copied from
+ 	glyph cachel functions.
+	(update_subwindow_cachel_data): ditto.
+	(add_subwindow_cachel): ditto.
+	(get_subwindow_cachel_index): ditto.
+	(reset_subwindow_cachels): ditto.
+	(mark_subwindow_cachels_as_not_updated): ditto.
+	(unmap_subwindow): generic unmapping of subwindows based on cachel
+ 	data.
+	(map_subwindow): ditto.
+	(initialize_subwindow_image_instance): generic initialisation of
+ 	subwindow data.
+	(syms_of_glyphs): add widget keywords.
+
+	* glyphs-x.h (struct x_subwindow_data): convert Lisp_Subwindow to
+ 	x_subwindow_data.
+
+1998-11-04  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-widget.c: new file for instantiating widget type glyphs.
+	(widget_possible_dest_types): new general dest type function for
+ 	widgets.
+	(widget_validate): ditto.
+	(initialize_widget_image_instance): ditto
+	(widget_instantiate): ditto. Sets up fg/bg, gui_item parsing
+ 	before handing on control to device multi-methods.
+	(syms_of_glyphs_widget): new function.
+	(image_instantiator_format_create_glyphs_widget): new function,
+ 	added placeholders for button, edit, combo, scrollbar
+	(vars_of_glyphs_widget): new function.
+
+	* glyphs-msw.h (WIDGET_INSTANCE_MSWINDOWS_HANDLE): new define for
+ 	storing window ids of widgets.
+
+	* glyphs-msw.c (mswindows_finalize_image_instance): cope with
+ 	deletion of widget and subwindow glyphs.
+	(mswindows_unmap_subwindow): new device function for unmapping
+ 	subwindows on a msw frame.
+	(mswindows_map_subwindow): ditto.
+	(mswindows_register_image_instance): register instantiated widgets
+ 	with the widget hastable.
+	(mswindows_button_instantiate): instantiate a button type widget
+ 	on an msw frame.
+	(mswindows_subwindow_instantiate): instanttiate a subwindow on a
+ 	mswindows frame.
+	(image_instantiator_format_create_glyphs_mswindows): add device
+ 	multi-methods for xbm, xpm, subwindow, edit and button.
+
+	* frame.h (struct frame): add subwindow_cachels dynarr for caching
+ 	information about subwindows visible on the current frame. used by
+ 	redisplay_clear_region to unmap subwindows as required.
+
+	* frame.c (mark_frame): mark subwindow_cachels.
+	(allocate_frame_core): instantiate subwindow_cachels.
+
+	* frame-msw.c (mswindows_init_frame_1): instntiate and mark the
+ 	widget hashtable.
+
+	* event-msw.c (mswindows_wnd_proc): add call to
+ 	mswindows_handle_gui_wm_command to handle widget callbacks.
+
+	* emacs.c (main_1): add calls to glyphs-widget initialisation
+ 	routines.
+
+	* console.h (struct console_methods): add
+ 	unmap/map_subwindow_method for use be redisplay_clear_region to
+ 	map and unmap subwindows. Remove xpm and xbm stuff - now dealt
+ 	with by image instantiator multi-methods. Add
+ 	resize_subwindow_method.
+
+	* console-stream.c (stream_clear_region): change signature to
+ 	match new generic clear region function.
+
+	* Makefile.in.in: add glyphs-widget.o to list of objects.
+
+	* console-msw.h (struct mswindows_frame): add widget hashtable for
+ 	wiring command ids to callbacks.
+
+1998-12-16  Andy Piper  <andy@xemacs.org>
+
+	* XEmacs 21.2.6 is released
+
+1998-12-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* md5.c (Fmd5): Correctly initiate string input stream.
+
+	* Makefile.in.in (tests): Add md5-tests.el.
+
+1998-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp.h:
+	* alloc.c (make_vector): remove travesty
+	(Fmake_vector):
+	(make_pure_vector):
+	(pure_cons):
+	(make_bit_vector_internal):
+	(make_bit_vector):
+	(make_bit_vector_from_byte_vector):
+	(Fmake_bit_vector):
+	- make vector_equal a little faster.
+	- Don't use variable name `new'.
+	- Use size_t instead of EMACS_INT.
+	- usual Martin-style pointless bit-twiddling.
+
+	* fns.c (mapcar1):
+	(Fmapconcat):
+	(Fmapcar):
+	(Fmapvector):
+	Make mapcar faster.  In particular, make
+	  (mapc #'identity long-string)
+	MUCH faster under Mule.
+	* tests/automated/lisp-tests.el: Test 'em!
+
+1998-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
+	bytecode.
+
+1998-12-13  Martin Buchholz  <martin@xemacs.org>
+
+	* console-msw.c: Function definitions follow coding standards
+	- This prevents e.g. find-tag on Lisp_Event finding DEVENT
+
+1998-12-11  Martin Buchholz  <martin@xemacs.org>
+
+	* events.h (struct timeout_data):
+	* event-tty.c (tty_timeout_to_emacs_event):
+	* event-msw.c (mswindows_wm_timer_callback):
+	* event-Xt.c (Xt_timeout_to_emacs_event):
+	* event-msw.c (mswindows_cancel_dispatch_event):
+	Make sure Lisp_Objects inside events are initialized to Qnil, not
+	Qnull_pointer, which is now illegal.
+
+1998-12-10  Martin Buchholz  <martin@xemacs.org>
+
+	* lisp.h: Fix up prototypes to match alloc.c
+
+1998-12-09  Andy Piper  <andy@xemacs.org>
+
+	* glyphs-msw.c (init_image_instance_from_xbm_inline): don't use
+ 	XSETINT for assigning lisp objects.
+
+1998-12-07  Martin Buchholz  <martin@xemacs.org>
+
+	* opaque.h:
+	* console-msw.c (DHEADER):
+	(DOPAQUE_DATA):
+	(DEVENT):
+	(DCONS):
+	(DCONSCDR):
+	(DSTRING):
+	(DVECTOR):
+	(DSYMBOL):
+	(DSYMNAME):
+	- max_align_t should not be visible to the user of the
+	  XOPAQUE_DATA macro.
+	- use Bufbyte instead of char
+	- parens around (FOOP (obj)) are always redundant.
+	  If they were necessary, we should fix the macro instead.
+	- Always use string_data(foo) instead of foo->data.
+
+1998-12-07  Martin Buchholz  <martin@xemacs.org>
+
+	* sysdep.c (set_descriptor_non_blocking):
+	Since O_NONBLOCK is now always #defined, make use of fcntl
+	conditional on F_SETFL being defined.
+
+1998-12-09  Andy Piper  <andy@xemacs.org>
+
+	* menubar-msw.c (mswindows_handle_wm_command): add back in checks
+ 	that got removed in the merge
+
+1998-11-30  Greg Klanderman  <greg@alphatech.com>
+
+	* dired.c (vars_of_dired): bugfix for previous conditionalization
+	of user-name-completion on non- Windows NT.
+
+1998-12-08  Martin Buchholz  <martin@xemacs.org>
+
+	* windowsnt.h: Remove `support' for using index and rindex
+
+	* filelock.c (current_lock_owner):
+	- Change uses of index -> strchr, rindex -> strrchr
+
+1998-12-06  Martin Buchholz  <martin@xemacs.org>
+
+	* frame-msw.c (mswindows_init_frame_1):
+	- use make_lisp_hash_table, not Fmake_hash_table
+	- include elhash.h
+
+1998-12-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+	* XEmacs 21.2.5 is released
+
+1998-11-30  Martin Buchholz  <martin@xemacs.org>
+
+	* xselect.c (receive_incremental_selection):
+	* xselect.c (x_get_window_property):
+	* xmu.c (XmuReadBitmapDataFromFile):
+	* xmu.c (XmuCursorNameToIndex):
+	* xgccache.c (describe_gc_cache):
+	* xgccache.c (gc_cache_lookup):
+	* xgccache.c (free_gc_cache):
+	* xgccache.c (make_gc_cache):
+	* window.h:
+	* window.c (map_windows_1):
+	* window.c (Fother_window_for_scrolling):
+	* window.c (window_scroll):
+	* window.c (change_window_height):
+	* window.c (Fsplit_window):
+	* window.c (window_left_gutter_width):
+	* window.c (window_modeline_height):
+	* window.c (invalidate_vertical_divider_cache_in_window):
+	* window.c (window_needs_vertical_divider_1):
+	* window.c (update_mirror_internal):
+	* window.c (SET_LAST_FACECHANGE):
+	* widget.c (Fwidget_plist_member):
+	* unexec.c (copy_text_and_data):
+	* unexcw.c (copy_executable_and_dump_data_section):
+	* tooltalk.doc:
+	* tooltalk.c (struct Lisp_Tooltalk_Pattern):
+	* tooltalk.c (struct Lisp_Tooltalk_Message):
+	* toolbar.h (struct toolbar_button):
+	* toolbar.c (default_toolbar_visible_p_changed_in_window):
+	* toolbar.c (recompute_overlaying_specifier):
+	* toolbar.c (toolbar_validate):
+	* toolbar.c (toolbar_button_at_pixpos):
+	* toolbar.c (get_toolbar_coords):
+	* toolbar.c (update_frame_toolbars):
+	* toolbar-x.c:
+	* toolbar-msw.c (mswindows_handle_toolbar_wm_command):
+	* toolbar-msw.c (mswindows_find_toolbar_pos):
+	* toolbar-msw.c (mswindows_output_toolbar):
+	* toolbar-msw.c (mswindows_clear_toolbar):
+	* toolbar-msw.c:
+	* systty.h:
+	* syssignal.h:
+	* sysproc.h:
+	* sysfile.h:
+	* sysdll.c:
+	* sysdep.h:
+	* sysdep.c (rmdir):
+	* sysdep.c (sys_fopen):
+	* sysdep.c (sys_open):
+	* sysdep.c (tty_init_sys_modes_on_device):
+	* sysdep.c (get_eof_char):
+	* sysdep.c (child_setup_tty):
+	* sysdep.c (set_descriptor_non_blocking):
+	* syntax.h:
+	* syntax.c (scan_words):
+	* syntax.c:
+	* symsinit.h:
+	* symeval.h (struct symbol_value_varalias):
+	* symeval.h (struct symbol_value_forward):
+	* symbols.c (syms_of_symbols):
+	* symbols.c (init_symbols_once_early):
+	* symbols.c (Fbuilt_in_variable_type):
+	* symbols.c (Fsymbol_value_in_buffer):
+	* symbols.c (default_value):
+	* symbols.c (Fset):
+	* symbols.c (find_symbol_value_quickly):
+	* symbols.c (store_symval_forwarding):
+	* symbols.c (set_default_console_slot_variable):
+	* symbols.c (set_default_buffer_slot_variable):
+	* symbols.c (verify_ok_for_buffer_local):
+	* symbols.c (symbol_is_constant):
+	* symbols.c (oblookup):
+	* symbols.c (Funintern):
+	* symbols.c (Fintern):
+	* symbols.c (check_obarray):
+	* sunplay.c:
+	* specifier.h (struct specifier_methods):
+	* specifier.h:
+	* specifier.c (specifier_instance):
+	* specifier.c (specifier_instance_from_inst_list):
+	* specifier.c (decode_locale_type):
+	* specifier.c (specifier_equal):
+	* specifier.c (finalize_specifier):
+	* specifier.c (prune_specifiers):
+	* specifier.c (kill_specifier_buffer_locals):
+	* sound.c (init_native_sound):
+	* sound.c:
+	* signal.c (alarm):
+	* search.c (Fmatch_data):
+	* search.c (match_limit):
+	* search.c (Freplace_match):
+	* search.c (skip_chars):
+	* search.c (scan_buffer):
+	* search.c:
+	* scrollbar.c (specifier_vars_of_scrollbar):
+	* scrollbar.c (Fscrollbar_set_hscroll):
+	* scrollbar.c (vertical_scrollbar_changed_in_window):
+	* scrollbar.c (release_window_mirror_scrollbars):
+	* scrollbar.c (free_scrollbar_instance):
+	* scrollbar-x.c:
+	* scrollbar-msw.c:
+	* s/msdos.h (O_BINARY):
+	* s/linux.h:
+	* s/freebsd.h (LIBS_TERMCAP):
+	* regex.c (re_match_2_internal):
+	* regex.c (compile_extended_range):
+	* regex.c (POP_FAILURE_POINT):
+	* regex.c (PUSH_FAILURE_POINT):
+	* redisplay.h (RESET_CHANGED_SET_FLAGS):
+	* redisplay.h:
+	* redisplay.h (struct display_line):
+	* redisplay.h (struct rune):
+	* redisplay.c (vars_of_redisplay):
+	* redisplay.c (redisplay_variable_changed):
+	* redisplay.c (UPDATE_CACHE_RETURN):
+	* redisplay.c (validate_line_start_cache):
+	* redisplay.c (mark_redisplay_structs):
+	* redisplay.c (mark_glyph_block_dynarr):
+	* redisplay.c (window_line_number):
+	* redisplay.c (redisplay_frame):
+	* redisplay.c (redisplay_window):
+	* redisplay.c (generate_modeline):
+	* redisplay.c (create_right_glyph_block):
+	* redisplay.c (create_left_glyph_block):
+	* redisplay.c (create_text_block):
+	* redisplay.c:
+	* redisplay-x.c (x_output_hline):
+	* redisplay-x.c (x_output_vertical_divider):
+	* redisplay-tty.c (tty_output_display_block):
+	* redisplay-output.c (output_display_line):
+	* redisplay-output.c:
+	* redisplay-msw.c (mswindows_output_vertical_divider):
+	* redisplay-msw.c (mswindows_ring_bell):
+	* redisplay-msw.c (mswindows_output_cursor):
+	* redisplay-msw.c:
+	* rangetab.c:
+	* ralloc.c:
+	* puresize.h (RAW_PURESIZE):
+	* profile.c (syms_of_profile):
+	* profile.c (Fstart_profiling):
+	* profile.c (sigprof_handler):
+	* profile.c:
+	* procimpl.h:
+	* process.c (vars_of_process):
+	* process.c (read_process_output):
+	* process.c (get_process):
+	* process.c:
+	* process-unix.c (unix_open_multicast_group):
+	* process-unix.c (unix_get_tty_name):
+	* process-unix.c (unix_send_process):
+	* process-unix.c (unix_reap_exited_processes):
+	* process-unix.c (unix_create_process):
+	* process-unix.c (unix_init_process_io_handles):
+	* process-unix.c (allocate_pty):
+	* process-unix.c:
+	* process-nt.c (nt_open_network_stream):
+	* process-nt.c (nt_update_status_if_terminated):
+	* process-nt.c (nt_finalize_process_data):
+	* process-nt.c:
+	* print.c (debug_short_backtrace):
+	* print.c (debug_backtrace):
+	* print.c (print_symbol):
+	* print.c (print_internal):
+	* print.c (print_cons):
+	* print.c (Fwrite_char):
+	* print.c (print_prepare):
+	* print.c (canonicalize_printcharfun):
+	* print.c (output_string):
+	* print.c:
+	* opaque.h:
+	* opaque.c (allocate_managed_opaque):
+	* opaque.c:
+	* offix.c (DndSetData):
+	* objects.c (face_boolean_create):
+	* objects.c (font_instantiate):
+	* objects.c (font_create):
+	* objects.c (color_create):
+	* objects.c (finalize_font_instance):
+	* objects.c (finalize_color_instance):
+	* objects.c:
+	* objects-x.c (x_font_instance_truename):
+	* objects-x.c:
+	* objects-x.c (x_initialize_font_instance):
+	* objects-x.c (allocate_nearest_color):
+	* objects-tty.c (tty_initialize_font_instance):
+	* objects-tty.c (tty_initialize_color_instance):
+	* objects-msw.c (mswindows_initialize_color_instance):
+	* ntproc.c (syms_of_ntproc):
+	* ntproc.c (Fwin32_set_process_priority):
+	* ntproc.c (sys_spawnve):
+	* ntproc.c:
+	* ntheap.c (get_data_end):
+	* nt.c (period):
+	* nt.c:
+	* nt.c (stat):
+	* nt.c (generate_inode_val):
+	* nt.c (sys_rename):
+	* nas.c:
+	* mule-wnnfns.c (Fwnn_hinsi_number):
+	* mule-wnnfns.c (Fwnn_yuragi):
+	* mule-wnnfns.c (Fwnn_common_learn):
+	* mule-wnnfns.c (Fwnn_suffix_learn):
+	* mule-wnnfns.c (Fwnn_prefix_learn):
+	* mule-wnnfns.c (Fwnn_okuri_learn):
+	* mule-wnnfns.c (Fwnn_complex_conv):
+	* mule-wnnfns.c (Fwnn_last_is_first):
+	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
+	* mule-wnnfns.c (Fwnn_notrans_dict_add):
+	* mule-wnnfns.c (Fwnn_fiusr_dict_add):
+	* mule-wnnfns.c (Fwnn_fisys_dict_add):
+	* mule-wnnfns.c (Fwnn_hinsi_list):
+	* mule-wnnfns.c (Fwnn_fuzokugo_set):
+	* mule-wnnfns.c (Fwnn_dict_search):
+	* mule-wnnfns.c (Fwnn_word_toroku):
+	* mule-wnnfns.c (Fwnn_hindo_update):
+	* mule-wnnfns.c (Fwnn_bunsetu_henkou):
+	* mule-wnnfns.c (Fwnn_kakutei):
+	* mule-wnnfns.c (Fwnn_begin_henkan):
+	* mule-wnnfns.c (Fwnn_dict_comment):
+	* mule-wnnfns.c (Fwnn_dict_add):
+	* mule-wnnfns.c (Fwnn_open):
+	* mule-mcpath.c (mc_getcwd):
+	* mule-coding.c (vars_of_mule_coding):
+	* mule-coding.c (convert_to_external_format):
+	* mule-coding.c (encoding_marker):
+	* mule-coding.c (decoding_marker):
+	* mule-coding.c (Fcopy_coding_system):
+	* mule-coding.c (Fmake_coding_system):
+	* mule-coding.c (Fcoding_system_list):
+	* mule-coding.c (Ffind_coding_system):
+	* mule-coding.c (symbol_to_eol_type):
+	* mule-coding.c:
+	* mule-charset.c (complex_vars_of_mule_charset):
+	* mule-charset.c (vars_of_mule_charset):
+	* mule-charset.c (Fset_charset_ccl_program):
+	* mule-charset.c (struct charset_list_closure):
+	* mule-charset.c (Ffind_charset):
+	* mule-charset.c (make_charset):
+	* mule-charset.c (non_ascii_valid_char_p):
+	* mule-charset.c:
+	* mule-ccl.c (ccl_driver):
+	* mule-canna.c (c2mu):
+	* mule-canna.c (Fcanna_henkan_begin):
+	* mule-canna.c (Fcanna_parse):
+	* mule-canna.c (Fcanna_store_yomi):
+	* mule-canna.c (Fcanna_touroku_string):
+	* mule-canna.c (Fcanna_initialize):
+	* minibuf.c:
+	* menubar.c (menu_parse_submenu_keywords):
+	* menubar-x.c (make_dummy_xbutton_event):
+	* menubar-x.c (set_frame_menubar):
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
+	* menubar-x.c:
+	* menubar-msw.h:
+	* menubar-msw.c (mswindows_popup_menu):
+	* menubar-msw.c (mswindows_update_frame_menubars):
+	* menubar-msw.c (mswindows_handle_wm_command):
+	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
+	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1):
+	* menubar-msw.c (update_frame_menubar_maybe):
+	* menubar-msw.c (populate_or_checksum_helper):
+	* menubar-msw.c (empty_menu):
+	* menubar-msw.c:
+	* md5.c:
+	* marker.c (set_marker_internal):
+	* marker.c (print_marker):
+	* malloc.c:
+	* make-src-depend:
+	* lstream.c (lisp_buffer_rewinder):
+	* lstream.c (mark_lstream):
+	* lrecord.h:
+	* lrecord.h (struct lrecord_header):
+	* lread.c (readevalloop):
+	* lread.c (locate_file):
+	* lread.c (locate_file_in_directory):
+	* lread.c (Flocate_file):
+	* lread.c (load_force_doc_string_unwind):
+	* lread.c (ebolify_bytecode_constants):
+	* lread.c:
+	* lisp.h:
+	* lisp-union.h:
+	* lisp-disunion.h:
+	* linuxplay.c (linux_play_data_or_file):
+	* linuxplay.c (audio_init):
+	* line-number.c:
+	* keymap.h:
+	* keymap.c (describe_map):
+	* keymap.c (describe_map_mapper):
+	* keymap.c (Fdescribe_bindings_internal):
+	* keymap.c (Fsingle_key_description):
+	* keymap.c (map_keymap_sorted):
+	* keymap.c (get_relevant_keymaps):
+	* keymap.c (Flookup_key):
+	* keymap.c (raw_lookup_key_mapper):
+	* keymap.c (Fdefine_key):
+	* keymap.c (Fevent_matches_key_specifier_p):
+	* keymap.c (key_desc_list_to_event):
+	* keymap.c (define_key_parser):
+	* keymap.c (define_key_check_and_coerce_keysym):
+	* keymap.c (keymap_submaps):
+	* keymap.c (keymap_store_internal):
+	* keymap.c (keymap_delete_inverse_internal):
+	* keymap.c (keymap_store_inverse_internal):
+	* keymap.c (print_keymap):
+	* keymap.c (Lisp_Keymap):
+	* keymap.c:
+	* intl.c:
+	* insdel.c (convert_bufbyte_string_into_emchar_dynarr):
+	* insdel.c (make_gap):
+	* input-method-xlib.c (get_XIM_input):
+	* input-method-xlib.c (XIM_init_frame):
+	* imgproc.c:
+	* hash.h:
+	* hash.c:
+	* gui.c:
+	* gui-x.c (button_item_to_widget_value):
+	* gui-x.c (popup_selection_callback):
+	* glyphs.h (struct image_instantiator_methods):
+	* glyphs.c (mark_glyph_cachels):
+	* glyphs.c (Fglyph_type):
+	* glyphs.c (image_instantiate):
+	* glyphs.c (image_create):
+	* glyphs.c (make_image_instance_1):
+	* glyphs.c (finalize_image_instance):
+	* glyphs.c:
+	* glyphs-x.c (finalize_subwindow):
+	* glyphs-x.c (xface_validate):
+	* glyphs-x.c (x_locate_pixmap_file):
+	* glyphs-x.c (convert_EImage_to_XImage):
+	* glyphs-msw.c:
+	* glyphs-msw.c (mswindows_resource_instantiate):
+	* glyphs-msw.c (xpm_to_eimage):
+	* glyphs-msw.c (convert_EImage_to_DIBitmap):
+	* glyphs-eimage.c (tiff_instantiate):
+	* glyphs-eimage.c (png_instantiate):
+	* glyphs-eimage.c (struct png_error_struct):
+	* glyphs-eimage.c (gif_memory_storage):
+	* glyphs-eimage.c:
+	* gifrlib.h:
+	* getloadavg.c (getloadavg):
+	* getloadavg.c:
+	* gdbinit:
+	* free-hook.c (log_gcpro):
+	* free-hook.c (check_malloc):
+	* free-hook.c (check_free):
+	* free-hook.c (ROUND_UP_TO_PAGE):
+	* free-hook.c:
+	* frame.h (struct frame):
+	* frame.h:
+	* frame.c (change_frame_size_1):
+	* frame.c (allocate_frame_core):
+	* frame.c:
+	* frame-x.c (x_focus_on_frame):
+	* frame-x.c (x_init_frame_2):
+	* frame-x.c (x_popup_frame):
+	* frame-x.c (xemacs_XtPopup):
+	* frame-x.c:
+	* frame-x.c (Foffix_start_drag_internal):
+	* frame-x.c (x_cde_destroy_callback):
+	* frame-x.c (x_wm_hack_wm_protocols):
+	* frame-tty.c (tty_frame_visible_p):
+	* frame-msw.c (mswindows_make_frame_invisible):
+	* frame-msw.c (mswindows_after_init_frame):
+	* frame-msw.c (mswindows_init_frame_1):
+	* fns.c (syms_of_fns):
+	* fns.c (Fbase64_decode_string):
+	* fns.c (Fnconc):
+	* fns.c (Ffillarray):
+	* fns.c (Fobject_plist):
+	* fns.c (Fget):
+	* fns.c (Fcanonicalize_lax_plist):
+	* fns.c (Fcanonicalize_plist):
+	* fns.c (Fplist_remprop):
+	* fns.c (Fplist_get):
+	* fns.c (advance_plist_pointers):
+	* fns.c (internal_plist_put):
+	* fns.c (Fnreverse):
+	* fns.c (Fremassq):
+	* fns.c (Felt):
+	* fns.c (Fsubstring):
+	* fns.c (Fbvconcat):
+	* fns.c (Flength):
+	* fns.c (length_with_bytecode_hack):
+	* fns.c (print_bit_vector):
+	* fns.c:
+	* floatfns.c (Ffloor):
+	* floatfns.c:
+	* floatfns.c (in_float_error):
+	* fileio.c (Ffile_modes):
+	* fileio.c (Fexpand_file_name):
+	* fileio.c (Fmake_temp_name):
+	* fileio.c (Ffile_name_nondirectory):
+	* fileio.c (Ffile_name_directory):
+	* file-coding.h:
+	* file-coding.c (vars_of_mule_coding):
+	* file-coding.c (convert_to_external_format):
+	* file-coding.c (encoding_marker):
+	* file-coding.c (decoding_marker):
+	* file-coding.c (Fcopy_coding_system):
+	* file-coding.c (Fmake_coding_system):
+	* file-coding.c (struct coding_system_list_closure):
+	* file-coding.c (Ffind_coding_system):
+	* file-coding.c (symbol_to_eol_type):
+	* file-coding.c:
+	* faces.h (struct face_cachel):
+	* faces.c (vars_of_faces):
+	* faces.c (face_property_was_changed):
+	* faces.c (mark_face_cachels):
+	* faces.c (temporary_faces_list):
+	* faces.c (struct face_list_closure):
+	* faces.c:
+	* extents.h (struct extent):
+	* extents.c (vars_of_extents):
+	* extents.c (struct copy_string_extents_1_arg):
+	* extents.c (add_string_extents_mapper):
+	* extents.c (Fextent_property):
+	* extents.c (Fset_extent_property):
+	* extents.c (symbol_to_glyph_layout):
+	* extents.c (properties_equal):
+	* extents.c (print_extent):
+	* extents.c (print_extent_1):
+	* extents.c (extent_in_region_p):
+	* extents.c (gap_array_make_gap):
+	* extents.c:
+	* events.h (struct Lisp_Event):
+	* events.h:
+	* events.c (Fevent_properties):
+	* events.c (format_event_object):
+	* events.c (Fmake_event):
+	* events.c (event_equal):
+	* events.c (print_event):
+	* events.c (mark_event):
+	* event-stream.c ((read-char)
+	* event-stream.c (vars_of_event_stream):
+	* event-stream.c (syms_of_event_stream):
+	* event-stream.c (Fset_recent_keys_ring_size):
+	* event-stream.c (Fsit_for):
+	* event-stream.c (Fnext_event):
+	* event-stream.c (execute_help_form):
+	* event-stream.c (maybe_kbd_translate):
+	* event-stream.c:
+	* event-msw.c (vars_of_event_mswindows):
+	* event-msw.c (mswindows_wnd_proc):
+	* event-msw.c (mswindows_need_event):
+	* event-msw.c (mswindows_drain_windows_queue):
+	* event-msw.c (mswindows_pump_outstanding_events):
+	* event-msw.c:
+	* event-msw.c (slurp_thread):
+	* event-msw.c (struct ntpipe_slurp_stream):
+	* event-msw.c (HANDLE_TO_USID):
+	* event-Xt.c (emacs_Xt_handle_magic_event):
+	* event-Xt.c (x_event_to_emacs_event):
+	* event-Xt.c (x_reset_modifier_mapping):
+	* event-Xt.c (x_reset_key_mapping):
+	* event-Xt.c:
+	* eval.c (syms_of_eval):
+	* eval.c (warn_when_safe):
+	* eval.c (warn_when_safe_lispobj):
+	* eval.c (Fbacktrace_frame):
+	* eval.c (Fbacktrace):
+	* eval.c (top_level_set):
+	* eval.c (unbind_to_hairy):
+	* eval.c (specbind_magic):
+	* eval.c (specbind_unwind_wasnt_local):
+	* eval.c (call2_trapping_errors):
+	* eval.c (call1_trapping_errors):
+	* eval.c (catch_them_squirmers_call2):
+	* eval.c (call0_trapping_errors):
+	* eval.c (run_hook_trapping_errors):
+	* eval.c (catch_them_squirmers_eval_in_buffer):
+	* eval.c (call4_in_buffer):
+	* eval.c (call3_in_buffer):
+	* eval.c (call2_in_buffer):
+	* eval.c (call1_in_buffer):
+	* eval.c (call0_in_buffer):
+	* eval.c (run_hook):
+	* eval.c (run_hook_with_args_in_buffer):
+	* eval.c (Fapply):
+	* eval.c (Feval):
+	* eval.c (do_autoload):
+	* eval.c (un_autoload):
+	* eval.c (Fautoload):
+	* eval.c (Finteractive_p):
+	* eval.c (Fcommand_execute):
+	* eval.c (signal_quit):
+	* eval.c (call_with_suspended_errors):
+	* eval.c (signal_error):
+	* eval.c (return_from_signal):
+	* eval.c (Fcall_with_condition_handler):
+	* eval.c (run_condition_case_handlers):
+	* eval.c (condition_case_1):
+	* eval.c (Funwind_protect):
+	* eval.c (unwind_to_catch):
+	* eval.c (internal_catch):
+	* eval.c (Fmacroexpand_internal):
+	* eval.c (Fuser_variable_p):
+	* eval.c (Fdefconst):
+	* eval.c (Fdefvar):
+	* eval.c (Ffunction):
+	* eval.c (signal_call_debugger):
+	* eval.c (call_debugger):
+	* eval.c:
+	* emacs.c (main):
+	* emacs.c (sort_args):
+	* emacs.c (main_1):
+	* elhash.h:
+	* elhash.c:
+	* editfns.c (Fencode_time):
+	* editfns.c (Fdecode_time):
+	* editfns.c (Fuser_full_name):
+	* editfns.c:
+	* editfns.c (save_excursion_restore):
+	* ecrt0.c:
+	* dynarr.c:
+	* doprnt.c (emacs_doprnt_1):
+	* doc.c (verify_doc_mapper):
+	* doc.c (Fsnarf_documentation):
+	* doc.c (Fdocumentation):
+	* dll.c:
+	* dired.c (user_name_completion):
+	* dired.c (Fdirectory_files):
+	* dialog-x.c:
+	* dialog-msw.c:
+	* dgif_lib.c (FreeSavedImages):
+	* dgif_lib.c (DGifGetImageDesc):
+	* device.h:
+	* device.h (struct device):
+	* device.c (Fselect_device):
+	* device.c (allocate_device):
+	* device.c:
+	* device-x.c (Fx_keysym_on_keyboard_p):
+	* device-x.c (Fx_valid_keysym_name_p):
+	* device-x.c (x_IO_error_handler):
+	* device-x.c (x_delete_device):
+	* device-x.c (x_finish_init_device):
+	* device-x.c (x_init_device):
+	* device-x.c:
+	* device-msw.c (mswindows_init_device):
+	* dbxrc:
+	* database.c (vars_of_database):
+	* database.c (Fput_database):
+	* database.c (Fopen_database):
+	* database.c (berkdb_remove):
+	* database.c (berkdb_put):
+	* database.c (Fdatabasep):
+	* database.c (print_database):
+	* database.c:
+	* data.c (vars_of_data):
+	* data.c (syms_of_data):
+	* data.c (init_errors_once_early):
+	* data.c (prune_weak_lists):
+	* data.c (finish_marking_weak_lists):
+	* data.c (print_weak_list):
+	* data.c (Fmod):
+	* data.c (Fstring_to_number):
+	* data.c (Fnumber_to_string):
+	* data.c (Findirect_function):
+	* data.c (Fsetcdr):
+	* data.c (Ffloatp):
+	* data.c (Fsubr_interactive):
+	* data.c (Farrayp):
+	* data.c (Fkeywordp):
+	* data.c (Fnull):
+	* data.c:
+	* console.h (CONSOLE_NAME):
+	* console.h:
+	* console.c (vars_of_console):
+	* console.c (Fselect_console):
+	* console.c:
+	* console-x.h (DEVICE_X_COLORMAP):
+	* console-x.h (struct x_device):
+	* console-x.c (x_device_to_console_connection):
+	* console-tty.h (CONSOLE_TTY_FINAL_CURSOR_Y):
+	* console-tty.c (tty_init_console):
+	* console-tty.c:
+	* console-msw.h (struct mswindows_frame):
+	* conslots.h:
+	* config.h.in:
+	* cmds.c (internal_self_insert):
+	* cmds.c (Fforward_line):
+	* cmds.c (Fforward_char):
+	* cmds.c:
+	* cmdloop.c:
+	* chartab.c (mark_char_table_entry):
+	* chartab.c:
+	* casefiddle.c (casify_word):
+	* callproc.c (child_setup):
+	* callproc.c (Fcall_process_internal):
+	* callproc.c:
+	* callint.c (Fcall_interactively):
+	* bytecode.h:
+	* bytecode.c (execute_rare_opcode):
+	* bytecode.c (execute_optimized_program):
+	* bytecode.c:
+	* bufslots.h:
+	* buffer.h (BUFFER_REALLOC):
+	* buffer.h (GET_CHARPTR_INT_DATA_ALLOCA):
+	* buffer.h (GET_CHARPTR_EXT_DATA_ALLOCA):
+	* buffer.h:
+	* buffer.h (MAP_INDIRECT_BUFFERS):
+	* buffer.h (CHECK_LIVE_BUFFER):
+	* buffer.c (init_initial_directory):
+	* buffer.c (complex_vars_of_buffer):
+	* buffer.c (vars_of_buffer):
+	* buffer.c (finish_init_buffer):
+	* buffer.c (Fget_file_buffer):
+	* buffer.c (Fbuffer_list):
+	* buffer.c (mark_buffer):
+	* balloon_help.c (balloon_help_move_to_pointer):
+	* balloon_help.c (show_help):
+	* balloon_help.c:
+	* backtrace.h:
+	* alloc.c (garbage_collect_1):
+	* alloc.c (sweep_strings):
+	* alloc.c (sweep_compiled_functions):
+	* alloc.c (sweep_bit_vectors_1):
+	* alloc.c (sweep_vectors_1):
+	* alloc.c (sweep_lcrecords_1):
+	* alloc.c (tick_lcrecord_stats):
+	* alloc.c (pure_string_sizeof):
+	* alloc.c (mark_conses_in_list):
+	* alloc.c (mark_object):
+	* alloc.c (report_pure_usage):
+	* alloc.c (make_pure_float):
+	* alloc.c (make_pure_string):
+	* alloc.c (free_managed_lcrecord):
+	* alloc.c (mark_string):
+	* alloc.c (noseeum_make_marker):
+	* alloc.c (allocate_event):
+	* alloc.c (Fbit_vector):
+	* alloc.c (Fvector):
+	* alloc.c (make_float):
+	* alloc.c (Fmake_list):
+	* alloc.c (Flist):
+	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
+	* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST):
+	* alloc.c (DECLARE_FIXED_TYPE_ALLOC):
+	* alloc.c (dbg_constants):
+	* alloc.c (gc_record_type_p):
+	* alloc.c (free_lcrecord):
+	* alloc.c (xmalloc):
+	* alloc.c (NOSEEUM_INCREMENT_CONS_COUNTER):
+	* abbrev.c:
+	* Makefile.in.in (mostlyclean):
+	* Makefile.in.in (external_client_xlib_objs_nonshared):
+	* Makefile.in.in (temacs_link_args):
+	* Makefile.in.in (release):
+	* Makefile.in.in (dnd_objs):
+	* Makefile.in.in (objs):
+	* Makefile.in.in (PROGNAME):
+	* EmacsShell.c: cast strings to (XtPointer)
+	* EmacsFrame.c: cast strings to (XtPointer)
+	- mega patch
+	- rewrite basic lisp functions for speed
+	- rewrite bytecode interpreter for speed
+	- rewrite list looping constructs for speed and safety using
+	  tortoise/hare.
+	- use size_t where appropriate.
+	- new hashtable implementation
+	- cleanup implementation of opaques
+	- opaques can now be purecopy'ed
+	- move some cl functionality into C for speed.
+	- remove last remaining VMS support
+	- spelling fixes
+	- improve gdb/dbx debugger support
+	- move pure.c back into alloc.c for performance
+	- enable report_pure_usage() if --memory-usage-stats
+	- remove remnants of Energize support (EMACS_BTL, cadillac...)
+	- don't use symbols with leading `_' or embedded `__'
+	- globally cleanup duplicated semicolons `;;'
+	- I give in on %p vs %lx - we use printf("%lx",(long) p)
+	  globally.
+	- globally replace O_NDELAY with O_NONBLOCK.
+	- globally replace CDISABLE with _POSIX_VDISABLE.
+	- use O_RDONLY and O_RDWR instead of magic `0' and `2'.
+	- define (and maybe use!) STDERR_FILENO and friends.
+	- add support for macros defined in C
+	- `when', `unless', `not' and `defalias' now defined in C,
+	  so that they are universally available.
+	- rename defvar_mumble to defvar_magic
+	- rename RETURN__ to RETURN_SANS_WARNINGS
+	- use consistent style of initial caps in error messages
+	- implement last, butlast, nbutlast, copy-list in C.
+	- provide typedefs for all struct Lisp_foo types
+	- Lisp_Objects must be initialized to Qnil rather than 0.
+	- make sure XEmacs runs (slowly) with always_gc == 1;
+	- fast and safe LOOP_* macros
+	- change calls to XSETOBJ to XSETFOO
+	- replace calls to XSETINT by make_int()
+	- plug up memory leaks
+	- use style markobj (foo), not silly ((markobj) (foo))
+	- use XFLOAT_DATA (obj) instead of float_data (XFLOAT (obj))
+
+1998-12-02  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* unexec.c: Changed a #ifndef statement to fix XEmacs on BSDI 3.0
+
+1998-11-28  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.2-beta4 is released.
+
+1998-11-27  SL Baur  <steve@altair.xemacs.org>
+
+	* mule-charset.c (complex_vars_of_mule_charset): Fix graphic
+	property in control-1 charset.
+	From Julian Bradfield <jcb@daimi.au.dk>
+
+1998-11-26  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* gui-x.c (button_item_to_widget_value): Ignore :key-sequence
+	keyword.
+	Add stub for :label.
+
+	* gui.c (gui_item_add_keyval_pair): ditto.
+
+	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Ignore
+	:key-sequence keyword.
+	Add stub for:label.
+	Support :active for submenus like the Windows code and FSF Emacs.
+
+1998-11-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* dired.c (make_directory_hash_table): make_string() is OK because
+	readdir() Mule-encapsulates.
+
+1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fbase64_encode_string): Fix docstring.
+	(Fbase64_decode_string): Ditto.
+
+1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* editfns.c (Ftranslate_region): Use
+	convert_bufbyte_string_into_emchar_string().
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* editfns.c (Ftranslate_region): Accept vectors and char-tables as
+	well as strings.
+	(Ftranslate_region): Turn table into an array of Emchars for
+	larger regions.
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* chartab.c (Freset_char_table): Fix wrong placement of #endif.
+
+1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* chartab.c (Freset_char_table): Don't blindly fill chartables of
+	type `char' with nils.
+
+	* chartab.c (canonicalize_char_table_value): Coerce ints to chars
+	for tables of type `char'.
+
+1998-11-26  Didier Verna  <verna@inf.enst.fr>
+
+	* input-method-xlib.c (Initialize_Locale): don't call
+	XtSetLanguageProc. We've done the whole work here.
+	* input-method-xfs.c (Initialize_Locale): ditto.
+	* input-method-motif.c (Initialize_Locale): ditto.
+
+1998-11-26  Didier Verna  <verna@inf.enst.fr>
+
+	* process-unix.c (unix_create_process): handle properly
+	Vfile_name_coding_system for converting the program and directory
+	names.
+
+1998-11-27  SL Baur  <steve@altair.xemacs.org>
+
+	* m/arm.h: New file.
+	From James LewisMoss <dres@ioa.com>
+
+1998-11-27  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>
+
+	* m/mips-nec.h:
+	Fix the realpath() problem of UnixWare2.1.3.
+	Patches for NEC's sysv4.2 machine.
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* dired.c (Fdirectory_files): Remove redundant code.
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (free_malloced_ptr): New function.
+	(XMALLOC_OR_ALLOCA): New macro.
+	(XMALLOC_UNBIND): Ditto.
+	(Fbase64_encode_region): Use malloc() for large blocks; arrange it
+	to be freed in case of non-local exit.
+	(Fbase64_encode_string): Ditto.
+	(Fbase64_decode_region): Ditto.
+	(Fbase64_decode_string): Ditto.
+	(STORE_BYTE): New macro.
+	(base64_decode_1): Use it.
+
+1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (base64_value_to_char): Base64 stuff.
+
+1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* editfns.c (Fbuffer_substring): New function.
+
+	* lisp.h: Declare make_string_from_buffer_no_extents().
+
+	* insdel.c (make_string_from_buffer_1): New function.
+	(make_string_from_buffer_no_extents): Ditto.
+
+1998-11-15  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* linuxplay.c: Including <fcntl.h> instead of <sys/fcntl.h> makes
+	sound work on AIX with OSS installed.  Linux should still work.
+
+1998-11-03  Andy Piper  <andyp@parallax.co.uk>
+
+	* config.h.in: name change for cygwin/version.h
+
+	* configure.in: check for cygwin/version.h now.
+
+	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
+	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
+	move cygwin32/version.h to cygwin/version.h
+
+1998-11-03  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp.h  (struct  Lisp_Bit_Vector): Fix declaration of  bits from
+	int to long.
+
+1998-10-22  Andy Piper  <andyp@parallax.co.uk>
+
+	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
+	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
+	enable BROKEN_SIGIO under b20 to make QUIT work.
+
+1998-10-22  Andy Piper  <andyp@parallax.co.uk>
+
+	* frame-msw.c (mswindows_size_frame_internal): force frame sizing
+	to fit within the constraints of the screen size. I.e. make the
+	frame small enough to fit and move it if some of it will be
+	off-screen.
+
+1998-10-19  Greg Klanderman  <greg@alphatech.com>
+
+	* dired.c: conditionalize inclusion of user-name-completion
+	primitives on non-Windows NT.  The needed functions don't exist on NT.
+
+1998-11-24  SL Baur  <steve@altair.xemacs.org>
+
+	* gifrlib.h: Clean up types for 64 bit compile.
+	* dgif_lib.c (DGifInitRead): Ditto.
+	(MakeSavedImage): Ditto.
+	* emacs.c (decode_path): Ditto.
+	From Steve Carney <carney@pa.dec.com>
+
+1998-10-16  William M. Perry  <wmperry@aventail.com>
+
+	* glyphs-msw.c (bitmap_table): Fixed typo in builtin bitmaps
+	  (cehckboxes instead of checkboxes).
+
+1998-10-15  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.2-beta3 is released.
+
+1998-10-13  Raymond Toy  <toy@rtp.ericsson.se>
+
+	* runemacs.c (WinMain): If the basename is "rungnuclient.exe", run
+	gnuclient.  Otherwise, we run xemacs as we always did.  This gets
+	rid of the annoying DOS window when running gnuclient.
+
+1998-10-13  Andy Piper  <andyp@parallax.co.uk>
+
+	* dragdrop.c (vars_of_dragdrop): rename HAVE_MSWINDOWS ->
+	HAVE_MS_WINDOWS typo.
+
+1998-10-13  SL Baur  <steve@altair.xemacs.org>
+
+	* process-unix.c (unix_send_process): Set closed flag on writable
+	pipe after SIGPIPE is received and before we call deactivate_process.
+
+1998-10-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+	* window.c (Fset_window_start): respect narrowing when
+	checking wheter start is at the beginning of a line.
+	(Fset_window_buffer): Ditto
+	Fixes repeatable crash in VM.
+
+1998-10-09  SL Baur  <steve@altair.xemacs.org>
+
+	* window.c (specifier_vars_of_window): Set default vertical
+	divider width to 1 on ttys.
+
+1998-10-08  Martin Buchholz  <martin@xemacs.org>
+
+	* alloc.c:
+	* unexec.c:
+	* malloc.c:
+	Add <stddef.h> to get ptrdiff_t declaration
+
+1998-10-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* scrollbar-msw.c: Use the same vertical scrollbar drag hack as
+	  is used for Motif or Lucid scrollbars under X.
+
+1998-10-08  Pierre Wendling  <pw@ebc.vbe.dec.com>
+
+	* m/alpha.h (UNEXEC): quoted to avoid bad expansion when running
+	`configure'
+
+1998-10-06  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>
+
+	* frame-x.c (x_delete_frame): Fix an argument of XtDestroyWidget.
+
+1998-10-05  Andy Piper  <andyp@parallax.co.uk>
+
+	* s/cygwin32.h: more cygwin b20 reorganisation.
+
+1998-10-01  Raymond Toy  <toy@rtp.ericsson.se>
+
+	* nas.c: Added necessary support functions to be able to handle
+	WAVE files in memory, just like the support for SND files in
+	memory.
+
+1998-09-30  SL Baur  <steve@altair.xemacs.org>
+
+	* callproc.c (child_setup): Fix spelling typo.
+
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.2-beta2 is released.
+
+1998-09-27  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* regex.c (re_match_2_internal): Add in code to reset lowest_active_reg
+	to prevent memory corruption in the case of jumping out of a series of
+	nested match patterns. This is a rather brute force approach, though.
+
+1998-09-02  Andy Piper  <andyp@parallax.co.uk>
+
+	* config.h.in: ditto.
+
+	* s/cygwin32.h: rearrange declarations to cope with cygwin
+ 	b20. Include cygwin32/version.h if it exists.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* device-msw.c (mswindows_init_device): Call new
+	  mswindows_enumerate_fonts() function in objects-msw.c instead
+	  of font_enum_callback_1() to enumerate fonts.
+
+	  font_enum_callback_1() and _2() moved to objects-msw.c.
+
+	* faces.c (complex_vars_of_faces): Make the mswindows default
+	  face font fully specified and provide some fallbacks.
+
+	* objects-msw.c: font_enum_callback_1() and _2() moved here
+	  from objects-msw.c. Obtain the enumerated font's character
+	  sets by table lookup instead of using the locale-specific
+	  string provided by Windows.
+
+	  New public non-method mswindows_enumerate_fonts() that fills
+	  in the supplied mswindows device's font list.
+
+	  mswindows_initialize_font_instance: Use the supplied name
+	  variable instead of f->name when signalling errors. Match font
+	  weights and character sets using lookup tables which handle
+	  spaces instead of by frobbing.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* process-nt.c: Define an arbitrary limit, FRAGMENT_CODE_SIZE,
+	  on the size of code fragments passed to run_in_other_process.
+
+	  run_in_other_process(): Use FRAGMENT_CODE_SIZE to determine
+	  the amount of memory to allocate in the other process.
+
+	  Removed sigkill_code_end(), sigint_code_end() and
+	  sig_enable_code_end() since they are now redundant.
+
+	  send_signal() and enable_child_signals(): Don't try to work
+	  out the end of the code fragments passed to
+	  run_in_other_process()
+
+1998-09-10  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
+
+	* src/s/freebsd.h: Added __ELF__ and compiler/liker flags for
+	FreeBSD-current.
+
+	* src/unexelf.c: Partially synched with FSF's 20.3.
+
+1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (signal_after_change): Map across indirect buffers
+	here, and not in the upper-level functions.
+	(signal_first_change): Don't check for Armageddon.
+	(signal_before_change): Map across indirect buffers here.
+	(prepare_to_modify_buffer): ...and here.
+
+1998-09-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (signal_after_change): Add return value.
+	(buffer_insert_string_1): Use it.
+	(buffer_delete_range): Ditto.
+	(buffer_replace_char): Ditto.
+	(cancel_multiple_change): Map the indirect buffers.
+
+1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
+	(uninit_buffer_text): Ditto.
+
+	* buffer.c (Fmake_indirect_buffer): Implement stricter
+	error-checking.
+
+1998-09-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (change_function_restore): Reverse order of
+	function-call and assignment.
+	(first_change_hook_restore): Ditto.
+
+	* extents.c (mark_extent_auxiliary): Mark them.
+	(Fset_extent_property): Set them.
+	(Fextent_property): Get them.
+	(Fextent_properties): Ditto.
+	(vars_of_extents): Set their default.
+
+	* extents.h (struct extent_auxiliary): Add before_change_functions
+	and after_change_functions.
+
+	* insdel.c (signal_before_change): Use it.
+	(signal_after_change): Ditto.
+
+	* extents.c (report_extent_modification): New function.
+
+	* insdel.c (signal_before_change): Don't check for Armageddon.
+	(signal_after_change): Ditto.
+
+1998-09-11  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* redisplay.c (redisplay_window): make sure a new starting point
+	is chosen if it somehow got moved from the beginning of the line
+	-- this can happen because Fwiden was called recently.
+
+	* window.c (Fset_window_start): set start_at_line_beg correctly
+	(Fset_window_buffer): Ditto
+
+1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
+	(uninit_buffer_text): Ditto.
+
+	* buffer.c (Fmake_indirect_buffer): Implement stricter
+	error-checking.
+
+1998-05-14  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* emacs.c (main_1): Removed references to *vars_of_filelock.
+
+	* lisp.h: Added Fsystem_name.
+
+	* filelock.c: Replaced by version from FSF 20.2. Now implements
+	locking by using symlinks which is NFS safe. However keep the
+	GCPRO's in lock_file and the calls to callx_in_buffer like our old
+	version (and of course use ansi C, acessor macros, etc).
+
+1998-09-06  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* process-unix.c (unix_create_process): Reset SIGHUP handler to
+	SIG_DFL. We now try to conserve any inherted SIG_IGN settings
+	in init_signals_very_early. However these should not be passed
+	on to children attached to the new pty.
+
+1998-08-28  Andy Piper  <andyp@parallax.co.uk>
+
+	* glyphs-eimage.c (png_instantiate_unwind): clean up eimage after use.
+
+1998-09-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* fileio.c (file-name-directory, file_name_as_directory):
+	  Don't call CORRECT_DIR_SEPS, even when #defined WINDOWSNT.
+
+1998-09-02  Andy Piper  <andyp@parallax.co.uk>
+
+	* emacs.c (main_1): init_ralloc() if initialised and we have REL_ALLOC
+
+	* ralloc.c: uncomment __morecore.
+
+1998-09-92  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c(winsock_writer): Supply a dummy 4th argument to
+	  WriteFile() to fix a winsock 1.x bug on Win95.
+
+1998-08-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* event-Xt.c (emacs_Xt_mapping_action): Check for device being
+ 	deleted.
+	(x_event_to_emacs_event): Ditto.
+	(emacs_Xt_handle_focus_event): Ditto.
+	(emacs_Xt_handle_magic_event): Ditto.
+
+	* console-x.h (struct x_device): New flag being_deleted.
+	(DEVICE_X_BEING_DELETED): New macro.
+
+	* device-x.c (x_IO_error_handler): Throw to top-level instead of
+	returning.  Before doing that, set the being_deleted flag on the
+	device.
+
+1998-08-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* device-x.c (x-seppuku-on-epipe): Removed.
+
+1998-08-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* frame-x.c (x_delete_frame): Flush the X output buffer after
+	calling XtDestroyWidget to ensure that the windows are really
+	killed right now.
+
+1998-08-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* menubar-x.c (my_run_hook): New unused function.
+	(pre_activate_callback): Use run_hook for Qactivate_menubar_hook,
+	since we ignore the results of the contained functions anyway.
+
+1998-08-26  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* glyphs-eimage.c (gif_instantiate): Fix a crash in handling
+	interlaced GIF files that are smaller than 4 lines high...
+
+1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* buffer.c (map_over_sharing_buffers): Deleted.
+
+	* insdel.c (MAP_INDIRECT_BUFFERS): Move to buffer.h.
+
+	* buffer.c (Fkill_buffer): Keep indirect_children updated while
+	killing them.
+
+1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (buffer_insert_string_1): Advance the point bytind in
+	all the buffers.
+	(buffer_delete_range): Ditto.
+
+	* marker.c (init_buffer_markers): Set point-marker to the value of
+	point in an indirect buffer.
+
+1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* undo.c (undo_prelude): Test last-undo-buffer against base
+ 	buffer.
+
+	* insdel.c (MAP_INDIRECT_BUFFERS): Use it.
+
+	* buffer.h (BUFFER_BASE_BUFFER): New macro.
+
+1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* insdel.c (init_buffer_text): Initialize it here.
+
+	* line-number.c: Address line_number_cache through buffer->text.
+
+	* buffer.c (mark_buffer): Mark line number cache.
+
+	* bufslots.h (line_number_cache): Move to struct buffer_text.
+
+	* insdel.c (buffer_insert_string_1): Propagate signals and changes
+	across the children buffers.
+	(buffer_delete_range): Ditto.
+	(buffer_replace_char): Ditto.
+	(gap_left): Ditto.
+	(gap_right): Ditto.
+
+	* insdel.c (MAP_INDIRECT_BUFFERS): New macro.
+
+	* buffer.c (Fmake_indirect_buffer): Uncomment.
+
+1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* macros.c (Fend_kbd_macro): Remove trailing period from error
+	message.
+	(Fexecute_kbd_macro): Ditto.
+
+1998-08-21  Greg Klanderman  <greg@alphatech.com>
+
+	* dired.c (Fuser_name_completion): remove optional 2nd argument.
+	(Fuser_name_completion_1): new function to return uniqueness
+	indication in addition to the user name completion.
+	(user_name_completion): change type of `uniq' argument.
+
+1998-08-19  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* lread.c (vars_of_lread): Removed `source-directory' variable.
+
+1998-08-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fileio.c (Ffile_readable_p): Apply the DOS/Windows logic to
+	Cygwin.
+
+1998-08-19  SL Baur  <steve@altair.xemacs.org>
+
+	* dired.c (vars_of_dired): Fix misapplied patch.
+
+1998-08-16  Martin Buchholz  <martin@xemacs.org>
+
+	* fns.c (Fremrassq, remrassq_no_quit):
+	A XCAR that should have been an XCDR turned Fremrassq into Fremassq
+
+1998-07-17  Didier Verna  <verna@inf.enst.fr>
+
+	* redisplay-x.c (x_get_gc): returns a GC with a FillStipple fill
+	style as foreground GC for faces that have the `dim' property.
+	(x_output_string): when the `dim' face property is set,
+	ensure the gray pixmap has been created, and get a proper
+	foreground GC to draw the text.
+
+1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c (mswindows_wnd_proc): Workaround for a Win95 bug:
+	  Manually track the state of the left and right Ctrl and Alt
+	  modifiers.
+
+1998-08-07 Matt Stupple <matts@tibco.com>
+
+	* ntproc.c: don't wait on char_consumed at thread entry.
+	Additionally, to get the 'process' marked as finished, ensure
+	that the CHILD_ACTIVE macro returns false, so before exiting
+	close char_avail and set it to NULL, and close other handles
+	to reduce handle leak problems.
+
+1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* menubar-msw.c (displayable_menu_item): take account of menu
+	  depth when deciding whether to try to display accelerators.
+
+1998-08-04  Andy Piper  <andyp@parallax.co.uk>
+
+	* event-msw.c: use MsgWaitForMultipleObjects if there are no
+	subprocesses.
+
+	* glyphs-msw.c: fix a couple of potential handle leaks.
+
+1998-08-04  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* dgif_lib.c gif_io.c gifrlib.h: New files to put GIF
+	  *decoding ONLY* back into the core.
+	* glyphs-eimage.c: Change referenced header file for GIF
+	  reading to point to the incore version.
+
+1998-07-20  Martin Buchholz  <martin@xemacs.org>
+
+	* casefiddle.c (casify_object):
+	Change algorithm from O(N**2) to O(N).
+	Code cleanup.
+	Doc string cleanup.
+
+1998-07-22  Greg Klanderman  <greg@alphatech.com>
+
+	* dired.c (file_name_completion_unwind): don't leak the cons.
+
+1998-07-20  Greg Klanderman  <greg@alphatech.com>
+
+	* dired.c (Fuser_name_completion): new function.
+	(Fuser_name_all_completions): new function.
+	(user_name_completion): new function.
+	(syms_of_dired): 2 new DEFSUBRs.
+	(vars_of_dired): initialize user name cache vars.
+
+1998-07-29  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* glyphs-eimage.c (png_instantiate): Add proper handling for background
+ 	colors taken from the default face.  Also correct a thinko in
+	transparency (not alpha) handling.
+
+1998-07-23  Martin Buchholz  <martin@xemacs.org>
+
+	* s/decosf4-0.h:  Use a perfectly ordinary link.  Nuke BSD crap.
+	* unexalpha.c: ANSI C-ize.  Clean compiler warnings.
+	* lread.c (Fload_internal):  Be very careful with printfs of
+	size_t's
+	* gui-x.c (menu_name_to_accelerator): tolower wants an `int'
+	argument.
+
+1998-07-27  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* callint.c (Fcall_interactively): GCPRO prompt string before
+	passing it to Fread_key_sequence
+
+1998-07-27  SL Baur  <steve@altair.xemacs.org>
+
+	* keymap.c (vars_of_keymap): Initialize Vkey_translation_map and
+	Vvertical_divider_map.
+
+	* mule-canna.c (vars_of_mule_canna): Initialize every symbol to
+	Qnil or 0, none were initialized prior to this change.
+
+	Rename misnamed `V' prefixed integer variables:
+	Vcanna_empty_info, Vcanna_through_info, Vcanna_underline,
+	Vcanna_inhibit_hankakukana, Vcanna_henkan_length, Vcanna_henkan_revPos,
+	Vcanna_henkan_revLen, Vcanna_ichiran_length, Vcanna_ichiran_revPos,
+	Vcanna_ichiran_revLen.
+
+	Rename misnamed `V' prefixed integer variables and initialize
+	properly in the vars_of routine.
+	Vcanna_mode_AlphaMode, Vcanna_mode_EmptyMode, Vcanna_mode_KigoMode,
+	Vcanna_mode_YomiMode, Vcanna_mode_JishuMode, Vcanna_mode_TankouhoMode,
+	Vcanna_mode_IchiranMode, Vcanna_mode_YesNoMode, Vcanna_mode_OnOffMode,
+	Vcanna_mode_AdjustBunsetsuMode, Vcanna_mode_ChikujiYomiMode,
+	Vcanna_mode_ChikujiTanMode, Vcanna_mode_HenkanMode,
+	Vcanna_mode_HenkanNyuryokuMode, Vcanna_mode_ZenHiraHenkanMode,
+	Vcanna_mode_HanHiraHenkanMode, Vcanna_mode_ZenKataHenkanMode,
+	Vcanna_mode_HanKataHenkanMode, Vcanna_mode_HanKataHenkanMode,
+	Vcanna_mode_ZenAlphaHenkanMode, Vcanna_mode_HanAlphaHenkanMode,
+	Vcanna_mode_ZenHiraKakuteiMode, Vcanna_mode_HanHiraKakuteiMode,
+	Vcanna_mode_ZenKataKakuteiMode, Vcanna_mode_HanKataKakuteiMode,
+	Vcanna_mode_ZenAlphaKakuteiMode, Vcanna_mode_HanAlphaKakuteiMode,
+	Vcanna_mode_HexMode, Vcanna_mode_BushuMode, Vcanna_mode_ExtendMode,
+	Vcanna_mode_RussianMode, Vcanna_mode_GreekMode, Vcanna_mode_LineMode,
+	Vcanna_mode_ChangingServerMode, Vcanna_mode_HenkanMethodMode,
+	Vcanna_mode_DeleteDicMode, Vcanna_mode_TourokuMode,
+	Vcanna_mode_TourokuEmptyMode, Vcanna_mode_TourokuHinshiMode,
+	Vcanna_mode_TourokuDicMode, Vcanna_mode_QuotedInsertMode,
+	Vcanna_mode_BubunMuhenkanMode, Vcanna_mode_MountDicMode,
+	Vcanna_fn_SelfInsert, Vcanna_fn_FunctionalInsert,
+	Vcanna_fn_QuotedInsert, Vcanna_fn_JapaneseMode, Vcanna_fn_AlphaMode,
+	Vcanna_fn_HenkanNyuryokuMode, Vcanna_fn_Forward, Vcanna_fn_Backward,
+	Vcanna_fn_Next, Vcanna_fn_Prev, Vcanna_fn_BeginningOfLine,
+	Vcanna_fn_EndOfLine, Vcanna_fn_DeleteNext, Vcanna_fn_DeletePrevious,
+	Vcanna_fn_KillToEndOfLine, Vcanna_fn_Henkan, Vcanna_fn_Kakutei,
+	Vcanna_fn_Extend, Vcanna_fn_Shrink, Vcanna_fn_AdjustBunsetsu,
+	Vcanna_fn_Quit, Vcanna_fn_ConvertAsHex, Vcanna_fn_ConvertAsBushu,
+	Vcanna_fn_KouhoIchiran, Vcanna_fn_BubunMuhenkan, Vcanna_fn_Zenkaku,
+	Vcanna_fn_Hankaku, Vcanna_fn_ExtendMode, Vcanna_fn_ToUpper,
+	Vcanna_fn_Capitalize, Vcanna_fn_ToLower, Vcanna_fn_Hiragana,
+	Vcanna_fn_Katakana, Vcanna_fn_Romaji, Vcanna_fn_BaseHiragana,
+	Vcanna_fn_BaseKatakana, Vcanna_fn_BaseEisu, Vcanna_fn_BaseZenkaku,
+	Vcanna_fn_BaseHankaku, Vcanna_fn_BaseKana, Vcanna_fn_BaseKakutei,
+	Vcanna_fn_BaseHenkan, Vcanna_fn_BaseHiraKataToggle,
+	Vcanna_fn_BaseZenHanToggle, Vcanna_fn_BaseKanaEisuToggle,
+	Vcanna_fn_BaseKakuteiHenkanToggle, Vcanna_fn_BaseRotateForward,
+	Vcanna_fn_BaseRotateBackward, Vcanna_fn_Touroku, Vcanna_fn_HexMode,
+	Vcanna_fn_BushuMode, Vcanna_fn_KigouMode, Vcanna_fn_Mark,
+	Vcanna_fn_TemporalMode, Vcanna_key_Nfer, Vcanna_key_Xfer,
+	Vcanna_key_Up, Vcanna_key_Left, Vcanna_key_Right, Vcanna_key_Down,
+	Vcanna_key_Insert, Vcanna_key_Rollup, Vcanna_key_Rolldown,
+	Vcanna_key_Home, Vcanna_key_Help, Vcanna_key_KP_Key,
+	Vcanna_key_Shift_Nfer, Vcanna_key_Shift_Xfer, Vcanna_key_Shift_Up,
+	Vcanna_key_Shift_Left, Vcanna_key_Shift_Right, Vcanna_key_Shift_Down,
+	Vcanna_key_Cntrl_Nfer, Vcanna_key_Cntrl_Xfer, Vcanna_key_Cntrl_Up,
+	Vcanna_key_Cntrl_Left, Vcanna_key_Cntrl_Right, Vcanna_key_Cntrl_Down
+
+1998-07-16  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* event-Xt.c (x_to_emacs_keysym): Return nil for modifier keysyms.
+	(x_event_to_emacs_event): Let x_to_emacs_keysym check for modifier
+	keys thus no longer considering all keysyms on a key.
+
+1998-07-19  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.2-beta1 is released.
+
+1998-07-12  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (Fldap_search_internal): When converting the list of
+	attributes to search Copy the final 0 from Lisp strings to C
+	strings.
+	Check base, not Vldap_default_base as a a string
+
+1998-07-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* nt.c: Remove Vstdio_str; already defined in console-stream.c.
+
+	* unexnt.c: Unconditionally define bss_start and bss_size, and
+	  ensure that they don't go in the .bss section.
+
+1998-07-17  Olivier Galibert  <galibert@pobox.com>
+
+	* glyphs-x.c (convert_EImage_to_XImage):  Fix previous patch (conv
+	byte order is dependant  of  the local  byte order).
+	From Takeshi Hagiwara <hagiwara@ie.niigata-u.ac.jp>
+
+1998-07-18  SL Baur  <steve@altair.xemacs.org>
+
+	* glyphs-msw.c (mswindows_resource_normalize): Qresource ->
+	Qmswindows_resource.
+	From Jonathan Harris <jhar@tardis.ed.ac.uk>
+
+1998-07-12  SL Baur  <steve@altair.xemacs.org>
+
+	* general.c (syms_of_general): Add defsymbol for Qresource.
+
+	* glyphs-msw.c (vars_of_glyphs_mswindows): Rename Qresource to
+	Qmswindows_resource.
+	(TopLevel): Rename 'resource image format to 'mswindows_resource.
+	(mswindows_resource_validate): Rename.
+	(mswindows_resource_normalize): Rename.
+	(mswindows_resource_possible_dest_types): Rename.
+	(mswindows_resource_instantiate): Rename.
+	(image_instantiator_format_create_glyphs_mswindows): Replace
+	`resource' with `mswindows.resource'.
+
+	* XEmacs 21.0-pre5 is released.
+
+1998-07-10  SL Baur  <steve@altair.xemacs.org>
+
+	* mule-wnnfns.c (Fwnn_open): Correctly trap on misdefined Wnn
+	server type in environment.
+	Use alloca-ed strings instead of tiny fixed size ones.
+
+1998-07-09  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre4 is released.
+
+1998-07-01  James N. Potts  <jnpotts@plutonium.net>
+
+	* fileio.c: (expand_file_name): under win32: Don't treat names
+	as UNC names if a drive letter has been specified.  If a drive
+	has been specified, strip out extra directory-seperators that
+	reportedly cause problems under Win95.
+
+1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* windowsnt.h: Define DUMP_SEPARATE_SECTION when building with
+	  MSVC >= 5.0. Put emacs init and zero-init data in a special
+	  section of the executable when this is defined.
+
+	* unexnt.c, ntheap.h:
+	  Removed unused find_section() and get_section_size().
+
+	* unexnt.c:
+	  Fix up the executable's checksum after dumping otherwise the
+	  profiler complains.
+	  When DUMP_SEPARATE_SECTION is defined, don't need to dump
+	  zero-init data separately from init data. Dump emacs data
+	  into a special section of the executable.
+	  When DUMP_SEPARATE_SECTION not defined, dump .bss up to
+	  my_ebss instead of up to the end of bss.
+
+1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* filelock.c: Removed Vconfigure_lock_directory - already
+	  defined in emacs.c.
+
+	* frame-msw.c: Removed Qinitially_unmapped and Qpopup - already
+	  defined in frame.c and general.c respectively.
+
+	* glyphs-msw.c: Removed Qresource - already defined in
+	  general.c.
+
+1998-07-05  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (Fldap_search_internal): Docstring fixes
+
+1998-07-04  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* nt.c (init_environment): Removed unused PRELOAD_WINSOCK,
+	  EMACSDOC and TERM variables. Added EMACSDEBUGPATHS,
+	  EMACSPACKAGEPATH and INFOPATH variables.
+	  Removed unused get_emacs_configuration function.
+
+	* s/windowsnt.h: Don't define EMACS_CONFIGURATION here because
+	  it is now defined at build-time by the makefile.
+
+1998-07-01  James N. Potts  <jnpotts@plutonium.net>
+
+	* fileio.c: (expand_file_name): under win32: Don't treat names as
+	UNC names if a drive letter has been specified.  If a drive has
+	been specified, strip out extra directory-seperators that
+	reportedly cause problems under Win95.
+
+1998-07-05  Andy Piper  <andyp@parallax.co.uk>
+
+	* faces.c (complex_vars_of_faces): for the gui-element face don't
+	fallback to the default face, instead provide reasonable default
+	fallbacks that were previously hardcoded elsewhere.
+
+1998-07-06  Olivier Galibert  <galibert@pobox.com>
+
+	* glyphs-x.c (convert_EImage_to_XImage): Fix pixel writing problem
+	when the X server endianness is different than the client's one.
+
+1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* eval.c (run_hook_with_args_in_buffer): Check
+	  default (non-buffer-local) value of hook for
+	  nil before treating it as a function.  Don't initialize
+	  the `globals' variable twice.
+
+1998-06-24  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* fileio.c: Don't do directory seperator canonicalisation in
+	  substitute-in-file-name because we don't know that the
+	  filename refers to a local file.
+
+1998-06-24  Adrian Aichner  <adrian@xemacs.org>
+
+	* process-nt.c (nt_create_process): Try appending the standard
+	  executable file extensions to the filename if none supplied.
+
+1998-06-29  SL Baur  <steve@altair.xemacs.org>
+
+	* fileio.c (Fsubstitute_in_file_name): Enable double slash notation
+	for cygwin32.
+	From Keisuke Mori <ksk@ntts.com>
+
+1998-06-24  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c (mswindows_output_toolbar): only enable masked
+	images if we have masks. This handles the xbm case (have masks)
+	and avoids overuse of resources in the xpm case (generally no masks).
+	Don't output small toolbars.
+
+1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* eval.c (run_hook_with_args_in_buffer): Don't treat
+	  the default value of a buffer local hook as a list of
+	  hooks unless it is both a cons and the car of that cons
+	  is not Qlambda.
+
+1998-06-29  SL Baur  <steve@altair.xemacs.org>
+
+	* extents.c: Email address for Ben Wing is ben@xemacs.org.
+	* process-unix.c: Ditto.
+	* mule-coding.h: Ditto.
+	* mule-coding.c: Ditto.
+	* mule-charset.c: Ditto.
+	* mule-charset.h: Ditto.
+	* file-coding.c: Ditto.
+	* file-coding.h: Ditto.
+
+1998-06-22  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* event-msw.c: Guard against recursion when freeing
+	  FRAME_MSWINDOWS_TARGET_RECT struture in WM_SIZE processing.
+
+	* frame-msw.c: Don't set WS_VISIBLE attribute on first frame.
+	  Call ShowWindow twice in init_frame_3 to get round runemacs
+	  weirdness.
+
+1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* scrollbar.c (vertical_scrollbar_changed_in_window): Ditto.
+
+	* winslots.h: Rename.
+
+	* window.c (specifier_vars_of_window): Renamed
+	vertical-divider-draggable-p to vertical-divider-always-visible-p,
+	as suggested by Ben Wing.
+	(specifier_vars_of_window): Fix docstrings.
+
+1998-06-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* unexaix.c: Line number information works correctly again.
+
+1998-06-22  Olivier Galibert  <galibert@pobox.com>
+
+	* emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry.
+
+1998-06-21  Martin Buchholz  <martin@xemacs.org>
+
+	* editfns.c (get_home_directory): ANSIfy.
+	XEmacs is compilable under C *and* C++.
+	It's XEmacs, not Xemacs!
+
+1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* console-msw.h: added a list of fonts to device data.
+
+	* device-msw.c: enumerate list of available fonts in
+	  mswindows_init_device. Free list in mswindows_delete_device.
+
+	* objects-msw.c: Added helper function match_font used by
+	  mswindows_initialize_font_instance and mswindows_list_fonts.
+	  Allow a charset to be specified in a font string, even if
+	  previous fields havn't been specified.
+
+1998-06-23  Greg Klanderman  <greg@alphatech.com>
+
+	* indent.c (column_at_point): column cache bugfix.
+	Set last_known_column_point to the buffer position for
+	which the column was requested, not buffer's point.
+
+	* redisplay.c (decode_mode_spec): for current-column, show
+	window's point's column, not buffer's point's column.
+
+1998-06-23  Andy Piper  <andyp@parallax.co.uk>
+
+	* menubar-msw.c (mswindows_handle_wm_command): use
+	enqueue_misc_user event rather than
+	mswindows_enqueue_msic_user_event to fix customize problems. Add some
+	checks that X does.
+
+	* console-msw.h: declare mswindows_enqueue_magic_event.
+
+	* event-msw.c (mswindows_enqueue_magic_event): make global.
+
+1998-06-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* line-number.c (LINE_NUMBER_FAR): Reverted to 16384.
+	(buffer_line_number): Use EMACS_INT_MAX instead of random LOTS.
+	(add_position_to_cache): Use EMACS_INT instead of int.
+
+1998-06-21  Olivier Galibert  <galibert@pobox.com>
+
+	* lisp-disunion.h (XMARKBIT): Have XMARKBIT return something
+	suitable for an int used as a boolean (btw, C sucks.).
+
+1998-06-18  Andy Piper  <andyp@parallax.co.uk>
+
+	* object-msw.c: remove warnings.
+
+	* device-msw.c: #define wrongly named cygwin structure elements.
+
+	* s/cygwin32.h: define DEMI_BOLD
+
+1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* redisplay-msw.c: new function mswindows_apply_face_effects.
+	  This is called by output_string and output_cursor to display
+	  underline and strikeout on faces.
+
+1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* console-msw.h: added a list of fonts to device data.
+
+	* device-msw.c: enumerate list of available fonts in
+	  mswindows_init_device. Free list in mswindows_delete_device.
+
+	* objects-msw.c: Added helper function match_font used by
+	  mswindows_initialize_font_instance and mswindows_list_fonts.
+	  Allow a charset to be specified in a font string, even if
+	  previous fields havn't been specified.
+
+1998-06-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* objects-msw.c:
+	  Removed compilation warnings from mswindows_string_to_color.
+	  mswindows_list_fonts returns a more general bogus font.
+	  New lisp-visible function mswindows-color-list.
+
+1998-06-19  David Bush <david.bush@adn.alcatel.com>
+
+	* editfns.c (Fuser_login_name): Modify to user new function
+	user_login_name.
+	(user_login_name): C only function to avoid Lisp object overhead
+	Returns "unknown" instead of nil in Cygwin environment
+
+	* fileio.c (Fexpand_file_name): Treat "~" and "~user" as
+	equivalent for current user in Cygwin environment. Use new
+	function user_login_name to get username.
+
+	* lisp.h: Declare user_login_name
+
+1998-06-18  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* unexaix.c (make_hdr): Fixed bias computations so debugging info
+	works again.
+	Some other insignificant nitpicks.
+
+1998-06-18  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c (mswindows_output_toolbar): specify ILC_MASK when
+	creating the image list and make sure he bk color is transparent.
+
+1998-06-18  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* event-Xt.c (emacs_Xt_remove_timeout): Also remove timeout from
+	completed_timeouts. The timer could have expired.
+
+1998-06-17  Andy Piper  <andyp@parallax.co.uk>
+
+	* console-msw.h: move XEMACS_RECT_WH inside frame
+	parameters. define macors to access it.
+
+	* frame-msw.c (mswindows_init_frame_1): use new target_rect
+	parameter to intialise desired sizing. (mswindows_init_frame_2):
+	enable and size the frame to something sensible when we get
+	here. (mswindows_set_frame_properites): use new
+	mswindows_size_frame_internal function and size frame if frame
+	parameters not just if init is finished - WM_SIZE happens too
+	early for some specs. (mswindows_size_frame_internal): new
+	function abstracted from mswindows_set_frame_properties.
+	(Vmswindows_use_system_frame_size_defaults):
+	new variable controls whether to allow the system to pick frame
+	size defaults, defaults to nil.
+
+	* event-msw.c: in WM_SIZE use mswindows_size_frame_internal rather
+	than duplicated code.
+
+1998-06-15  Colin Rafferty <colin@xemacs.org>
+
+	* Makefile.in.in: Made EXTW_LINK expand properly.
+
+1998-06-12  Martin Buchholz  <martin@xemacs.org>
+
+	* redisplay.c (vars_of_redisplay): default value of
+	column-number-start-at-one should be NIL!
+
+1998-06-11  Martin Buchholz  <martin@xemacs.org>
+
+	* casefiddle.c:
+	(upcase-initials "fooBar") ==> "FooBar" instead of "Foobar"
+
+1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* eldap.c (Fldap_search_internal): Use build_ext_string instead of
+	build_string to avoid crashes under Mule.
+
+1998-06-13  Andy Piper  <andyp@parallax.co.uk>
+
+	* ntplay.c (play_sound_data_1): don't delete the sound data until
+	the next sound is played and the previous one finished.
+
+1998-06-10  Samuel Mikes  <smikes@alumni.hmc.edu>
+
+	* fileio.c (directory-sep-char): Escape backslashes.
+
+1998-06-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* event-stream.c: Fix docstring reference.
+
+1998-06-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* alloc.c (make_float): Remove useless initialization of `next'
+ 	field.
+	(make_pure_float): Ditto.
+
+	* lisp.h (struct Lisp_Float): Rename `next' to `__unused__next'.
+
+1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* fileio.c (Fmake_directory_internal): Remove conditionals
+	on WINDOWSNT when calling mkdir.
+
+	* ntproc.c: Deleted the following unused functions:
+	register_child, reap_subprocess, sys_wait.
+
+	* nt.c (sys_rename): Ifzeroed this implementation.
+	Deleted the following unused functions:
+	sys_access, sys_chdir, sys_chmod, sys_creat, sys_link, sys_mkdir,
+	sys_mktemp, sys_rmdir, sys_unlink, sys_close, sys_dup, sys_dup2,
+	sys_read, sys_write.
+	Merger sys_fopen and sys_open with sysdep.c implementation.
+
+	* sysdep.c: Removed MS-DOS code.
+	(sys_rename): Deal with Microsoft rename weirdness.
+	(sys_open): Implemented for Windows.
+	(sys_fopen): Ditto.
+	(sys_mkdir): Ditto.
+
+1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* buffer.c (complex_vars_of_buffer): Removed %t description from
+	the docstring.
+
+1998-06-04  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>
+
+	* scrollbar-msw.c: initialize the cbSize element of the
+	SCROLLINFO struct before calling SetScrollInfo. WinNT seems
+	to ignore the value of cbSize, but Win95 (and I presume Win98)
+	appear to want it set to sizeof(SCROLLINFO).
+
+1998-06-04  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* event-stream.c: Defined Qcancel_mode_internal.
+	(syms_of_event_stream): defsymbol'ed it.
+
+	* events.h: Externed it.
+
+	* event-msw.c (mswindows_wnd_proc, WM_CANCELMODE): Added this handler.
+
+1998-06-04  Oliver Graf <ograf@fga.de>
+
+	* frame-x.c (x_cde_destroy_callback): free the data
+	(cde-start-drag-internal) corrected root position, 21.1 needs this
+	hardcoded in Button events
+	(offix-start-drag-internal) corrected root position
+
+1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* process-nt.c (signal_cannot_launch): Use signal_simple_error()
+	instead of error().
+
+1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* dialog-msw.c (button_width): Removed `inline' from the function
+	declaration.
+
+1998-06-03  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>
+
+	* frame-msw.c: add WS_VISIBLE flag to the first frame created.
+	Note that adding this flag to subsequent frames causes problems.
+
+1998-06-03  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* glyphs-eimage.c (png_instantiate) move 'struct
+	png_memory_storage tbr' out of nested block to avoid dangling
+	reference
+
+1998-06-02  Andy Piper  <andyp@parallax.co.uk>
+
+	* faces.h:
+	* faces.c: rename 3d-object -> gui-element. add toolbar face which
+	inherits from gui-element.
+
+	* glyphs-msw.c: use DIBitmaps for xbm bitmaps to be consistent
+	with existing code, generate masks correctly.
+
+1998-06-03  P. E. Jareth Hein  <jareth@camelot-soft.com>
+
+	* glyphs-eimage.c: Changed included header for gifs to use
+	Gifreader instead of giflib.
+
+	* glyphs-x.c: removed the image-related functions that were
+	moved into glyphs-eimage.
+
+1998-06-02  David Bush  <david.bush@adnb.alcatel.com>
+
+	* glyphs.c (bitmap_to_lisp_data) Define XFree to be free
+	if built without X Windows support.
+
+1998-06-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (Fconcat): Synch docstring with new reality.
+
+1998-06-03  SL Baur  <steve@altair.xemacs.org>
+
+	* frame.c: Remove reference to msdos.h (which is going away).
+	Suggested by Hrvoje Niksic and Kirill Katsnelson.
+
+1998-06-02  P. E. Jareth Hein  <jareth@camelot-soft.com>
+
+	* glyphs-eimage.c (jpeg_instantiate): Fix handling of
+	grayscale images/
+
+
+1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* events.h: Fixed commentary about misc-user scrollbar events.
+
+	* scrollbar-x.c (x_update_vertical_scrollbar_callback): Use frame
+	object as an event channel, instead of window object.
+	(x_update_horizontal_scrollbar_callback): Ditto.
+
+1998-05-29  Andy Piper  <andyp@parallax.co.uk>
+
+	* ntplay.c (play_sound_data_1) new function. convert alloca data
+	to malloc if necessary.
+	(play_sound_file): if the file is not in our path then convert to
+	data and play.
+
+1998-06-01  SL Baur  <steve@altair.xemacs.org>
+
+	* mule-mcpath.c (mc_chdir): Reverse parameters in call to memcpy.
+	* msdos.c (Frecent_doskeys): Ditto.
+
+	* unexalpha.c (unexec): Reverse parameters in call to memcpy.
+	Suggested by Reggie Perry <perry@zso.dec.com>
+
+	* buffer.h: Eliminate size in declaration.
+
+1998-06-01  Olivier Galibert  <galibert@pobox.com>
+
+	* unexelfsgi.c (unexec): Cleanup n/nn and remove useless kludge.
+
+1998-06-01  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* gui.c (gui_item_init): Changed the default value for config member
+	from Qunbound to Qnil.
+
+1998-06-01  Greg Klanderman  <greg@alphatech.com>
+
+	* indent.c (vmotion_pixels): Don't #define abs().
+
+1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* s/windowsnt.h: Defined popen and pclose to be _popen and _pclose
+	respectively.
+
+1998-05-30  Andy Piper  <andyp@parallax.co.uk>
+
+	* glyphs.h: add xbm declarations.
+
+	* console.h: add xbm_instantiate_method device method.
+
+	* glyphs.c (check_valid_xbm_inline) (xbm_validate)
+	(bitmap_to_lisp_data) (xbm_mask_file_munging) (xbm_normalize)
+	(xbm_possible_dest_types): moved here from glyphs-x.c. use
+	locate_pixmap_file device method and read_bitmap_data_from_file
+	instead of XmuReadBitmapDataFromFile.
+	(xbm_instatntiate): make a device method.
+
+	* glyphs-x.c: see glyphs.c changes. (read_bitmap_data_from_file)
+	new function that just calls XmuReadBitmapDataFromFile.
+	(x_xbm_instatntiate): device method from xbm_instantiate.
+
+	* glyphs-msw.c (read_bitmap_data) (NextInt)
+	(read_bitmap_data_from_file): new functions copied from Xmu
+	sources.
+	(xbm_create_bitmap_from_data) from Ben <ben@666.com> convert
+	inline data to an mswindows bitmap.
+	(init_image_instance_from_xbm_inline) (xbm_instantiate_1)
+	(mswindows_xbm_instantiate): mswindows-ized versions of the X
+	functions.
+
+1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* window.c (specifier_vars_of_window): Renamed `has_modeline-p' to
+	`modeline-visible-p'.
+	Declared specifier lisp variables at the beginning oh the file
+	as static.
+
+	* procimpl.h (struct process_methods): Changed semantics of
+	create_process method so it accepts lisp strings instead of
+	char pointers.
+
+	* process.c (Fstart_process_internal): Moved building of
+	unix style argv from here to process-unix.c, ...
+
+	* process-unix.c (unix_create_process): ... right here.
+
+	* process-nt.c (nt_create_process): Changed this function to
+	support new semantics, so avoided a GC problem.
+
+	* events.c (Fmake_event): Document misc-user events properties.
+	(Fmake_event): Do not allow arbitrary objects for channel property
+	of misc-user events.
+	(Fmake_event): Change misc-user event validation: it is function
+	which is required, not button.
+
+	* event-msw.c (mswindows_user_event_p): Recognize misc user events as
+	user events.
+	(mswindows_enqueue_misc_user_event): Added function.
+	(mswindows_bump_queue): Removed function.
+	(mswindows_enqueue_magic_event): Support NULL HWND parameter.
+	(mswindows_wnd_proc, WM_CLOSE): Use mswindows_enqueue_misc_user_event().
+	(mswindows_wnd_proc, WM_EXITSIZEMOVE): Ditto.
+	(emacs_mswindows_handle_magic_event): Handle XM_BUMPQUEUE, by doing
+	really nothing, which is my personal favorite thing.
+
+	* console-msw.h: Removed prototype for mswindows_bump_queue().
+	Added prototype for mswindows_enqueue_misc_user_event().
+
+	* menubar-msw.c (mswindows_handle_wm_command): Use
+	mswindows_enqueue_misc_user_event().
+
+	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
+
+	* dialog-msw.c (dialog_proc): Ditto.
+
+	* scrollbar-msw.c (mswindows_handle_scrollbar_event): Ditto.
+	 (mswindows_handle_scrollbar_event): Use frame, not window, for misc
+	user events channel.
+
+1998-05-29  Greg Klanderman  <greg@alphatech.com>
+
+	* window.c (Fwindow_displayed_text_pixel_height): was relying on
+	incorrect semantics of vmotion_pixels which has been fixed.  don't
+	use it anymore as it can't easily be used.
+
+	* indent.c (vmotion_pixels): fix off by one bug moving up.  also
+	the motion was reported incorrectly if you tried to go past end of
+	buffer.
+
+1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* toolbar.h: Removed misleading commentary, as Martin suggested.
+
+1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* lisp.h: Extern Qactivate_menubar_hook.
+
+	* menubar-msw.c (unsafe_handle_wm_initmenu_1): Pass correct value to
+	run_hook ().
+
+1998-05-29  Andy Piper  <andyp@parallax.co.uk>
+
+	* glyphs-msw.c: use BPLINE macro.
+
+	* select-msw.c (mswindows-selection-exists-p)
+	(mswindows-delete-selection): doc string fixes.
+
+	* toolbar-msw.c (mswindows_output_toolbar): make disabled buttons
+	unpressable. warning elimination.
+
+1998-05-28  Martin Buchholz  <martin@xemacs.org>
+
+	* alloc.c (dbg_constants):
+	* dbxrc:
+	* gdbinit:
+	Remove toolbar_data debugging code, since that lrecord has
+	also been removed.
+
+Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
+
+	* alloc.c: zap cached value of (user-home-directory), so that
+	  it's not undumped.
+
+	* buffer.c: From init_buffer(), separated out code that
+	  determined the initial directory for the *scratch* buffer, and
+	  put them into a function called "init_initial_directory()".
+	  The initial directory is now available as a global "char *"
+	  called initial_directory.
+
+	* buffer.h: Added extern entries for initial_directory[] and
+	  init_initial_directory().
+
+	* editfns.c: added new elisp function "user-home-directory",
+	which basically returns getenv("HOME"), but attempts to use
+	other values if $HOME isn't set.This may have to be tweaked in
+	the future as, under Unix, "/" is used if $HOME isn't set (this
+	probably should be set to the current directory).  To support
+	this, a new C function, "get_home_directory()", now exists,
+	which returns the "home directory", as a "char *" string.
+
+	* emacs.c: Rearrange NT initialization order so that
+	environment/registry variables will be properly entered into
+	Vprocess_enviroment.
+
+	* fileio.c: replaced egetenv("HOME") with calls to the new
+	  get_home_directory().
+
+	* lisp.h: Added function prototypes for uncache_home_directory()
+	  and get_home_directory(), along with lisp prototypes for
+	  Fuser_home_directory() and friends.
+
+	* nt.c: replaced getenv("HOME") with calls to the new
+	  get_home_directory().
+
+	* sysfile.h: for WINDOWSNT, #include <direct.h>, to suppress
+	  warnings about getcwd(), etc. not having prototypes.
+
+1998-05-28  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* process-nt.c (send_signal): Emulate SIGHUP.
+	(validate_signal_number): Ditto.
+
+	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Unconditionally
+	remove MOD_SHIFT from ASCII characters.
+	(mswindows_wnd_proc, WM_KEYDOWN): Do not activate the menubar when
+	F10 is pressed.
+
+1998-05-24  Oliver Graf <ograf@fga.de>
+
+	* frame-x.c (cde-start-drag-internal): added filename and multi-
+	data transfers
+	(x_cde_convert_callback) dito
+
+1998-05-26  Oliver Graf <ograf@fga.de>
+
+	* frame-x.c: include event-mod.h also with CDE
+	(x_cde_convert_callback) made the thing working
+	(cde-start-drag-internal) also debugging
+
+1998-05-25  Hans Guenter Weigand  <hgweigand@wiesbaden.netsurf.de>
+
+	* m/sparc.h:
+	* getloadavg.c:
+	* malloc.c:
+	* unexec.c:
+	* mem-limits.h:
+	  - add __OpenBSD__ where __NetBSD__ was found.
+	  - TODO: replace platform-specific conditional compilation by
+	    feature tests in configure.in.
+
+1998-05-15  Greg Klanderman  <greg@alphatech.com>
+
+	* window.c (Fwindow_displayed_text_pixel_height): New function.
+	(syms_of_window): DEFSUBR it.
+
+	* indent.c (Fvertical_motion_pixels): New function - request
+	movement in pixels.
+	(vmotion_pixels): helper.
+	(syms_of_indent): DEFSUBR.
+	* lisp.h: declaration for vmotion_pixels().
+
+	* indent.c (Fvertical_motion): Add optional third argument PIXELS,
+	to request returning motion in pixels.
+	(Fvertical_motion_pixels): Remove, functionality merged into
+	Fvertical_motion.
+ 	* window.c (window_scroll): call Fvertical_motion with 3 arguments.
+	(Fmove_to_window_line): ditto.
+	* lisp.h: Change declaration for Fvertical_motion.
+
+	* window.c: rename window-text-pixel-{height,width,edges} to
+	window-text-area-pixel-*.
+
+1998-05-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* tooltalk.c (vars_of_tooltalk) added staticpro for
+	Tooltalk_Message_plist_str and Tooltalk_Pattern_plist_str
+
+1998-05-27  Andy Piper  <andyp@parallax.co.uk>
+
+	* faces.c: create a new 3d_object_face, make modeline and
+	vertical_divider faces fallback to this rather than the default.
+
+1998-05-21  Andy Piper  <andyp@parallax.co.uk>
+
+	* s/cygwin32.h: define charsets for cygwin.
+
+1998-05-25  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c (mswindows_output_toolbar): fix up button sizes
+	and coordinates. resize bitmaps if we have already settled on a
+	different size.
+
+	* glyphs-msw.c (xpm_to_eimage): add ';' for mswindows compiler.
+
+1998-05-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
+
+	* menubar-msw.c (mswindows_handle_wm_command): Ditto.
+
+	* gui.h: Ditto.
+
+	* gui-x.c (popup_selection_callback): Ditto.
+
+	* dialog-msw.c (dialog_proc): get_callback -> get_gui_callback.
+
+	* gui.c (get_callback): Renamed to get_gui_callback.
+
+1998-05-17  Martin Buchholz  <martin@xemacs.org>
+
+	* glyphs.h: order rearrangement.
+
+	* device-tty.c (tty_asynch_device_change): Warning suppression.
+	* device-x.c (x_device_system_metrics): Warning suppression.
+	Make Doc strings consistent with coding standards.
+
+1998-05-24  Martin Buchholz  <martin@xemacs.org>
+
+	* general.c: multiple definition of `Qicon'.  general.c seems
+	  like a good home for Qicon.
+
+1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* This patch is to fix compilation warnings under Windows.
+
+	* s/windowsnt.h: Encapsulate getpid with sys_getpid.
+	Added prototypes for FSF inherited functions, with which XEmacs is
+	sprinkled thoroughly.
+	Removed some #if 0 code. Bracketed some more definitions, probably
+	related to Visual C versions prior to 4 (we do not support them).
+
+	* sysfloat.h (logb): Finally, get logb() prototyped.
+
+	* sysfile.h: Added Windows specific includes.
+	Removed old Windows specific code bracketed with #if 0.
+
+	* sysdep.h: Added prototype for xrealpath().
+
+	* sysdep.c (sys_getpid): Added function, to support '95 negative pids.
+
+	* symsinit.h: Added prototypes for syms_of_dired_mswindows,
+	vars_of_dired_mswindows and init_ntproc (Grrr).
+
+	* realpath.c: Added Windows specific include files.
+	(xrealpath): Conditionalized declaration of some auto variables on
+	S_IFLNK, to avoid warnings.
+
+	* ntproc.c: Disabled some compiler warnings. This file is going to
+	die, so I have not cleaned it up much.
+	(set_process_dir): Const parameter.
+	(Fwin32_short_file_name): Down CHECK_* macros to one argument.
+	(Fwin32_long_file_name): Ditto.
+	(Fwin32_set_process_priority): Ditto. Why didn't I remove these
+	three functions?
+
+	* nt.h: Added prototypes for set_process_dir and convert_time.
+
+	* nt.c: More include files.
+	(getpwnam): Consted char* argument.
+	(get_emacs_configuration): Const return value.
+	(opendir): Const argument.
+	(stat): Casted converstion long->short.
+	(stat): Removed ad hoc and questionable support for non-MSC compile.
+	(sys_pipe): Removed unused auto variable.
+	(_sys_read_ahead): Removed calls to DebPrint.
+	(sys_read): Ditto, in 2 places.
+	(term_ntproc): Added unused int parameter to signal handler, to
+	avoid a warning when compiling a call to signal().
+	(msw_sigset): Properly return old signandler or NULL instead of void.
+
+	* floatfns.c (Flogb): Casted arguments to unary minus to signed.
+
+	* gmalloc.c (morecore): Ditto.
+	(_free_internal): Ditto.
+
+	* lread.c (parse_integer): Ditto.
+
+	* dired-msw.c: Added several include files.
+
+	* cmdloop.c (Fcommand_loop_1): Added Microsoft C to the Big List
+	of Compilers to Shut Up.
+
+	* callproc.c: Added #includes to suppress warnings under Windows.
+	(init_callproc): Removed #if0'ed code and unused variables.
+
+1998-05-25  Andy Piper  <andyp@parallax.co.uk>
+
+	* device-msw.c (mswindows_device_system_metrics): do planes in a
+	way consistent with X.
+
+	* glyphs-msw.c (mswindows_initialize_image_instance_mask): don't
+	use SetPixel, use DIBits functions.
+	(xpm_to_eimage): frob colors more closely like xpm deos.
+
+	* toolbar-msw.c: only resize bitmaps when shrinking. Adjust look
+	to be closer to X version.
+
+	* event-msw.c: use tooltip string directly.
+
+	* redisplay-msw.c: reinstate Kirill's bg pixmap change.
+
+	* objects-msw.c: frob rgb colors that only Kyle uses.
+
+	* dialog-msw.c (button_width): INLINE -> inline.
+
+1998-05-23  SL Baur  <steve@altair.xemacs.org>
+
+	* getloadavg.c (getloadavg): Fix typo.
+
+1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* objects-msw.c (mswindows_initialize_font_instance): Added support
+	for font character sets.
+	Replaced 'XXX' with '####' in comments throughout the file.
+
+1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* emacs.c (main_1): Added calls to vars_of_dialog_mswindows() and
+	console_type_create_dialog_mswindows(), to initialize Windows dialog
+	support.
+
+	* symsinit.h: Prototyped the above functions.
+
+	* dialog-x.c (x_popup_dialog_box): Moved dialog descriptor consistency
+	checks to dialog.c...
+
+	* dialog.c (Fpopup_dialog_box): ...right here. Added more checks: a
+	device must support dialog boxes, and the descriptor must supply at
+	least one button.
+
+	* dialog-msw.c: New file, dialogs for Windows.
+
+1998-05-21  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+	* eldap.c (ldap_search_unwind): Return Qnil instead of nothing
+	(Fldap_search_internal): Removed unused variable `err'
+
+	* eldap.h: Moved Lisp_LDAP declaration here instead of using a
+	forward declaration
+
+1998-05-17  Martin Buchholz  <martin@xemacs.org>
+
+	* eldap.h: eldap.[ch] should never be used unless HAVE_LDAP is
+	defined.  Therefore there is no need to handle the case when
+	HAVE_LDAP is undefined.  Similarily, there is no reason to have
+	any code wrapped within `#ifdef emacs', since this code is only
+	useful within an emacs.  This simplifies the code significantly.
+
+	* inline.c: Include eldap.h only if HAVE_LDAP.
+	* inline.c: Don't bother including TT_C_H_PATH, since tooltalk.h
+	already does that.
+
+1998-05-21  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* unexnt.c (copy_executable_and_dump_data_section): Suppress
+	printing dump stats when building without DEBUG_XEMACS.
+	(dump_bss_and_heap): Ditto.
+
+1998-05-21  Andy Piper  <andyp@parallax.co.uk>
+
+	* gnuclient.c: don't suppress window system if there is no display
+	and we are running under mswindows. send 'mswindows device type if
+	we are in this situation.
+
+1998-05-20  Andy Piper  <andyp@parallax.co.uk>
+
+	* general.c:
+	* lisp.h: Qbitmap, Qcursor, Qicon moved here from glyphs-msw.c.
+
+	* glyphs-msw.c: change cursor imgae type name to resource. Fix
+	some nits.
+
+1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* EmacsFrame.c (Xt_StringToScrollBarPlacement):  Added support for
+	{top,bottom}-{left,right} values in addition to
+	{top,bottom}_{left,right}.
+
+1998-05-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fileio.c (Fmake_temp_name): Remove unreached code.
+
+	* process-nt.c (validate_signal_number): Use
+	signal_simple_error().
+
+1998-05-19  Martin Buchholz  <martin@xemacs.org>
+
+	* unexhp9k800.c:
+	* sound.c (vars_of_sound):
+	* sysdep.c (reset_sigio_on_device):
+	* window.c (window_bottom_gutter_height):
+	unexhp9k800.c:258: warning: implicit declaration of function
+	`calculate_checksum'
+	sound.c:604: warning: implicit declaration of function `vars_of_hpplay'
+	sysdep.c:1012: warning: unused variable `owner'
+	window.c:993: warning: `window_right_toolbar_width' defined but not used
+
+1998-05-19  Andy Piper  <andyp@parallax.co.uk>
+
+	* glyphs-msw.c (mswindows_create_resized_mask)
+	(mswindows_create_resized_bitmap): new funnctions split out from
+	mswindows_resize_dibitmap_instance.
+
+	* glyphs-msw.h: declare new resize functions.
+
+	* toolbar-msw.c (mswindows_output_toolbar): use new bitmap resize
+	functions so that the original bitmaps are preserved.
+
+	* sheap.c: fixup static heap exhausted error to avoid FAQs.
+
+	* redisplay-msw.c (mswindows_output_blank): fixup brush from bg
+	color if we are trying to output 0 depth bg pixmap.
+
+	* scrollbar-msw.c: warning elimination.
+
+1998-05-18  Martin Buchholz  <martin@xemacs.org>
+
+	* frame-x.c (x_update_frame_external_traits): Start preprocessor
+	directives in column 1.
+
+	* search.c (skip_chars): Avoid using xzero with arrays, since some
+	compilers get confused by the construct &array.
+
+1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* objects-msw.h:
+	* objects-msw.c: Changed the charset value for a new font from
+	"don't care" to "ansi".
+
+	* glyphs-msw.c (convert_EImage_to_DIBitmap): Warnings fix.
+
+1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Do not clear shift
+	modifier on control chars.
+	Use IsCharAlpha() instead of isaplha().
+
+1998-05-19  Kazuyuki IENAGA <ienaga@jsys.co.jp>
+
+	* s/freebsd.h: FreeBSD 2.2.6 now supports setlocale(LC_ALL, "").
+
+1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* objects-msw.c (mswindows_initialize_font_instance): Use ANSI
+	charset when creating font.
+	(mswindows_initialize_color_instance): Do not create brush along
+	with a color.
+	(mswindows_finalize_color_instance): Do not delete it then.
+
+	* objects-msw.h (struct mswindows_color_instance_data): Removed
+	brush slot, and corresponding accessor macro.
+
+1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* toolbar.c: Removed toolbar_data lrecord implementation.
+	(mark_frame_toolbar_buttons_dirty): Replase usage of toolbar_data
+	with toolbar_buttons (via FRAME_TOOLBAR_BUTTONS).
+	(compute_frame_toolbar_buttons): Ditto.
+	(CHECK_TOOLBAR): Ditto.
+	(set_frame_toolbar): Removed allocation of toolbar_data lrecord.
+	(update_frame_toolbars): Do not check for changed buffer
+	here. Toolbar information is provided by cached specs in
+	windows. The check for buffer is eliminated becuase toolbars are
+	marked changed in set_frame_selected_window() in frame.c
+	Added check for changed toolbars geometry.
+	(compute_frame_toolbars_data): Removed unused second parameter;
+	Adjusted callers of this static function throughout the file.
+	(init_frame_toolbars): Initialize current_toolbar_size.
+	(update_frame_toolbars): Use DEVICE_SUPPORTS_TOOLBARS_P instead of
+	what is its current expansion, for clarity.
+	(init_frame_toolbars): Ditto.
+	(init_device_toolbars): Ditto.
+	(init_global_toolbars): Ditto.
+
+	* toolbar.h: Removed definition of toolbar_data lrecord.
+	Added accessor macros FRAME_TOOLBAR_BUTTONS and
+	FRAME_CURRENT_TOOLBAR_SIZE.
+	Added macro DEVICE_SUPPORTS_TOOLBARS_P.
+
+	* toolbar-x.c (x_output_toolbar): The same change as in
+	toolbar-msw.c
+	(x_output_toolbar): Ditto.
+	(x_redraw_exposed_toolbar): Ditto.
+
+	* toolbar-msw.c (mswindows_output_toolbar): Retrieve current
+	buttons from toolbar_buttons using FRAME_TOOLBAR_BUTTONS macro.
+	(mswindows_output_toolbar): Ditto.
+	(mswindows_output_toolbar): Ditto.
+
+	* frame.c (mark_frame): Removed marking of arrays, according to
+	frameslots.h change.
+	(nuke_all_frame_slots): Ditto.
+	(set_frame_selected_window): Mark toolbars changed when
+	last_nonminibuf_window changes.
+
+	* frame.h (struct frame): Moved some slots to frameslots.h.
+	Added current_toolbar_size array.
+	Changed references from toolbar_data to toolbar_buttons in macros
+	FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE,
+	FRAME_RAW_THEORETICAL_TOOLBAR_SIZE and
+	FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH.
+
+	* frameslots.h: Added macro MARKED_SLOT_ARRAY a la winslots.h
+	Moved arrays of lisp objects here from frame.h: toolbar_size,
+	toolbar_visible_p, toolbar_border_width.
+	Removed toolbar_data slot and added toolbar_buttons.
+
+1998-05-17  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* symsinit.h: Externed syms_of_process_nt()
+
+	* emacs.c (main_1): Call syms_of_process_nt()
+
+	* process-nt.c: Quote process arguments by a call to Lisp function
+	`nt-quote-process-args'.
+	(syms_of_process_nt): New function.
+	(nt_send_process): Flush data stream after each write, to avoid
+	leaving buffered data.
+	(nt_send_process): When blocked on process output, wait for
+	process to slurp more for progressively increasing time intervals.
+
+1998-05-17  Martin Buchholz  <martin@xemacs.org>
+
+	* window.c (have_undivided_common_edge): Make file-local function
+	static.
+	(map_windows): Return 0 if all map functions successful.
+	Fix typos.
+
+	* winslots.h: Use unlikely names for local variables in macros to
+	avoid shadowing warnings.
+
+1998-05-17  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c (mswindows_output_toolbar): hash on toolbar width
+	so that we re-output if the toolbar size has changed.
+
+1998-05-17  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* s/aix4-2.h (ALIGN_DATA_RELOC): Undefined to support new unexaix.c.
+
+	* s/aix3-1.h (ALIGN_DATA_RELOC): Defined to support new unexaix.c.
+
+	* unexaix.c: Massive cleanup and support of AIX 4.2 (and hopefully
+	greater).
+
+1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* glyphs-msw.c: Defined OEMRESOURCE before including windows.h to
+	get bitmap manifest constants defined.
+
+	* console-msw.h: Include system files in angle brackets, not in
+	quotes.
+
+	* window.c (specifier_vars_of_window): Fixed a typo in
+	`vertical-divider-line-width' docstirng.
+
+1998-05-16  Olivier Galibert  <galibert@pobox.com>
+
+	* line-number.c (delete_invalidate_line_number_cache): Use an
+	EMACS_INT.
+	(buffer_line_number): Remove dangerous, plain wrong when using
+	64bits emacs ints, cast.
+
+	* insdel.c (buffer_delete_range): Use an EMACS_INT.
+
+	* cmds.c (Fforward_line): Use EMACS_INTs.
+
+	* search.c (bi_scan_buffer): Change to use EMACS_INTs.
+	(scan_buffer): Ditto.
+	(bi_find_next_newline_no_quit): Remove useless cast.
+	(find_next_newline_no_quit): Ditto.
+	(find_next_newline): Ditto.
+	(find_before_next_newline): Use an EMACS_INT.
+
+	* lisp.h: Change scan_buffer to pass EMACS_INTs.
+
+1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* menubar-msw.c (mswindows_handle_wm_command): Ditto.
+
+	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.
+
+	* gui-x.c (popup_selection_callback): Use it.
+
+	* gui.h (get_callback): Declare it.
+
+	* gui.c (get_callback): New function.
+
+1998-05-15  SL Baur  <steve@altair.xemacs.org>
+
+	* window.c (have_undivided_common_edge): Guard scrollbar specific
+	stuff.
+	(window_needs_vertical_divider_1): Ditto.
+
+1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* emacs.c (decode_path): Eliminate compiler warning.
+	(Fdecode_path): Renamed to Fsplit_path.
+	(Fsplit_string_by_char): New function.
+
+1998-05-14  Damon Lipparelli  <lipp@primus.com>
+
+	* winslots.h: close comment
+
+1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* callproc.c: Removed declared and unused variable Qbuffer_file_type.
+
+	* bufslots.h: Removed buffer_file_type slot.
+
+	* buffer.c (complex_vars_of_buffer): Removed buffer_file_type from
+	buffer local flags.
+	(complex_vars_of_buffer): Removed buffer-file-type variable and
+	its default reference.
+
+1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* faces.c (complex_vars_of_faces): Defined
+	Vvertical_divider_face.
+	(vars_of_faces): Staticpro it.
+
+	* faces.h: Externed Vvertical_divider_face.
+
+	* redisplay-x.c (x_output_vertical_divider): Use
+	Vvertical_divider_face to draw the divider instead of modeline
+	face.
+
+	* redisplay-msw.c (mswindows_output_vertical_divider): Draw
+	divider face using Vvertical_divider_face background.
+	Fix drawing spacing gaps around the divider.
+
+1998-05-14  Didier Verna  <verna@inf.enst.fr>
+
+	* redisplay-x.c (x_output_vertical_divider): removed hard-wired
+	values for the vertical divider line width and spacing. Use the
+	cached values from the window structure instead.
+	(x_divider_width): ditto.
+
+	* window.c (specifier_vars_of_window): new specifiers:
+	vertical-divier -line-width and -spacing.
+	(vertical_divider_global_width_changed): formerly known as
+	vertical_divider_shadow_thickness_changed.
+
+	* winslots.h: new slots: vertical_specifier _line_width and
+	_spacing. Plus corrected a comment typo.
+
+1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* window.h: Declared window_divider_width().
+
+	* console-stream.c (stream_divider_width): Removed method.
+	(console_type_create_stream): And declaration for it.
+
+	* redisplay.c (pixel_to_glyph_translation): Use
+	window_divider_width() instead of divider_width redisplay method.
+	(pixel_to_glyph_translation): Fix top divider edge calculation
+	when scrollbar is on top.
+
+	* window.c (window_divider_width): New function, an outphaser for
+	divider_width redisplay method.
+	(window_right_gutter_width): Use it.
+	(specifier_vars_of_window): For	vertical-divider-{spacing,line-width}
+	specifiers, set fallback values differently on TTYs, and document
+	the behavior of these on TTYs in the docstrings.
+
+	* scrollbar.c (update_scrollbar_instance): Use
+	window_divider_width() instead of divider_width redisplay method.
+
+	* console.h (struct console_methods): Removed divider_width_method.
+
+	* redisplay-tty.c (tty_divider_width): Removed device method.
+	(console_type_create_redisplay_tty): Removed definition for it.
+	(tty_output_vertical_divider): Respect the value returned by
+	window_divider_width thus divider line width specification.
+
+	* redisplay-msw.c (mswindows_divider_width): Removed device method.
+	(console_type_create_redisplay_mswindows): Removed definition for it.
+	(mswinodws_output_vertical_divider): Respect the value returned by
+	window_divider_width thus divider line width specification.
+
+1998-05-15  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c: guess toolbar frame size a bit more accurately.
+
+1998-05-15  Andy Piper  <andyp@parallax.co.uk>
+
+	* glyphs-msw.c: resource loading implementation.
+	(cursor_normalize): new function.
+	(cursor_validate): ditto.
+	(cursor_instantiate): ditto.
+	(cursor_name_to_resource): ditto.
+	(cursor_possible_dest_types): ditto.
+	(check_valid_symbol): ditto.
+	(check_valid_string_or_int): ditto.
+
+1998-05-14  Martin Buchholz  <martin@xemacs.org>
+
+	* sysdep.c (tty_init_sys_modes_on_device): Treat VSUSP just like
+	VINTR and VQUIT.
+
+	* process-unix.c (process_signal_char): Use VSUSP instead of
+	non-standard VSWTCH.  Always prefer VSUSP to VSWTCH.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* specifier.c (specifier_instance): Change locale precedence of
+	instantiation so window locale has higher priority than buffer
+	locale.
+	(Fspecifier_instance): Reflect this in docstring.
+	(Fadd_spec_list_to_specifier): Ditto.
+	(Fadd_spec_to_specifier): Ditto.
+	(Fremove_specifier): Ditto.
+
+1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	** Dialog separation into a device method from Andy Piper
+
+	* emacs.c (main_1): Call console_type_create_dialog_x().
+
+	* dialog-x.c (x_popup_dialog_box): Old Fpopup_dialog_box converted
+	into this device method.
+	(console_type_create_dialog_x): New function.
+
+	* dialog.c (Fpopup_dialog_box): New function.
+	(syms_of_dialog): Defsubr it.
+
+	* console.h (struct console_methods): Declared
+	popup_dialog_box_method().
+
+	* symsinit.h: Defined console_type_create_dialog_{x,mswindows}
+
+1998-05-14  Oliver Graf <ograf@fga.de>
+
+	* dragdrop.c (vars_of_dragdrop): dragdrop-protocols created
+	* frame-x.c (x_cde_transfer_callback): checked for merge errors
+
+1998-05-13  Oliver Graf <ograf@fga.de>
+
+	* dragdrop.c (vars_of_dragdrop): provide dragdrop-api
+
+1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* console.h (device_metrics): Removed dbcs, input-method-editor
+	and right-to-left metrics.
+
+	* device.c (Fdevice_system_metric): Ditto.
+	(Fdevice_system_metrics): Ditto.
+	(syms_of_device): Ditto.
+	(Fdevice_system_metric): Swapped DEVICE and METRIC parameters back
+	again.
+
+1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* line-number.h (mark_line_number_cache): Remove unused
+	declaration.
+
+	* line-number.c (LINE_NUMBER_FAR): Increase to 32768.
+	(get_nearest_line_number): Simplify.
+	(add_position_to_cache): Make the old marker point nowhere.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	** Renamed window-divider-map => vertical-divider-map
+	and event-over-divider-p => event-over-vertical-divider-p,
+	in the following files/functions:
+	* events.h:
+	* events.c (Fevent_over_divider_p):
+	* keymap.c (get_relevant_keymaps):
+	(vars_of_keymap):
+
+	* redisplay.h (OVER_V_DIVIDER): Renamed so from OVER_DIVIDER.
+
+	* redisplay.c (pixel_to_glyph_translation): Use OVER_V_DIVIDER.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* window.c (vertical_divider_changed_in_window): Renamed so.
+	(specifier_vars_of_window): Defined Vvertical_divider_draggable_p.
+	(window_needs_vertical_divider_1): Decide whether we need it based
+	on the value of the above specifier. If separators are unwanted,
+	put them only if there's no scrollbar between this window and its
+	right neighbor.
+	(have_undivided_common_edge): New function, helper for the above.
+	(window_needs_vertical_divider): Return either a cached value,
+	or clauclate and cache one.
+	(invalidate_vertical_divider_cache_in_window): Implemented.
+	(map_windows): Changed return type to int, return the value from
+	MAPFUN.
+
+	* window.h: Prototype invalidate_vertical_divider_cache_in_window.
+	(struct window): Added need_vertical_divider_p and
+	need_vertical_divider_valid_p.
+
+	* winslots.h: Added vertical_divider_draggable_p slot.
+
+	* scrollbar.c (vertical_scrollbar_changed_in_window): Implemented.
+	(specifier_vars_of_scrollbar): Used it in all vertical specifiers.
+
+	* frame.c (invalidate_vertical_divider_cache_in_frame): New function.
+
+	* frame.h (MARK_FRAME_WINDOWS_STRUCTURE_CHANGED): Call
+	invalidate_vertical_divider_cache_in_frame().
+	Prototype it.
+
+1998-05-14  Andy Piper  <andyp@parallax.co.uk>
+
+	* toolbar-msw.c: provide correct parameters to TB_SETROWS.
+
+	* glyphs-msw.c (mswindows_initialize_image_instance_mask): size
+	masks correctly and don't select 0.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* winslots.h: New file, declaration of some struct window and
+	struct saved_window members.
+
+	* window.h (struct window): Include it, with required preprocessor
+	magic.
+
+	* window.c (mark_window): Ditto.
+	(allocate_window): Ditto.
+	(struct saved_window): Ditto.
+	(mark_window_config): Ditto.
+	(saved_window_equal): Ditto.
+	(Fset_window_configuration): Ditto.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* redisplay-msw.c (mswindows_output_vertical_divider): Syntax fix.
+
+1998-05-12  Didier Verna  <verna@inf.enst.fr>
+
+	* redisplay-x.c (x_output_vertical_divider): draw shadows around
+	the divider line. The shadow thickness is currently
+	hard-wired. This will probably be turned into a specifier soon.
+
+1998-05-12  Didier Verna  <verna@inf.enst.fr>
+
+	* console.h (struct console_methods): the divider_width console
+	method now requires a struct window * argument.
+
+	* redisplay-x.c (x_divider_width): ditto. Plus remove
+	X_DIVIDER_WIDTH, X_DIVIDER_SHADOW_THICKNESS.
+	(x_output_vertical_divider): give a depressed look when the shadow
+	thickness is negative.
+
+	* console-stream.c (stream_divider_width): pass a struct window *
+	argument.
+
+	* redisplay-tty.c (tty_divider_width): ditto.
+
+	* window.c (window_right_gutter_width): totdi.
+
+	* redisplay.c (generate_modeline): ittod.
+
+	* scrollbar.c (update_scrollbar_instance): ttido.
+
+	* redisplay-msw.c (mswindows_divider_width): ottid.
+	WARNING: this enables to compile, but the feature is not functional.
+
+	* window.h (struct window): new field
+	vertical_divider_shadow_thickness.
+
+	* window.c (specifier_vars_of_window): new specifier
+	vertical-divider-shadow-thickness.
+	(vertical_divider_shadow_thickness_changed): new function to
+	inform redisplay that the window has changed.
+	(mark_window): handle new field vertical_divider_shadow_thickness
+	from struct window.
+	(allocate_window): ditto.
+	(saved_window_equal): toddi.
+	(Fset_window_configuration): totid.
+	(save_window_save): ttdio.
+	(struct saved_window): new field vertical_divider_shadow_thickness.
+
+1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* device-msw.c (mswindows_device_system_metrics): Support a deluge
+	of metrics.
+
+1998-05-12  Oliver Graf <ograf@fga.de>
+
+	* frame-x.c (x_cde_transfer_callback): fixed for the new protocol
+	* event-Xt.c (x_event_to_emacs_event): C++ compability
+
+1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* emacs.c (Fdecode_path): Default SEPCHAR to value of
+	path-separator.
+
+1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* emacs.c (vars_of_emacs): Do it here; change the meaning of
+	Vpath_separator.
+
+	* fileio.c (vars_of_fileio): Don't define Vpath_separator here.
+
+1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* emacs.c (decode_path_1): New function.
+	(decode_path): Use it.
+	(Fdecode_path): Renamed from Fdecode_path_internal; use
+	decode_path_1.
+
+1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* macros.c (Fzap_last_kbd_macro_event): New function.
+	(Fend_kbd_macro): Remove REMOVE_LAST kludge.
+
+1998-05-10  Andy Piper  <andyp@parallax.co.uk>
+
+	* redisplay-msw.c (mswindows_output_dibitmap_region): make sure
+	multiple bitmaps are output vertically as well as horizontally.
+	* (mswindows_output_dibitmap): don't cope with bitmap boundaries
+	crossing lines this is handled by
+	mswindows_output_dibitmap_region.
+
+1998-05-12  Martin Buchholz  <martin@xemacs.org>
+
+	* inline.c: Include eldap.h
+
+	* menubar-x.c (x_update_frame_menubar_internal):
+	Remove: unused variable `container'
+
+1998-05-11  Martin Buchholz  <martin@xemacs.org>
+
+	* s/aix4.h: Allow AIX 4.3 XEmacs to compile cleanly.
+	Unfortunately, the resulting temacs still cannot dump.
+
+	* symbols.c (symbol_is_constant):
+	(verify_ok_for_buffer_local):
+	-Wswitch Warning suppression - add default case to switches.
+
+	* redisplay.c (decode_mode_spec): Remove unused variables,
+	Replace Fcoding_system_property (codesys, Qmnemonic) with
+	XCODING_SYSTEM_MNEMONIC (codesys);
+	Fcoding_system_property is for users.
+
+	* buffer.c:
+	* fileio.c:
+	* lread.c:
+	* xselect.c:
+	Change empty docstrings into no doc strings at all.
+	Fix bogus FSF-format docstrings.
+
+	* extents.c:
+	Standardize docstrings.
+
+	* floatfns.c:
+	Explain problems with matherr.
+
+	* glyphs.c:  make DEFUNs etags-readable, i.e. single-line
+
+	* syssignal.h:
+	if BROKEN_SIGIO, then SIGIO wants to be undefined.
+	if SIGIO and not SIGPOLL, SIGPOLL wants to be SIGIO.\
+	Fix the weird resultant interaction (causes windows problems)
+
+	* gdbinit:
+	* dbxrc:
+	Take new EMACSBOOTSTRAPLOADPATH into account.
+	Update documentation strings
+
+	* Makefile.in.in:
+	- Adjust for luser's CDPATH being set to something weird.
+	- Take into account bash 2.02's tendency to print the cwd when
+	  using CDPATH.  Always use `cd ./foo' instead of `cd foo'.
+	- fix the run-temacs target to use $(DUMPENV)
+	- fix the run-puremacs target to use $(DUMPENV)
+	- fix the `depend' target to properly $(RM) the right files
+	- Generate a better TAGS file for XEmacs' lisp code using
+	  hand-crafted regexps.
+	- Use standard coding conventions for modules/Makefile.in
+
+1998-05-12  Didier Verna  <verna@inf.enst.fr>
+
+	* redisplay.c: removed the scrolling modeline code that didn't
+	make it for 21.0. To be continued ...
+
+1998-05-13  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+	* emacs.c (Fdecode_path_internal): Removed bogus handling of nil
+	and empty string inputs.
+
+1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* redisplay-x.c (x_output_vertical_divider): Fixed typo.
+
+1998-05-10  Oliver Graf <ograf@fga.de>
+
+	* event-stream.c (enqueue_misc_user_event_pos): created
+	* lisp.h (enqueue_misc_user_event_pos): prototype added
+	* frame-x.c (x_cde_transfer_callback): debug code plus API changes
+	* emacs.c: call vars_of_dragdrop
+	* dragdrop.c (vars_of_dragdrop): provide dragdrop
+
+1998-05-11  Oliver Graf <ograf@fga.de>
+
+	* frame-x.c (x_cde_transfer_callback): return at correct pos
+	* event-Xt.c (x_event_to_emacs_event): changed format of drop
+	object for MIME (see comment in dragdrop.c)
+	* dragdrop.c: API change documented in comment
+	removed provide of dragdrop [is provided by dragdrop.el]
+
+1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* window.c (window_needs_vertical_divider): Enable vertical
+	dividers for every non-rightmost window.
+	(window_left_gutter_width): Left gutter consists of mythical
+	toolbar and a virtual scrollbar.
+	(window_right_gutter_width): The right one may have a divider
+	also.
+
+	* scrollbar.c (update_scrollbar_instance): Position vertical
+	scrollbar left to divider if the latter present.
+
+	* redisplay.h: Declared OVER_DIVIER constant.
+
+	* redisplay.c (pixel_to_glyph_translation): Handle OVER_DIVIDER
+	case.
+
+	* redisplay-x.c (x_output_vertical_divider): Output divider along
+	the right side of the window, down to window bottom. Swapped
+	foreground and background colors so it is visible by default.
+
+	* redisplay-tty.c (tty_output_vertical_divider): Uncondiionally
+	stick the divider to the right window side.
+
+	* redisplay-msw.c (mswindows_redisplay_deadbox_maybe): Fixed
+	deadbox painting.
+	(mswindows_divider_width): Ask system for user preferred value.
+	(mswindows_output_vertical_divider): Always output the divider on
+	the right side of a window, down to bottom.
+
+	* keymap.c (get_relevant_keymaps): Route mouse button events which
+	happened over a window divider through window-divider-map.
+	(Fkey_binding): Documented that in the docstring.
+	Defined the variable Vwindow_divider_map.
+
+	* events.c (Fevent_over_divider_p): Added this function.
+
+	* events.h: EXFUNed it.
+
+1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* toolbar.c (update_frame_toolbars): Re-layout frame windows if
+	toolbar geometry is suspected to change.
+
+1998-05-11  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* src/device-msw.c
+	* src/event-msw.c
+	Condition dnd and dde code on HAVE_DRAGNDROP.
+
+1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* events.c (format_event_object): Print space as SPC etc.
+
+1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* print.c (print_internal): In the default case, abort() if
+	ERROR_CHECK_TYPECHECK.
+
+	* fileio.c (Fmake_temp_name): Doc fix.
+
+1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* xgccache.c (describe_gc_cache): Define only if DEBUG_XEMACS.
+
+	* undo.c (Fprimitive_undo): Fixed typo.
+
+1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* fns.c (concat): Signal error on integer argument.
+
+1998-05-10  Kirill M. Katsnelson  <kkm@kis.ru>
+
+	* console.h (device_metrics): Prefixed each constatnt with DM_
+
+	* device.c: (Fdevice_system_metric): Renamed so from plural form
+	(metrics); Changed parameters order and added DEFAULT parameter;
+	Unabbreviated some metric constants; Fixed and untabified doc string.
+	(Fdevice_system_metrics): Added. Returns a plist of all provided
+	metrics.
+
+	* device-msw.c (mswindows_device_system_metrics): Renamed
+	device_metrics enum constants.
+	Return Qunbound instead of Qnil.
+
+	* device-tty.c (tty_device_system_metrics): Ditto.
+
+	* device-x.c (x_device_system_metrics): Ditto.
+
+1998-05-10  Andy Piper  <andyp@parallax.co.uk>
+
+	* redisplay-msw.c: implement background pixmaps (really!). Make
+	sure bg color is transparent if we have bg pmaps.
+	* (mswindows_output_string) (mswindows_clear_region): output bg
+	pmap if required.
+	* (mswindows_output_dibitmap_region): new function.
+	* (mswindows_output_dibitmap): output offset pixmaps, blt masks in
+	the bg color rather than transparently.
+
+	* toolbar-msw.c: use masks if they exist.
+
+	* glyphs-msw.c: set up masks correctly.
+
+	* event-msw.c: typedef SOCKET if cygwin and not msg select().
+
+1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* regex.c (re_match_2_internal): Check for quit.
+
+1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* frame.c (Ffocus_frame): New function.
--- a/src/Makefile.in.in	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/Makefile.in.in	Mon Aug 13 11:32:25 2007 +0200
@@ -502,7 +502,7 @@
 ## Purify
 PURIFY_PROG  = purify
 PURIFY_FLAGS = -chain-length=32 -ignore-signals=SIGPOLL -threads=yes \
- -cache-dir=./purecache -always-use-cache-dir=yes -pointer-mask=0x0fffffff
+ -cache-dir=./purecache -always-use-cache-dir=yes
 PURIFY_LIBS  = -lpthread
 puremacs: $(temacs_deps)
 	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
--- a/src/alloc.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/alloc.c	Mon Aug 13 11:32:25 2007 +0200
@@ -496,8 +496,8 @@
 /************************************************************************/
 /* Give gdb/dbx enough information to decode Lisp Objects.  We make
    sure certain symbols are always defined, so gdb doesn't complain
-   about expressions in src/gdbinit.  See src/gdbinit or src/dbxrc to
-   see how this is used.  */
+   about expressions in src/.gdbinit.  See src/.gdbinit or src/.dbxrc
+   to see how this is used.  */
 
 EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS;
 EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1;
@@ -1720,7 +1720,7 @@
 
    This new method makes things somewhat bigger, but it is MUCH safer.  */
 
-DECLARE_FIXED_TYPE_ALLOC (string, struct Lisp_String);
+DECLARE_FIXED_TYPE_ALLOC (string, Lisp_String);
 /* strings are used and freed quite often */
 /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 10000 */
 #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 1000
@@ -1728,7 +1728,7 @@
 static Lisp_Object
 mark_string (Lisp_Object obj)
 {
-  struct Lisp_String *ptr = XSTRING (obj);
+  Lisp_String *ptr = XSTRING (obj);
 
   if (CONSP (ptr->plist) && EXTENT_INFOP (XCAR (ptr->plist)))
     flush_cached_extent_info (XCAR (ptr->plist));
@@ -1764,7 +1764,7 @@
 				      */
 				     0, string_equal, 0,
 				     string_description,
-				     struct Lisp_String);
+				     Lisp_String);
 
 /* String blocks contain this many useful bytes. */
 #define STRING_CHARS_BLOCK_SIZE					\
@@ -1789,27 +1789,22 @@
  *  the string occupies in string_chars_block->string_chars
  *  (including alignment padding).
  */
-#define STRING_FULLSIZE(s) \
-   ALIGN_SIZE (((s) + 1 + sizeof (struct Lisp_String *)),\
-               ALIGNOF (struct Lisp_String *))
+#define STRING_FULLSIZE(size) \
+   ALIGN_SIZE (((size) + 1 + sizeof (Lisp_String *)),\
+               ALIGNOF (Lisp_String *))
 
 #define BIG_STRING_FULLSIZE_P(fullsize) ((fullsize) >= STRING_CHARS_BLOCK_SIZE)
 #define BIG_STRING_SIZE_P(size) (BIG_STRING_FULLSIZE_P (STRING_FULLSIZE(size)))
 
-#define CHARS_TO_STRING_CHAR(x) \
-  ((struct string_chars *) \
-   (((char *) (x)) - (slot_offset (struct string_chars, chars[0]))))
-
-
 struct string_chars
 {
-  struct Lisp_String *string;
+  Lisp_String *string;
   unsigned char chars[1];
 };
 
 struct unused_string_chars
 {
-  struct Lisp_String *string;
+  Lisp_String *string;
   EMACS_INT fullsize;
 };
 
@@ -1824,19 +1819,14 @@
 }
 
 static struct string_chars *
-allocate_string_chars_struct (struct Lisp_String *string_it_goes_with,
+allocate_string_chars_struct (Lisp_String *string_it_goes_with,
 			      EMACS_INT fullsize)
 {
   struct string_chars *s_chars;
 
-  /* Allocate the string's actual data */
-  if (BIG_STRING_FULLSIZE_P (fullsize))
-    {
-      s_chars = (struct string_chars *) xmalloc (fullsize);
-    }
-  else if (fullsize <=
-           (countof (current_string_chars_block->string_chars)
-            - current_string_chars_block->pos))
+  if (fullsize <=
+      (countof (current_string_chars_block->string_chars)
+       - current_string_chars_block->pos))
     {
       /* This string can fit in the current string chars block */
       s_chars = (struct string_chars *)
@@ -1868,21 +1858,20 @@
 Lisp_Object
 make_uninit_string (Bytecount length)
 {
-  struct Lisp_String *s;
-  struct string_chars *s_chars;
+  Lisp_String *s;
   EMACS_INT fullsize = STRING_FULLSIZE (length);
   Lisp_Object val;
 
-  if ((length < 0) || (fullsize <= 0))
-    abort ();
+  assert (length >= 0 && fullsize > 0);
 
   /* Allocate the string header */
-  ALLOCATE_FIXED_TYPE (string, struct Lisp_String, s);
+  ALLOCATE_FIXED_TYPE (string, Lisp_String, s);
   set_lheader_implementation (&(s->lheader), &lrecord_string);
 
-  s_chars = allocate_string_chars_struct (s, fullsize);
-
-  set_string_data (s, &(s_chars->chars[0]));
+  set_string_data (s, BIG_STRING_FULLSIZE_P (fullsize)
+		   ? xnew_array (Bufbyte, length + 1)
+		   : allocate_string_chars_struct (s, fullsize)->chars);
+
   set_string_length (s, length);
   s->plist = Qnil;
 
@@ -1903,8 +1892,9 @@
 */
 
 void
-resize_string (struct Lisp_String *s, Bytecount pos, Bytecount delta)
+resize_string (Lisp_String *s, Bytecount pos, Bytecount delta)
 {
+  Bytecount oldfullsize, newfullsize;
 #ifdef VERIFY_STRING_CHARS_INTEGRITY
   verify_string_chars_integrity ();
 #endif
@@ -1923,47 +1913,59 @@
     }
 #endif /* ERROR_CHECK_BUFPOS */
 
-  if (pos >= 0 && delta < 0)
-  /* If DELTA < 0, the functions below will delete the characters
-     before POS.  We want to delete characters *after* POS, however,
-     so convert this to the appropriate form. */
-    pos += -delta;
-
   if (delta == 0)
     /* simplest case: no size change. */
     return;
-  else
+
+  if (pos >= 0 && delta < 0)
+    /* If DELTA < 0, the functions below will delete the characters
+       before POS.  We want to delete characters *after* POS, however,
+       so convert this to the appropriate form. */
+    pos += -delta;
+
+  oldfullsize = STRING_FULLSIZE (string_length (s));
+  newfullsize = STRING_FULLSIZE (string_length (s) + delta);
+
+  if (BIG_STRING_FULLSIZE_P (oldfullsize))
     {
-      Bytecount oldfullsize = STRING_FULLSIZE (string_length (s));
-      Bytecount newfullsize = STRING_FULLSIZE (string_length (s) + delta);
-
-      if (oldfullsize == newfullsize)
+      if (BIG_STRING_FULLSIZE_P (newfullsize))
 	{
-	  /* next simplest case; size change but the necessary
-	     allocation size won't change (up or down; code somewhere
-	     depends on there not being any unused allocation space,
-	     modulo any alignment constraints). */
+	  /* Both strings are big.  We can just realloc(). */
+	  set_string_data (s, (Bufbyte *) xrealloc (string_data (s),
+						    string_length (s) + delta + 1));
 	  if (pos >= 0)
 	    {
 	      Bufbyte *addroff = pos + string_data (s);
 
 	      memmove (addroff + delta, addroff,
-		       /* +1 due to zero-termination. */
 		       string_length (s) + 1 - pos);
 	    }
 	}
-      else if (BIG_STRING_FULLSIZE_P (oldfullsize) &&
-	       BIG_STRING_FULLSIZE_P (newfullsize))
+      else /* String has been demoted from BIG_STRING. */
 	{
-	  /* next simplest case; the string is big enough to be malloc()ed
-	     itself, so we just realloc.
-
-	     It's important not to let the string get below the threshold
-	     for making big strings and still remain malloc()ed; if that
-	     were the case, repeated calls to this function on the same
-	     string could result in memory leakage. */
-	  set_string_data (s, (Bufbyte *) xrealloc (string_data (s),
-						    newfullsize));
+	  Bufbyte *new_data =
+	    allocate_string_chars_struct (s, newfullsize)->chars;
+	  Bufbyte *old_data = string_data (s);
+
+	  if (pos >= 0)
+	    {
+	      memcpy (new_data, old_data, pos);
+	      memcpy (new_data + pos + delta, old_data + pos,
+		      string_length (s) + 1 - pos);
+	    }
+	  set_string_data (s, new_data);
+	  xfree (old_data);
+	}
+    }
+  else /* old string is small */
+    {
+      if (oldfullsize == newfullsize)
+	{
+	  /* special case; size change but the necessary
+	     allocation size won't change (up or down; code
+	     somewhere depends on there not being any unused
+	     allocation space, modulo any alignment
+	     constraints). */
 	  if (pos >= 0)
 	    {
 	      Bufbyte *addroff = pos + string_data (s);
@@ -1975,58 +1977,52 @@
 	}
       else
 	{
-	  /* worst case.  We make a new string_chars struct and copy
-	     the string's data into it, inserting/deleting the delta
-	     in the process.  The old string data will either get
-	     freed by us (if it was malloc()ed) or will be reclaimed
-	     in the normal course of garbage collection. */
-	  struct string_chars *s_chars =
-	    allocate_string_chars_struct (s, newfullsize);
-	  Bufbyte *new_addr = &(s_chars->chars[0]);
-	  Bufbyte *old_addr = string_data (s);
+	  Bufbyte *old_data = string_data (s);
+	  Bufbyte *new_data =
+	    BIG_STRING_FULLSIZE_P (newfullsize)
+	    ? xnew_array (Bufbyte, string_length (s) + delta + 1)
+	    : allocate_string_chars_struct (s, newfullsize)->chars;
+
 	  if (pos >= 0)
 	    {
-	      memcpy (new_addr, old_addr, pos);
-	      memcpy (new_addr + pos + delta, old_addr + pos,
+	      memcpy (new_data, old_data, pos);
+	      memcpy (new_data + pos + delta, old_data + pos,
 		      string_length (s) + 1 - pos);
 	    }
-	  set_string_data (s, new_addr);
-	  if (BIG_STRING_FULLSIZE_P (oldfullsize))
-	    xfree (old_addr);
-	  else
-	    {
-	      /* We need to mark this chunk of the string_chars_block
-		 as unused so that compact_string_chars() doesn't
-		 freak. */
-	      struct string_chars *old_s_chars =
-		(struct string_chars *) ((char *) old_addr -
-					 sizeof (struct Lisp_String *));
-	      /* Sanity check to make sure we aren't hosed by strange
-	         alignment/padding. */
-	      assert (old_s_chars->string == s);
-	      MARK_STRUCT_AS_FREE (old_s_chars);
-	      ((struct unused_string_chars *) old_s_chars)->fullsize =
-		oldfullsize;
-	    }
+	  set_string_data (s, new_data);
+
+	  {
+	    /* We need to mark this chunk of the string_chars_block
+	       as unused so that compact_string_chars() doesn't
+	       freak. */
+	    struct string_chars *old_s_chars = (struct string_chars *)
+	      ((char *) old_data - offsetof (struct string_chars, chars));
+	    /* Sanity check to make sure we aren't hosed by strange
+	       alignment/padding. */
+	    assert (old_s_chars->string == s);
+	    MARK_STRUCT_AS_FREE (old_s_chars);
+	    ((struct unused_string_chars *) old_s_chars)->fullsize =
+	      oldfullsize;
+	  }
 	}
-
-      set_string_length (s, string_length (s) + delta);
-      /* If pos < 0, the string won't be zero-terminated.
-	 Terminate now just to make sure. */
-      string_data (s)[string_length (s)] = '\0';
-
-      if (pos >= 0)
-	{
-	  Lisp_Object string;
-
-	  XSETSTRING (string, s);
-	  /* We also have to adjust all of the extent indices after the
-	     place we did the change.  We say "pos - 1" because
-	     adjust_extents() is exclusive of the starting position
-	     passed to it. */
-	  adjust_extents (string, pos - 1, string_length (s),
-			  delta);
-	}
+    }
+
+  set_string_length (s, string_length (s) + delta);
+  /* If pos < 0, the string won't be zero-terminated.
+     Terminate now just to make sure. */
+  string_data (s)[string_length (s)] = '\0';
+
+  if (pos >= 0)
+    {
+      Lisp_Object string;
+
+      XSETSTRING (string, s);
+      /* We also have to adjust all of the extent indices after the
+	 place we did the change.  We say "pos - 1" because
+	 adjust_extents() is exclusive of the starting position
+	 passed to it. */
+      adjust_extents (string, pos - 1, string_length (s),
+		      delta);
     }
 
 #ifdef VERIFY_STRING_CHARS_INTEGRITY
@@ -2037,7 +2033,7 @@
 #ifdef MULE
 
 void
-set_string_char (struct Lisp_String *s, Charcount i, Emchar c)
+set_string_char (Lisp_String *s, Charcount i, Emchar c)
 {
   Bufbyte newstr[MAX_EMCHAR_LEN];
   Bytecount bytoff = charcount_to_bytecount (string_data (s), i);
@@ -2160,7 +2156,7 @@
 Lisp_Object
 make_string_nocopy (CONST Bufbyte *contents, Bytecount length)
 {
-  struct Lisp_String *s;
+  Lisp_String *s;
   Lisp_Object val;
 
   /* Make sure we find out about bad make_string_nocopy's when they happen */
@@ -2169,7 +2165,7 @@
 #endif
 
   /* Allocate the string header */
-  ALLOCATE_FIXED_TYPE (string, struct Lisp_String, s);
+  ALLOCATE_FIXED_TYPE (string, Lisp_String, s);
   set_lheader_implementation (&(s->lheader), &lrecord_string);
   SET_C_READONLY_RECORD_HEADER (&s->lheader);
   s->plist = Qnil;
@@ -2993,7 +2989,7 @@
         {
           struct string_chars *s_chars =
             (struct string_chars *) &(sb->string_chars[pos]);
-          struct Lisp_String *string;
+          Lisp_String *string;
 	  int size;
 	  int fullsize;
 
@@ -3044,7 +3040,7 @@
           struct string_chars *from_s_chars =
             (struct string_chars *) &(from_sb->string_chars[from_pos]);
           struct string_chars *to_s_chars;
-          struct Lisp_String *string;
+          Lisp_String *string;
 	  int size;
 	  int fullsize;
 
@@ -3129,7 +3125,7 @@
 static int debug_string_purity;
 
 static void
-debug_string_purity_print (struct Lisp_String *p)
+debug_string_purity_print (Lisp_String *p)
 {
   Charcount i;
   Charcount s = string_char_length (p);
@@ -3155,24 +3151,25 @@
   int num_small_used = 0, num_small_bytes = 0, num_bytes = 0;
   int debug = debug_string_purity;
 
-#define UNMARK_string(ptr)				\
-  do { struct Lisp_String *p = (ptr);			\
-       int size = string_length (p);			\
-       UNMARK_RECORD_HEADER (&(p->lheader));		\
-       num_bytes += size;				\
-       if (!BIG_STRING_SIZE_P (size))			\
-	 { num_small_bytes += size;			\
-	   num_small_used++;				\
-	 }						\
-       if (debug) debug_string_purity_print (p);	\
-     } while (0)
-#define ADDITIONAL_FREE_string(p)				\
-  do { int size = string_length (p);				\
-       if (BIG_STRING_SIZE_P (size))				\
-	 xfree_1 (CHARS_TO_STRING_CHAR (string_data (p)));	\
-     } while (0)
-
-  SWEEP_FIXED_TYPE_BLOCK (string, struct Lisp_String);
+#define UNMARK_string(ptr) do {			\
+    Lisp_String *p = (ptr);			\
+    size_t size = string_length (p);		\
+    UNMARK_RECORD_HEADER (&(p->lheader));	\
+    num_bytes += size;				\
+    if (!BIG_STRING_SIZE_P (size))		\
+      { num_small_bytes += size;		\
+      num_small_used++;				\
+      }						\
+    if (debug)					\
+      debug_string_purity_print (p);		\
+  } while (0)
+#define ADDITIONAL_FREE_string(ptr) do {	\
+    size_t size = string_length (ptr);		\
+    if (BIG_STRING_SIZE_P (size))		\
+      xfree (ptr->data);			\
+  } while (0)
+
+  SWEEP_FIXED_TYPE_BLOCK (string, Lisp_String);
 
   gc_count_num_short_string_in_use = num_small_used;
   gc_count_string_total_size = num_bytes;
@@ -3485,7 +3482,7 @@
     for (i = 0; i < staticidx; i++)
       mark_object (*(staticvec[i]));
     for (i = 0; i < staticidx_nodump; i++)
-      mark_object (*(staticvec_nodump[i]));    
+      mark_object (*(staticvec_nodump[i]));
   }
 
   { /* GCPRO() */
@@ -4150,7 +4147,7 @@
  *			- lrecord_implementations_table[]
  *			- relocation table
  *                      - wired variable address/value couples with the count preceding the list
- */	
+ */
 typedef struct
 {
   char signature[8];
@@ -4264,7 +4261,7 @@
     {
       if (e->obj == obj)
 	return;
-      
+
       pos++;
       if (pos == PDUMP_HASHSIZE)
 	pos = 0;
@@ -4311,7 +4308,7 @@
   pdump_struct_table.list[pdump_struct_table.count].list.align = 8;
   pdump_struct_table.list[pdump_struct_table.count].list.count = 0;
   pdump_struct_table.list[pdump_struct_table.count].sdesc = sdesc;
-  
+
   return &pdump_struct_table.list[pdump_struct_table.count++].list;
 }
 
@@ -4436,11 +4433,11 @@
 	    int i;
 	    if (XD_IS_INDIRECT (count))
 	      count = pdump_get_indirect_count (count, desc, data);
-	    
+
 	    for(i=0;i<count;i++) {
 	      const Lisp_Object *pobj = ((const Lisp_Object *)rdata) + i;
 	      Lisp_Object dobj = *pobj;
-	      
+
 	      backtrace[me].offset = (const char *)pobj - (const char *)data;
 	      pdump_register_object (dobj);
 	    }
@@ -4454,7 +4451,7 @@
 	    if (dobj) {
 	      if (XD_IS_INDIRECT (count))
 		count = pdump_get_indirect_count (count, desc, data);
-	      
+
 	      pdump_register_struct (dobj, sdesc, count);
 	    }
 	    break;
@@ -4474,7 +4471,7 @@
       !POINTER_TYPE_P (XTYPE (obj)) ||
       pdump_get_entry (XRECORD_LHEADER (obj)))
     return;
-  
+
   if (XRECORD_LHEADER_IMPLEMENTATION (obj)->description)
     {
       int me = depth++;
@@ -4522,7 +4519,7 @@
       backtrace[me].obj = 0;
       backtrace[me].position = 0;
       backtrace[me].offset = 0;
-      
+
       pdump_add_entry (pdump_get_entry_list (sdesc),
 		       data,
 		       sdesc->size,
@@ -4548,7 +4545,7 @@
       int pos, i;
       void *rdata;
       memcpy (pdump_buf, elmt->obj, size*count);
-      
+
       for (i=0; i<count; i++)
 	{
 	  char *cur = ((char *)pdump_buf) + i*size;
@@ -4614,7 +4611,7 @@
 		    int i;
 		    if (XD_IS_INDIRECT (count))
 		      count = pdump_get_indirect_count (count, desc, elmt->obj);
-		    
+
 		    for(i=0; i<count; i++)
 		      {
 			Lisp_Object *pobj = ((Lisp_Object *)rdata) + i;
@@ -4681,7 +4678,7 @@
 	  int i;
 	  if (XD_IS_INDIRECT (count))
 	    count = pdump_get_indirect_count (count, desc, data);
-	  
+
 	  for (i=0; i<count; i++)
 	    {
 	      Lisp_Object *pobj = ((Lisp_Object *)rdata) + i;
@@ -4736,7 +4733,7 @@
 		elmt = elmt->next;
 	      }
 	  }
-      
+
       for (i=0; i<pdump_struct_table.count; i++)
 	if (pdump_struct_table.list[i].list.align == align) {
 	  elmt = pdump_struct_table.list[i].list.first;
@@ -4747,7 +4744,7 @@
 	      elmt = elmt->next;
 	    }
 	}
-      
+
       elmt = pdump_opaque_data_list.first;
       while (elmt)
 	{
@@ -4793,7 +4790,7 @@
 static void
 pdump_dump_itable (void)
 {
-  write (pdump_fd, lrecord_implementations_table, sizeof (lrecord_implementations_table));  
+  write (pdump_fd, lrecord_implementations_table, sizeof (lrecord_implementations_table));
 }
 
 static void
@@ -4858,7 +4855,7 @@
       write (pdump_fd, &pdump_wirevec[i], sizeof (pdump_wirevec[i]));
       write (pdump_fd, &obj, sizeof (obj));
     }
-  
+
   for (i=0; i<pdump_wireidx_list; i++)
     {
       Lisp_Object obj = *(pdump_wirevec_list[i]);
@@ -4915,7 +4912,7 @@
     }
   pdump_struct_table.count = 0;
   pdump_struct_table.size = -1;
-  
+
   pdump_opaque_data_list.first = 0;
   pdump_opaque_data_list.align = 8;
   pdump_opaque_data_list.count = 0;
@@ -4939,17 +4936,17 @@
     return;
 
   for (i=0; i<dumpstructidx; i++)
-    pdump_register_struct (*(void **)(dumpstructvec[i].data), dumpstructvec[i].desc, 1); 
+    pdump_register_struct (*(void **)(dumpstructvec[i].data), dumpstructvec[i].desc, 1);
 
   memcpy (hd.signature, "XEmacsDP", 8);
   hd.reloc_address = 0;
   hd.nb_staticpro = staticidx;
   hd.nb_structdmp = dumpstructidx;
   hd.last_type    = last_lrecord_type_index_assigned;
-  
+
   cur_offset = 256;
   max_size = 0;
-  
+
   pdump_scan_by_alignement (pdump_allocate_offset);
   pdump_qnil = pdump_get_entry (XRECORD_LHEADER (Qnil));
 
@@ -5003,7 +5000,7 @@
   if (pdump_start == MAP_FAILED)
     pdump_start = 0;
 #endif
-  
+
   if (!pdump_start)
     {
       pdump_start = (void *)((((unsigned long)(malloc(length+255))) + 255) & ~255);
--- a/src/bytecode.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/bytecode.c	Mon Aug 13 11:32:25 2007 +0200
@@ -527,6 +527,10 @@
   }
 
  wrong_number_of_arguments:
+  /* The actual printed compiled_function object is incomprehensible.
+     Check the backtrace to see if we can get a more meaningful symbol. */
+  if (EQ (fun, indirect_function (*backtrace_list->function, 0)))
+    fun = *backtrace_list->function;
   return Fsignal (Qwrong_number_of_arguments, list2 (fun, make_int (nargs)));
 }
 
--- a/src/config.h.in	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/config.h.in	Mon Aug 13 11:32:25 2007 +0200
@@ -308,6 +308,11 @@
 #undef HAVE_SOCKADDR_SUN_LEN
 #undef HAVE_MULTICAST
 #undef HAVE_SYSVIPC
+#undef HAVE_LOCKF
+#undef HAVE_FLOCK
+#undef HAVE_FSYNC
+#undef HAVE_FTRUNCATE
+#undef HAVE_UMASK
 
 #undef SYSV_SYSTEM_DIR
 #undef NONSYSTEM_DIR_LIBRARY
@@ -797,17 +802,11 @@
 /* Should movemail use hesiod for getting POP server host? */
 #undef HESIOD
 /* Determine type of mail locking. */
-/* Play preprocessor games so that configure options override s&m files */
-#undef REAL_MAIL_USE_LOCKF
-#undef REAL_MAIL_USE_FLOCK
-#undef MAIL_USE_LOCKF
-#undef MAIL_USE_FLOCK
-#ifdef REAL_MAIL_USE_FLOCK
-#define MAIL_USE_FLOCK
-#endif
-#ifdef REAL_MAIL_USE_LOCKF
-#define MAIL_USE_LOCKF
-#endif
+#undef MAIL_LOCK_LOCKF
+#undef MAIL_LOCK_FLOCK
+#undef MAIL_LOCK_DOT
+#undef MAIL_LOCK_LOCKING
+#undef MAIL_LOCK_MMDF
 
 #undef PREFIX_USER_DEFINED
 #undef EXEC_PREFIX_USER_DEFINED
--- a/src/console-tty.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/console-tty.c	Mon Aug 13 11:32:25 2007 +0200
@@ -278,6 +278,8 @@
   set_encoding_stream_coding_system
     (XLSTREAM (CONSOLE_TTY_DATA (decode_tty_console (console))->outstream),
      Fget_coding_system (NILP (codesys) ? Vterminal_coding_system : codesys));
+  /* Redraw tty */
+  face_property_was_changed (Vdefault_face, Qfont, Qtty);
   return Qnil;
 }
 
--- a/src/dbxrc	Mon Aug 13 11:31:26 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-# -*- ksh -*-
-# 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.
-
-# Author: Martin Buchholz
-
-# You can use this file to debug XEmacs using Sun WorkShop's dbx.
-# Add the contents of this file to $HOME/.dbxrc or
-# Source the contents of this file with something like:
-# if test -r ./dbxrc; then . ./dbxrc; fi
-
-# Some functions defined here require a running process, but most
-# don't.  Considerable effort has been expended to this end.
-
-# See also the comments in gdbinit.
-
-# See also the question of the XEmacs FAQ, titled
-# "How to Debug an XEmacs problem with a debugger".
-
-ignore POLL
-ignore IO
-
-document lbt << 'end'
-Usage: lbt
-Print the current Lisp stack trace.
-Requires a running xemacs process.
-end
-
-function lbt {
-  call debug_backtrace()
-}
-
-document ldp << 'end'
-Usage: ldp lisp_object
-Print a Lisp Object value using the Lisp printer.
-Requires a running xemacs process.
-end
-
-function ldp {
-  call debug_print ($1);
-}
-
-# A bug in dbx prevents string variables from having values beginning with `-'!!
-function XEmacsInit {
-  function ToInt { eval "$1=\$[(int) $1]"; }
-  ToInt dbg_USE_UNION_TYPE
-  ToInt Lisp_Type_Int
-  ToInt Lisp_Type_Char
-  ToInt Lisp_Type_Cons
-  ToInt Lisp_Type_String
-  ToInt Lisp_Type_Vector
-  ToInt Lisp_Type_Symbol
-  ToInt Lisp_Type_Record
-  ToInt dbg_valbits
-  ToInt dbg_gctypebits
-  function ToLong { eval "$1=\$[(unsigned long) $1]"; }
-  ToLong dbg_valmask
-  ToLong dbg_typemask
-  xemacs_initted=yes
-}
-
-function printvar {
-  for i in $*; do eval "echo $i=\$$i"; done
-}
-
-document decode_object << 'end'
-Usage: decode_object lisp_object
-Extract implementation information from a Lisp Object.
-Defines variables $val, $type and $imp.
-end
-
-# Various dbx bugs cause ugliness in following code
-function decode_object {
-  if test -z "$xemacs_initted"; then XEmacsInit; fi;
-  if test $dbg_USE_UNION_TYPE = 1; then
-    # Repeat after me... dbx sux, dbx sux, dbx sux...
-    # Allow both `pobj Qnil' and `pobj 0x82746834' to work
-    case $(whatis $1) in
-      *Lisp_Object*) obj="$[(unsigned long)(($1).i)]";;
-      *) obj="$[(unsigned long)($1)]";;
-    esac
-  else
-    obj="$[(unsigned long)($1)]";
-  fi
-  if test $[(int)($obj & 1)] = 1; then
-    # It's an int
-    val=$[(long)(((unsigned long long)$obj) >> 1)]
-    type=$Lisp_Type_Int
-  else
-    type=$[(int)(((void*)$obj) & $dbg_typemask)]
-    if test $type = $Lisp_Type_Char; then
-      val=$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> $dbg_gctypebits)]
-    else
-      # It's a record pointer
-      val=$[(void*)$obj]
-      if test "$val" = "(nil)"; then type=null_pointer; fi
-    fi
-  fi
-
-  if test $type = $Lisp_Type_Record; then
-    typeset lheader="((struct lrecord_header *) $val)"
-    imp=$[(void*)(lrecord_implementations_table[$lheader->type])]
-  else
-    imp="0xdeadbeef"
-  fi
-  # printvar obj val type imp
-}
-
-function xint {
-  decode_object "$*"
-  print (long) ($val)
-}
-
-function xtype {
-  decode_object "$*"
-  if   test $type = $Lisp_Type_Int;    then echo "int"
-  elif test $type = $Lisp_Type_Char;   then echo "char"
-  elif test $type = $Lisp_Type_Symbol; then echo "symbol"
-  elif test $type = $Lisp_Type_String; then echo "string"
-  elif test $type = $Lisp_Type_Vector; then echo "vector"
-  elif test $type = $Lisp_Type_Cons;   then echo "cons"
-  elif test $type = null_pointer;      then echo "null_pointer"
-  else
-    echo "record type with name: $[((struct lrecord_implementation *)$imp)->name]"
-  fi
-}
-
-function lisp-shadows {
-  run -batch -vanilla -f list-load-path-shadows
-}
-
-function environment-to-run-temacs {
-  unset EMACSLOADPATH
-  export EMACSBOOTSTRAPLOADPATH=../lisp/:..
-  export EMACSBOOTSTRAPMODULEPATH=../modules/:..
-}
-
-document run-temacs << 'end'
-Usage: run-temacs
-Run temacs interactively, like xemacs.
-Use this with debugging tools (like purify) that cannot deal with dumping,
-or when temacs builds successfully, but xemacs does not.
-end
-
-function run-temacs {
-  environment-to-run-temacs
-  run -batch -l ../lisp/loadup.el run-temacs -q
-}
-
-document update-elc << 'end'
-Usage: update-elc
-Run the core lisp byte compilation part of the build procedure.
-Use when debugging temacs, not xemacs!
-Use this when temacs builds successfully, but xemacs does not.
-end
-
-function update-elc {
-  environment-to-run-temacs
-  run -batch -l ../lisp/update-elc.el
-}
-
-
-function dump-temacs {
-  environment-to-run-temacs
-  run -batch -l ../lisp/loadup.el dump
-}
-
-document dump-temacs << 'end'
-Usage: dump-temacs
-Run the dumping part of the build procedure.
-Use when debugging temacs, not xemacs!
-Use this when temacs builds successfully, but xemacs does not.
-end
-
-function pstruct {
-  xstruct="((struct $1 *) $val)"
-  print $xstruct
-  print *$xstruct
-}
-
-function lrecord_type_p {
-  if eval test -z \"\$lrecord_$1\" && test $imp = $[(void*)(&lrecord_$1)]; then return 0; else return 1; fi
-}
-
-document pobj << 'end'
-Usage: pobj lisp_object
-Print the internal C structure of a underlying Lisp Object.
-end
-
-function pobj {
-  decode_object $1
-  if test $type = $Lisp_Type_Int; then
-    print -f"Integer: %d" $val
-  elif test $type = $Lisp_Type_Char; then
-    if test $[$val > 32 && $val < 128] = 1; then
-      print -f"Char: %c" $val
-    else
-      print -f"Char: %d" $val
-    fi
-  elif test $type = $Lisp_Type_String || lrecord_type_p string; then
-    pstruct Lisp_String
-  elif test $type = $Lisp_Type_Cons   || lrecord_type_p cons; then
-    pstruct Lisp_Cons
-  elif test $type = $Lisp_Type_Symbol || lrecord_type_p symbol; then
-    pstruct Lisp_Symbol
-    echo "Symbol name: $[(char *)($xstruct->name->data)]"
-  elif test $type = $Lisp_Type_Vector || lrecord_type_p vector; then
-    pstruct Lisp_Vector
-    echo "Vector of length $[$xstruct->size]"
-  elif lrecord_type_p bit_vector; then
-    pstruct Lisp_Bit_Vector
-  elif lrecord_type_p buffer; then
-    pstruct buffer
-  elif lrecord_type_p char_table; then
-    pstruct Lisp_Char_Table
-  elif lrecord_type_p char_table_entry; then
-    pstruct Lisp_Char_Table_Entry
-  elif lrecord_type_p charset; then
-    pstruct Lisp_Charset
-  elif lrecord_type_p coding_system; then
-    pstruct Lisp_Coding_System
-  elif lrecord_type_p color_instance; then
-    pstruct Lisp_Color_Instance
-  elif lrecord_type_p command_builder; then
-    pstruct command_builder
-  elif lrecord_type_p compiled_function; then
-    pstruct Lisp_Compiled_Function
-  elif lrecord_type_p console; then
-    pstruct console
-  elif lrecord_type_p database; then
-    pstruct Lisp_Database
-  elif lrecord_type_p device; then
-    pstruct device
-  elif lrecord_type_p event; then
-    pstruct Lisp_Event
-  elif lrecord_type_p extent; then
-    pstruct extent
-  elif lrecord_type_p extent_auxiliary; then
-    pstruct extent_auxiliary
-  elif lrecord_type_p extent_info; then
-    pstruct extent_info
-  elif lrecord_type_p face; then
-    pstruct Lisp_Face
-  elif lrecord_type_p float; then
-    pstruct Lisp_Float
-  elif lrecord_type_p font_instance; then
-    pstruct Lisp_Font_Instance
-  elif lrecord_type_p frame; then
-    pstruct frame
-  elif lrecord_type_p glyph; then
-    pstruct Lisp_Glyph
-  elif lrecord_type_p hash_table; then
-    pstruct Lisp_Hash_Table
-  elif lrecord_type_p image_instance; then
-    pstruct Lisp_Image_Instance
-  elif lrecord_type_p keymap; then
-    pstruct Lisp_Keymap
-  elif lrecord_type_p lcrecord_list; then
-    pstruct lcrecord_list
-  elif lrecord_type_p lstream; then
-    pstruct lstream
-  elif lrecord_type_p marker; then
-    pstruct Lisp_Marker
-  elif lrecord_type_p opaque; then
-    pstruct Lisp_Opaque
-  elif lrecord_type_p opaque_ptr; then
-    pstruct Lisp_Opaque_Ptr
-  elif lrecord_type_p popup_data; then
-    pstruct popup_data
-  elif lrecord_type_p process; then
-    pstruct Lisp_Process
-  elif lrecord_type_p range_table; then
-    pstruct Lisp_Range_Table
-  elif lrecord_type_p specifier; then
-    pstruct Lisp_Specifier
-  elif lrecord_type_p subr; then
-    pstruct Lisp_Subr
-  elif lrecord_type_p symbol_value_buffer_local; then
-    pstruct symbol_value_buffer_local
-  elif lrecord_type_p symbol_value_forward; then
-    pstruct symbol_value_forward
-  elif lrecord_type_p symbol_value_lisp_magic; then
-    pstruct symbol_value_lisp_magic
-  elif lrecord_type_p symbol_value_varalias; then
-    pstruct symbol_value_varalias
-  elif lrecord_type_p toolbar_button; then
-    pstruct toolbar_button
-  elif lrecord_type_p tooltalk_message; then
-    pstruct Lisp_Tooltalk_Message
-  elif lrecord_type_p tooltalk_pattern; then
-    pstruct Lisp_Tooltalk_Pattern
-  elif lrecord_type_p weak_list; then
-    pstruct weak_list
-  elif lrecord_type_p window; then
-    pstruct window
-  elif lrecord_type_p window_configuration; then
-    pstruct window_config
-  elif test "$type" = "null_pointer"; then
-    echo "Lisp Object is a null pointer!!"
-  else
-    echo "Unknown Lisp Object type"
-    print $1
-  fi
-}
-
-function pproc {
-  print *(`process.c`struct Lisp_Process*)$1 ;
-  ldp "(`process.c`struct Lisp_Process*)$1->name" ;
-  ldp "(`process.c`struct Lisp_Process*)$1->command" ;
-}
-
-dbxenv suppress_startup_message 4.0
-dbxenv mt_watchpoints on
-
-function dp_core {
-  print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core
-}
-
-# Barf!
-function print_shell {
-  print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((struct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget)
-}
-
-# -------------------------------------------------------------
-# functions to test the debugging support itself.
-# If you change this file, make sure the following still work...
-# -------------------------------------------------------------
-function test_xtype {
-  function doit { echo -n "$1: "; xtype "$1"; }
-  test_various_objects
-}
-
-function test_pobj {
-  function doit { echo '==============================='; echo -n "$1: "; pobj "$1"; }
-  test_various_objects
-}
-
-function test_various_objects {
-  doit Vemacs_major_version
-  doit Vhelp_char
-  doit Qnil
-  doit Qunbound
-  doit Vobarray
-  doit Vall_weak_lists
-  doit Vxemacs_codename
-}
--- a/src/depend	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/depend	Mon Aug 13 11:32:25 2007 +0200
@@ -11,7 +11,7 @@
 device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
 dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
 frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
 gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
@@ -19,7 +19,7 @@
 objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h specifier.h symeval.h symsinit.h
 redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h
 scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-select-msw.o: $(LISP_H) conslots.h console-msw.h console.h lisp-disunion.h lisp-union.h lrecord.h select.h symeval.h symsinit.h
+select-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h
 toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 #endif
 #ifdef HAVE_X_WINDOWS
@@ -94,7 +94,7 @@
 editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
 eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h toolbar.h
 emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h
 eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
--- a/src/elhash.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/elhash.c	Mon Aug 13 11:32:25 2007 +0200
@@ -413,19 +413,11 @@
 /************************************************************************/
 
 /* Creation of hash tables, without error-checking. */
-static double
-hash_table_rehash_threshold (Lisp_Hash_Table *ht)
-{
-  return
-    ht->rehash_threshold > 0.0 ? ht->rehash_threshold :
-    ht->size > 4096 && !ht->test_function ? 0.7 : 0.6;
-}
-
 static void
 compute_hash_table_derived_values (Lisp_Hash_Table *ht)
 {
   ht->rehash_count = (size_t)
-    ((double) ht->size * hash_table_rehash_threshold (ht));
+    ((double) ht->size * ht->rehash_threshold);
   ht->golden_ratio = (size_t)
     ((double) ht->size * (.6180339887 / (double) sizeof (Lisp_Object)));
 }
@@ -440,10 +432,6 @@
   Lisp_Object hash_table;
   Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table);
 
-  ht->rehash_size      = rehash_size;
-  ht->rehash_threshold = rehash_threshold;
-  ht->weakness         = weakness;
-
   switch (test)
     {
     case HASH_TABLE_EQ:
@@ -465,15 +453,21 @@
       abort ();
     }
 
-  if (ht->rehash_size <= 0.0)
-    ht->rehash_size = HASH_TABLE_DEFAULT_REHASH_SIZE;
+  ht->weakness = weakness;
+
+  ht->rehash_size =
+    rehash_size > 1.0 ? rehash_size : HASH_TABLE_DEFAULT_REHASH_SIZE;
+
+  ht->rehash_threshold =
+    rehash_threshold > 0.0 ? rehash_threshold :
+    size > 4096 && !ht->test_function ? 0.7 : 0.6;
+
   if (size < HASH_TABLE_MIN_SIZE)
     size = HASH_TABLE_MIN_SIZE;
-  if (rehash_threshold < 0.0)
-    rehash_threshold = 0.75;
-  ht->size =
-    hash_table_size ((size_t) ((double) size / hash_table_rehash_threshold (ht)) + 1);
+  ht->size = hash_table_size ((size_t) (((double) size / ht->rehash_threshold)
+					+ 1.0));
   ht->count = 0;
+
   compute_hash_table_derived_values (ht);
 
   /* We leave room for one never-occupied sentinel hentry at the end.  */
@@ -500,8 +494,7 @@
 		      enum hash_table_weakness weakness,
 		      enum hash_table_test test)
 {
-  return make_general_lisp_hash_table
-    (test, size, HASH_TABLE_DEFAULT_REHASH_SIZE, -1.0, weakness);
+  return make_general_lisp_hash_table (test, size, -1.0, -1.0, weakness);
 }
 
 /* Pretty reading of hash tables.
@@ -1090,7 +1083,7 @@
 */
        (hash_table))
 {
-  return make_float (hash_table_rehash_threshold (xhash_table (hash_table)));
+  return make_float (xhash_table (hash_table)->rehash_threshold);
 }
 
 DEFUN ("hash-table-weakness", Fhash_table_weakness, 1, 1, 0, /*
--- a/src/emacs.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/emacs.c	Mon Aug 13 11:32:25 2007 +0200
@@ -36,6 +36,7 @@
 #include "console.h"
 #include "process.h"
 #include "redisplay.h"
+#include "frame.h"
 #include "sysdep.h"
 
 #include "syssignal.h" /* Always include before systty.h */
@@ -155,6 +156,7 @@
 Lisp_Object Vsite_directory, Vconfigure_site_directory;
 Lisp_Object Vconfigure_info_path;
 Lisp_Object Vinternal_error_checking;
+Lisp_Object Vmail_lock_methods, Vconfigure_mail_lock_method;
 Lisp_Object Vpath_separator;
 
 /* The default base directory XEmacs is installed under. */
@@ -1711,7 +1713,9 @@
       reinit_vars_of_lread ();
       reinit_vars_of_lstream ();
       reinit_vars_of_minibuf ();
+#ifdef HAVE_SHLIB
       reinit_vars_of_module ();
+#endif
       reinit_vars_of_objects ();
       reinit_vars_of_print ();
       reinit_vars_of_redisplay ();
@@ -1726,6 +1730,9 @@
 
 #ifdef HAVE_X_WINDOWS
       reinit_vars_of_device_x ();
+#endif
+#ifdef HAVE_SCROLLBARS
+      reinit_vars_of_scrollbar_x ();
 #ifdef HAVE_MENUBARS
       reinit_vars_of_menubar_x ();
 #endif
@@ -1800,6 +1807,7 @@
 
   init_redisplay ();      /* Determine terminal type.
 			     init_sys_modes uses results */
+  init_frame ();
   init_event_stream (); /* Set up so we can get user input. */
   init_macros (); /* set up so we can run macros. */
   init_editfns (); /* Determine the name of the user we're running as */
@@ -3086,6 +3094,46 @@
 				    Vinternal_error_checking);
 #endif
 
+  DEFVAR_CONST_LISP ("mail-lock-methods", &Vmail_lock_methods /*
+Mail spool locking methods supported by this instance of XEmacs.
+This is a list of symbols.  Each of the symbols is one of the
+following: dot, lockf, flock, locking, mmdf.
+*/ );
+  {
+    Vmail_lock_methods = Qnil;
+    Vmail_lock_methods = Fcons (intern ("dot"), Vmail_lock_methods);
+#ifdef HAVE_LOCKF
+    Vmail_lock_methods = Fcons (intern ("lockf"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_FLOCK
+    Vmail_lock_methods = Fcons (intern ("flock"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_MMDF
+    Vmail_lock_methods = Fcons (intern ("mmdf"), Vmail_lock_methods);
+#endif
+#ifdef HAVE_LOCKING
+    Vmail_lock_methods = Fcons (intern ("locking"), Vmail_lock_methods);
+#endif
+  }
+  
+  DEFVAR_CONST_LISP ("configure-mail-lock-method", &Vconfigure_mail_lock_method /*
+Mail spool locking method suggested by configure.  This is one
+of the symbols in MAIL-LOCK-METHODS.
+*/ );
+  {
+#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK)
+    Vconfigure_mail_lock_method = intern("flock");
+#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF)
+    Vconfigure_mail_lock_method = intern("lockf");
+#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF)
+    Vconfigure_mail_lock_method = intern("mmdf");
+#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING)
+    Vconfigure_mail_lock_method = intern("locking");
+#else
+    Vconfigure_mail_lock_method = intern("dot");
+#endif
+  }
+
   DEFVAR_LISP ("path-separator", &Vpath_separator /*
 The directory separator in search paths, as a string.
 */ );
--- a/src/eval.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/eval.c	Mon Aug 13 11:32:25 2007 +0200
@@ -4743,7 +4743,7 @@
 
 DEFUN ("backtrace", Fbacktrace, 0, 2, "", /*
 Print a trace of Lisp function calls currently active.
-Option arg STREAM specifies the output stream to send the backtrace to,
+Optional arg STREAM specifies the output stream to send the backtrace to,
 and defaults to the value of `standard-output'.  Optional second arg
 DETAILED means show places where currently active variable bindings,
 catches, condition-cases, and unwind-protects were made as well as
@@ -4786,8 +4786,8 @@
       if (!NILP (detailed) && catches && catches->backlist == backlist)
 	{
           int catchpdl = catches->pdlcount;
-          if (specpdl[catchpdl].func == condition_case_unwind
-              && speccount > catchpdl)
+          if (speccount > catchpdl
+	      && specpdl[catchpdl].func == condition_case_unwind)
             /* This is a condition-case catchpoint */
             catchpdl = catchpdl + 1;
 
--- a/src/event-Xt.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/event-Xt.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1339,8 +1339,8 @@
      is mandatory. Weirdly you get a FocusOut event when you click in
      a widget-glyph but you don't get a correspondng FocusIn when you
      click in the frame. Why is this?  */
-  if (in_p 
-#if XtSpecificationRelease > 5      
+  if (in_p
+#if XtSpecificationRelease > 5
       && FRAME_X_TEXT_WIDGET (f) != focus_widget
 #endif
       )
@@ -2011,22 +2011,24 @@
 Xt_process_to_emacs_event (struct Lisp_Event *emacs_event)
 {
   int i;
-  Lisp_Object process;
 
   assert (process_events_occurred > 0);
+
   for (i = 0; i < MAXDESC; i++)
     {
-      process = filedesc_with_input[i];
+      Lisp_Object process = filedesc_with_input[i];
       if (PROCESSP (process))
-	break;
+	{
+	  filedesc_with_input[i] = Qnil;
+	  process_events_occurred--;
+	  /* process events have nil as channel */
+	  emacs_event->event_type = process_event;
+	  emacs_event->timestamp  = 0; /* #### */
+	  emacs_event->event.process.process = process;
+	  return;
+	}
     }
-  assert (i < MAXDESC);
-  filedesc_with_input[i] = Qnil;
-  process_events_occurred--;
-  /* process events have nil as channel */
-  emacs_event->event_type = process_event;
-  emacs_event->timestamp  = 0; /* #### */
-  emacs_event->event.process.process = process;
+  abort ();
 }
 
 static void
--- a/src/event-msw.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/event-msw.c	Mon Aug 13 11:32:25 2007 +0200
@@ -2264,9 +2264,7 @@
 	  VOID_TO_LISP (image_instance, ii);
 	  if (IMAGE_INSTANCEP (image_instance)
 	      &&
-	      IMAGE_INSTANCE_TYPE_P (image_instance, IMAGE_WIDGET)
-	      &&
-	      !NILP (XIMAGE_INSTANCE_WIDGET_FACE (image_instance)))
+	      IMAGE_INSTANCE_TYPE_P (image_instance, IMAGE_WIDGET))
 	    {
 	      /* set colors for the buttons */
 	      HDC hdc = (HDC)wParam;
@@ -3004,7 +3002,7 @@
   mswindows_s_dispatch_event_queue = Qnil;
   staticpro (&mswindows_s_dispatch_event_queue);
   mswindows_s_dispatch_event_queue_tail = Qnil;
-  pdump_wire (&mswindows_u_dispatch_event_queue_tail);
+  pdump_wire (&mswindows_s_dispatch_event_queue_tail);
 
   mswindows_error_caught_in_modal_loop = Qnil;
   staticpro (&mswindows_error_caught_in_modal_loop);
--- a/src/events.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/events.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1059,7 +1059,7 @@
 
   if (event->event_type != key_press_event)
     {
-      if (event->event_type == dead_event) abort ();
+      assert (event->event_type != dead_event);
       return -1;
     }
   if (!allow_extra_modifiers &&
--- a/src/extents.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/extents.c	Mon Aug 13 11:32:25 2007 +0200
@@ -4618,14 +4618,9 @@
   int speccount;
 };
 
-/* This juggling with the pointer to another file's global variable is
-   kind of yucky.  Perhaps I should just export the variable.  */
-static int *inside_change_hook_pointer;
-
 static Lisp_Object
 report_extent_modification_restore (Lisp_Object buffer)
 {
-  *inside_change_hook_pointer = 0;
   if (current_buffer != XBUFFER (buffer))
     Fset_buffer (buffer);
   return Qnil;
@@ -4650,7 +4645,13 @@
   /* Now that we are sure to call elisp, set up an unwind-protect so
      inside_change_hook gets restored in case we throw.  Also record
      the current buffer, in case we change it.  Do the recording only
-     once.  */
+     once.
+
+     One confusing thing here is that our caller never actually calls
+     unbind_to (closure.speccount, Qnil).  This is because
+     map_extents_bytind() unbinds before, and with a smaller
+     speccount.  The additional unbind_to() in
+     report_extent_modification() would cause XEmacs to abort.  */
   if (closure->speccount == -1)
     {
       closure->speccount = specpdl_depth ();
@@ -4666,7 +4667,10 @@
   /* #### It's a shame that we can't use any of the existing run_hook*
      functions here.  This is so because all of them work with
      symbols, to be able to retrieve default values of local hooks.
-     <sigh> */
+     <sigh>
+
+     #### Idea: we could set up a dummy symbol, and call the hook
+     functions on *that*.  */
 
   if (!CONSP (hook) || EQ (XCAR (hook), Qlambda))
     call3 (hook, exobj, startobj, endobj);
@@ -4674,6 +4678,8 @@
     {
       Lisp_Object tail;
       EXTERNAL_LIST_LOOP (tail, hook)
+	/* #### Shouldn't this perform the same Fset_buffer() check as
+           above?  */
 	call3 (XCAR (tail), exobj, startobj, endobj);
     }
   return 0;
@@ -4681,7 +4687,7 @@
 
 void
 report_extent_modification (Lisp_Object buffer, Bufpos start, Bufpos end,
-			    int *inside, int afterp)
+			    int afterp)
 {
   struct report_extent_modification_closure closure;
 
@@ -4691,20 +4697,8 @@
   closure.afterp = afterp;
   closure.speccount = -1;
 
-  inside_change_hook_pointer = inside;
-  *inside = 1;
-
   map_extents (start, end, report_extent_modification_mapper, (void *)&closure,
 	       buffer, NULL, ME_MIGHT_CALL_ELISP);
-
-  if (closure.speccount == -1)
-    *inside = 0;
-  else
-    {
-      /* We mustn't unbind when closure.speccount != -1 because
-	 map_extents_bytind has already done that.  */
-      assert (*inside == 0);
-    }
 }
 
 
--- a/src/extents.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/extents.h	Mon Aug 13 11:32:25 2007 +0200
@@ -367,7 +367,7 @@
 				    Bytind opoint, Bytecount length);
 void process_extents_for_deletion (Lisp_Object object, Bytind from,
 				   Bytind to, int destroy_them);
-void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int *, int);
+void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int);
 
 void set_extent_glyph (EXTENT extent, Lisp_Object glyph, int endp,
 		       glyph_layout layout);
--- a/src/file-coding.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/file-coding.c	Mon Aug 13 11:32:25 2007 +0200
@@ -424,7 +424,7 @@
     }
 }
 
-static enum eol_type
+static eol_type_t
 symbol_to_eol_type (Lisp_Object symbol)
 {
   CHECK_SYMBOL (symbol);
@@ -438,7 +438,7 @@
 }
 
 static Lisp_Object
-eol_type_to_symbol (enum eol_type type)
+eol_type_to_symbol (eol_type_t type)
 {
   switch (type)
     {
@@ -1059,7 +1059,7 @@
 }
 
 static Lisp_Object
-subsidiary_coding_system (Lisp_Object coding_system, enum eol_type type)
+subsidiary_coding_system (Lisp_Object coding_system, eol_type_t type)
 {
   Lisp_Coding_System *cs = XCODING_SYSTEM (coding_system);
   Lisp_Object new_coding_system;
@@ -1400,7 +1400,7 @@
 
 struct detection_state
 {
-  enum eol_type eol_type;
+  eol_type_t eol_type;
   int seen_non_ascii;
   int mask;
 #ifdef MULE
@@ -1481,7 +1481,7 @@
   return (mask & (mask - 1)) == 0;
 }
 
-static enum eol_type
+static eol_type_t
 detect_eol_type (struct detection_state *st, CONST unsigned char *src,
 		 unsigned int n)
 {
@@ -1643,7 +1643,7 @@
 
 void
 determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
-			      enum eol_type *eol_type_in_out)
+			      eol_type_t *eol_type_in_out)
 {
   struct detection_state decst;
 
@@ -1946,7 +1946,7 @@
      EOL type stored in CODESYS because the latter might indicate
      automatic EOL-type detection while the former will always
      indicate a particular EOL type. */
-  enum eol_type eol_type;
+  eol_type_t eol_type;
 #ifdef MULE
   /* Additional ISO2022 information.  We define the structure above
      because it's also needed by the detection routines. */
--- a/src/file-coding.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/file-coding.h	Mon Aug 13 11:32:25 2007 +0200
@@ -96,7 +96,7 @@
 
   Lisp_Object post_read_conversion, pre_write_conversion;
 
-  enum eol_type eol_type;
+  eol_type_t eol_type;
 
   /* Subsidiary coding systems that specify a particular type of EOL
      marking, rather than autodetecting it.  These will only be non-nil
@@ -500,7 +500,7 @@
 void set_encoding_stream_coding_system (Lstream *stream,
 					Lisp_Object codesys);
 void determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
-				   enum eol_type *eol_type_in_out);
+				   eol_type_t *eol_type_in_out);
 
 
 #ifndef MULE
--- a/src/fns.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/fns.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1850,7 +1850,7 @@
 plists_differ (Lisp_Object a, Lisp_Object b, int nil_means_not_present,
 	       int laxp, int depth)
 {
-  int eqp = (depth == -1);	/* -1 as depth means us eq, not equal. */
+  int eqp = (depth == -1);	/* -1 as depth means use eq, not equal. */
   int la, lb, m, i, fill;
   Lisp_Object *keys, *vals;
   char *flags;
--- a/src/frame.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/frame.c	Mon Aug 13 11:32:25 2007 +0200
@@ -116,6 +116,10 @@
 Lisp_Object Qframe_being_created;
 
 static void store_minibuf_frame_prop (struct frame *f, Lisp_Object val);
+static struct display_line title_string_display_line;
+/* Used by generate_title_string. Global because they get used so much that
+   the dynamic allocation time adds up. */
+static Emchar_dynarr *title_string_emchar_dynarr;
 
 EXFUN (Fset_frame_properties, 2);
 
@@ -2674,8 +2678,8 @@
 
   window = FRAME_SELECTED_WINDOW (f);
 
-  egw = max (glyph_width (Vcontinuation_glyph, Vdefault_face, 0, window),
-	     glyph_width (Vtruncation_glyph, Vdefault_face, 0, window));
+  egw = max (glyph_width (Vcontinuation_glyph, window),
+	     glyph_width (Vtruncation_glyph, window));
   egw = max (egw, cpw);
   bdr = 2 * f->internal_border_width;
   obw = FRAME_SCROLLBAR_WIDTH (f) + FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH (f) +
@@ -2850,9 +2854,9 @@
   {
     int adjustment, trunc_width, cont_width;
 
-    trunc_width = glyph_width (Vtruncation_glyph, Vdefault_face, 0,
+    trunc_width = glyph_width (Vtruncation_glyph, 
 			       FRAME_SELECTED_WINDOW (f));
-    cont_width = glyph_width (Vcontinuation_glyph, Vdefault_face, 0,
+    cont_width = glyph_width (Vcontinuation_glyph, 
 			      FRAME_SELECTED_WINDOW (f));
     adjustment = max (trunc_width, cont_width);
     adjustment = max (adjustment, font_width);
@@ -2967,6 +2971,37 @@
 }
 
 
+/* The caller is responsible for freeing the returned string. */
+static Bufbyte *
+generate_title_string (struct window *w, Lisp_Object format_str,
+		       face_index findex, int type)
+{
+  struct display_line *dl;
+  struct display_block *db;
+  int elt = 0;
+
+  dl = &title_string_display_line;
+  db = get_display_block_from_line (dl, TEXT);
+  Dynarr_reset (db->runes);
+
+  generate_formatted_string_db (format_str, Qnil, w, dl, db, findex, 0,
+                                -1, type);
+
+  Dynarr_reset (title_string_emchar_dynarr);
+  while (elt < Dynarr_length (db->runes))
+    {
+      if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR)
+	Dynarr_add (title_string_emchar_dynarr,
+		    Dynarr_atp (db->runes, elt)->object.chr.ch);
+      elt++;
+    }
+
+  return
+    convert_emchar_string_into_malloced_string
+    (Dynarr_atp (title_string_emchar_dynarr, 0),
+     Dynarr_length (title_string_emchar_dynarr), 0);
+}
+
 void
 update_frame_title (struct frame *f)
 {
@@ -2990,8 +3025,8 @@
 
   if (HAS_FRAMEMETH_P (f, set_title_from_bufbyte))
     {
-      title = generate_formatted_string (w, title_format, Qnil,
-                                         DEFAULT_INDEX, CURRENT_DISP);
+      title = generate_title_string (w, title_format,
+				     DEFAULT_INDEX, CURRENT_DISP);
       FRAMEMETH (f, set_title_from_bufbyte, (f, title));
     }
 
@@ -3002,8 +3037,8 @@
 	  if (title)
 	    xfree (title);
 
-	  title = generate_formatted_string (w, icon_format, Qnil,
-                                             DEFAULT_INDEX, CURRENT_DISP);
+	  title = generate_title_string (w, icon_format,
+					 DEFAULT_INDEX, CURRENT_DISP);
 	}
       FRAMEMETH (f, set_icon_name_from_bufbyte, (f, title));
     }
@@ -3062,6 +3097,24 @@
 }
 
 
+/***************************************************************************/
+/*									   */
+/*                              initialization                             */
+/*									   */
+/***************************************************************************/
+
+void
+init_frame (void)
+{
+#ifndef PDUMP
+  if (!initialized)
+#endif
+    {
+      title_string_emchar_dynarr = Dynarr_new (Emchar);
+      xzero (title_string_display_line);
+    }
+}
+
 void
 syms_of_frame (void)
 {
--- a/src/frame.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/frame.h	Mon Aug 13 11:32:25 2007 +0200
@@ -777,4 +777,6 @@
 void update_frame_icon (struct frame *f);
 void invalidate_vertical_divider_cache_in_frame (struct frame *f);
 
+void init_frame (void);
+
 #endif /* _XEMACS_FRAME_H_ */
--- a/src/gdbinit	Mon Aug 13 11:31:26 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,477 +0,0 @@
-# -*- ksh -*-
-# 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.
-
-# Author: Martin Buchholz
-
-# Some useful commands for debugging emacs with gdb 4.16 or better.
-# Install this as your .gdbinit file in your home directory,
-# or source this file from your .gdbinit
-# Configure xemacs with --debug, and compile with -g.
-#
-# See also the question of the XEmacs FAQ, titled
-# "How to Debug an XEmacs problem with a debugger".
-#
-# This can be used to debug XEmacs no matter how the following are
-# specified:
-
-# USE_UNION_TYPE
-
-# (the above all have configure equivalents)
-
-# Some functions defined here require a running process, but most
-# don't.  Considerable effort has been expended to this end.
-
-# See the dbg_ C support code in src/alloc.c that allows the functions
-# defined in this file to work correctly.
-
-set print union off
-set print pretty off
-
-define decode_object
-  set $obj = (unsigned long) $arg0
-  if $obj & 1
-  # It's an int
-    set $val = $obj >> 1
-    set $type = Lisp_Type_Int
-  else
-    set $type = $obj & dbg_typemask
-    if $type == Lisp_Type_Char
-      set $val = ($obj & dbg_valmask) >> dbg_gctypebits
-    else
-      # It's a record pointer
-      set $val = $obj
-    end
-  end
-
-  if $type == Lisp_Type_Record
-    set $lheader = (struct lrecord_header *) $val
-    set $imp = lrecord_implementations_table[$lheader->type]
-  else
-    set $imp = -1
-  end
-end
-
-document decode_object
-Usage: decode_object lisp_object
-Extract implementation information from a Lisp Object.
-Defines variables $val, $type and $imp.
-end
-
-define xint
-decode_object $arg0
-print ((long) $val)
-end
-
-define xtype
-  decode_object $arg0
-  if $type == Lisp_Type_Int
-    echo int\n
-  else
-  if $type == Lisp_Type_Char
-    echo char\n
-  else
-  if $type == Lisp_Type_Symbol
-    echo symbol\n
-  else
-  if $type == Lisp_Type_String
-    echo string\n
-  else
-  if $type == Lisp_Type_Vector
-    echo vector\n
-  else
-  if $type == Lisp_Type_Cons
-    echo cons\n
-  else
-    printf "record type: %s\n", $imp->name
-  # barf
-  end
-  end
-  end
-  end
-  end
-  end
-end
-
-define lisp-shadows
-  run -batch -vanilla -f list-load-path-shadows
-end
-
-document lisp-shadows
-Usage: lisp-shadows
-Run xemacs to check for lisp shadows
-end
-
-define environment-to-run-temacs
-  unset env EMACSLOADPATH
-  set env EMACSBOOTSTRAPLOADPATH=../lisp/:..
-  set env EMACSBOOTSTRAPMODULEPATH=../modules/:..
-end
-
-define run-temacs
-  environment-to-run-temacs
-  run -batch -l ../lisp/loadup.el run-temacs -q
-end
-
-document run-temacs
-Usage: run-temacs
-Run temacs interactively, like xemacs.
-Use this with debugging tools (like purify) that cannot deal with dumping,
-or when temacs builds successfully, but xemacs does not.
-end
-
-define update-elc
-  environment-to-run-temacs
-  run -batch -l ../lisp/update-elc.el
-end
-
-document update-elc
-Usage: update-elc
-Run the core lisp byte compilation part of the build procedure.
-Use when debugging temacs, not xemacs!
-Use this when temacs builds successfully, but xemacs does not.
-end
-
-define dump-temacs
-  environment-to-run-temacs
-  run -batch -l ../lisp/loadup.el dump
-end
-
-document dump-temacs
-Usage: dump-temacs
-Run the dumping part of the build procedure.
-Use when debugging temacs, not xemacs!
-Use this when temacs builds successfully, but xemacs does not.
-end
-
-# if you use Purify, do this:
-# export PURIFYOPTIONS='-pointer-mask=0x0fffffff'
-
-define ldp
-  printf "%s", "Lisp => "
-  call debug_print($arg0)
-end
-
-document ldp
-Usage: ldp lisp_object
-Print a Lisp Object value using the Lisp printer.
-Requires a running xemacs process.
-end
-
-define lbt
-call debug_backtrace()
-end
-
-document lbt
-Usage: lbt
-Print the current Lisp stack trace.
-Requires a running xemacs process.
-end
-
-
-define leval
-ldp Feval(Fcar(Fread_from_string(build_string($arg0),Qnil,Qnil)))
-end
-
-document leval
-Usage: leval "SEXP"
-Eval a lisp expression.
-Requires a running xemacs process.
-
-Example:
-(gdb) leval "(+ 1 2)"
-Lisp ==> 3
-end
-
-
-define wtype
-print $arg0->core.widget_class->core_class.class_name
-end
-
-define xtname
-print XrmQuarkToString(((Object)($arg0))->object.xrm_name)
-end
-
-# GDB's command language makes you want to ...
-
-define pstruct
-  set $xstruct = (struct $arg0 *) $val
-  print $xstruct
-  print *$xstruct
-end
-
-define pobj
-  decode_object $arg0
-  if $type == Lisp_Type_Int
-    printf "Integer: %d\n", $val
-  else
-  if $type == Lisp_Type_Char
-    if $val > 32 && $val < 128
-      printf "Char: %c\n", $val
-    else
-      printf "Char: %d\n", $val
-    end
-  else
-  if $type == Lisp_Type_String || $imp == &lrecord_string
-    pstruct Lisp_String
-  else
-  if $type == Lisp_Type_Cons   || $imp == &lrecord_cons
-    pstruct Lisp_Cons
-  else
-  if $type == Lisp_Type_Symbol || $imp == &lrecord_symbol
-    pstruct Lisp_Symbol
-    printf "Symbol name: %s\n", $xstruct->name->data
-  else
-  if $type == Lisp_Type_Vector || $imp == &lrecord_vector
-    pstruct Lisp_Vector
-    printf "Vector of length %d\n", $xstruct->size
-    #print *($xstruct->data) @ $xstruct->size
-  else
-  if $imp == &lrecord_bit_vector
-    pstruct Lisp_Bit_Vector
-  else
-  if $imp == &lrecord_buffer
-    pstruct buffer
-  else
-  if $imp == &lrecord_char_table
-    pstruct Lisp_Char_Table
-  else
-  if $imp == &lrecord_char_table_entry
-    pstruct Lisp_Char_Table_Entry
-  else
-  if $imp == &lrecord_charset
-    pstruct Lisp_Charset
-  else
-  if $imp == &lrecord_coding_system
-    pstruct Lisp_Coding_System
-  else
-  if $imp == &lrecord_color_instance
-    pstruct Lisp_Color_Instance
-  else
-  if $imp == &lrecord_command_builder
-    pstruct command_builder
-  else
-  if $imp == &lrecord_compiled_function
-    pstruct Lisp_Compiled_Function
-  else
-  if $imp == &lrecord_console
-    pstruct console
-  else
-  if $imp == &lrecord_database
-    pstruct Lisp_Database
-  else
-  if $imp == &lrecord_device
-    pstruct device
-  else
-  if $imp == &lrecord_event
-    pstruct Lisp_Event
-  else
-  if $imp == &lrecord_extent
-    pstruct extent
-  else
-  if $imp == &lrecord_extent_auxiliary
-    pstruct extent_auxiliary
-  else
-  if $imp == &lrecord_extent_info
-    pstruct extent_info
-  else
-  if $imp == &lrecord_face
-    pstruct Lisp_Face
-  else
-  if $imp == &lrecord_float
-    pstruct Lisp_Float
-  else
-  if $imp == &lrecord_font_instance
-    pstruct Lisp_Font_Instance
-  else
-  if $imp == &lrecord_frame
-    pstruct frame
-  else
-  if $imp == &lrecord_glyph
-    pstruct Lisp_Glyph
-  else
-  if $imp == &lrecord_hash_table
-    pstruct Lisp_Hash_Table
-  else
-  if $imp == &lrecord_image_instance
-    pstruct Lisp_Image_Instance
-  else
-  if $imp == &lrecord_keymap
-    pstruct Lisp_Keymap
-  else
-  if $imp == &lrecord_lcrecord_list
-    pstruct lcrecord_list
-  else
-  if $imp == &lrecord_lstream
-    pstruct lstream
-  else
-  if $imp == &lrecord_marker
-    pstruct Lisp_Marker
-  else
-  if $imp == &lrecord_opaque
-    pstruct Lisp_Opaque
-  else
-  if $imp == &lrecord_opaque_ptr
-    pstruct Lisp_Opaque_Ptr
-  else
-  if $imp == &lrecord_popup_data
-    pstruct popup_data
-  else
-  if $imp == &lrecord_process
-    pstruct Lisp_Process
-  else
-  if $imp == &lrecord_range_table
-    pstruct Lisp_Range_Table
-  else
-  if $imp == &lrecord_specifier
-    pstruct Lisp_Specifier
-  else
-  if $imp == &lrecord_subr
-    pstruct Lisp_Subr
-  else
-  if $imp == &lrecord_symbol_value_buffer_local
-    pstruct symbol_value_buffer_local
-  else
-  if $imp == &lrecord_symbol_value_forward
-    pstruct symbol_value_forward
-  else
-  if $imp == &lrecord_symbol_value_lisp_magic
-    pstruct symbol_value_lisp_magic
-  else
-  if $imp == &lrecord_symbol_value_varalias
-    pstruct symbol_value_varalias
-  else
-  if $imp == &lrecord_toolbar_button
-    pstruct toolbar_button
-  else
-  if $imp == &lrecord_tooltalk_message
-    pstruct Lisp_Tooltalk_Message
-  else
-  if $imp == &lrecord_tooltalk_pattern
-    pstruct Lisp_Tooltalk_Pattern
-  else
-  if $imp == &lrecord_weak_list
-    pstruct weak_list
-  else
-  if $imp == &lrecord_window
-    pstruct window
-  else
-  if $imp == &lrecord_window_configuration
-    pstruct window_config
-  else
-    echo Unknown Lisp Object type\n
-    print $arg0
-  # Barf, gag, retch
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  # Repeat after me... gdb sux, gdb sux, gdb sux...
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  # Are we having fun yet??
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-  end
-end
-
-document pobj
-Usage: pobj lisp_object
-Print the internal C structure of a underlying Lisp Object.
-end
-
-# -------------------------------------------------------------
-# functions to test the debugging support itself.
-# If you change this file, make sure the following still work...
-# -------------------------------------------------------------
-define test_xtype
-  printf "Vemacs_major_version: "
-  xtype Vemacs_major_version
-  printf "Vhelp_char: "
-  xtype Vhelp_char
-  printf "Qnil: "
-  xtype Qnil
-  printf "Qunbound: "
-  xtype Qunbound
-  printf "Vobarray: "
-  xtype Vobarray
-  printf "Vall_weak_lists: "
-  xtype Vall_weak_lists
-  printf "Vxemacs_codename: "
-  xtype Vxemacs_codename
-end
-
-define test_pobj
-  printf "Vemacs_major_version: "
-  pobj Vemacs_major_version
-  printf "Vhelp_char: "
-  pobj Vhelp_char
-  printf "Qnil: "
-  pobj Qnil
-  printf "Qunbound: "
-  pobj Qunbound
-  printf "Vobarray: "
-  pobj Vobarray
-  printf "Vall_weak_lists: "
-  pobj Vall_weak_lists
-  printf "Vxemacs_codename: "
-  pobj Vxemacs_codename
-end
-
--- a/src/glyphs-eimage.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs-eimage.c	Mon Aug 13 11:32:25 2007 +0200
@@ -663,7 +663,7 @@
 
     height = unwind.giffile->SHeight;
     width = unwind.giffile->SWidth;
-    unwind.eimage = (unsigned char*) 
+    unwind.eimage = (unsigned char*)
       xmalloc (width * height * 3 * unwind.giffile->ImageCount);
     if (!unwind.eimage)
       signal_image_error("Unable to allocate enough memory for image", instantiator);
@@ -695,7 +695,7 @@
 	    eip = unwind.eimage + (width * height * 3 * slice) + (row * width * 3);
 	    for (j = 0; j < width; j++)
 	      {
-		unsigned char pixel = 
+		unsigned char pixel =
 		  unwind.giffile->SavedImages[slice].RasterBits[(i * width) + j];
 		*eip++ = cmo->Colors[pixel].Red;
 		*eip++ = cmo->Colors[pixel].Green;
@@ -727,7 +727,7 @@
 	  unwind.giffile->SavedImages[0].ExtensionBlockCount)
 	{
 	  timeout = (unsigned short)
-	    ((unwind.giffile->SavedImages[0].ExtensionBlocks[0].Bytes[2] << 8) + 
+	    ((unwind.giffile->SavedImages[0].ExtensionBlocks[0].Bytes[2] << 8) +
 	     unwind.giffile-> SavedImages[0].ExtensionBlocks[0].Bytes[1]) * 10;
 	}
 
@@ -737,7 +737,7 @@
       if (!NILP (tid))
 	IMAGE_INSTANCE_PIXMAP_TIMEOUT (ii) = XINT (tid);
     }
-  
+
   unbind_to (speccount, Qnil);
 }
 
@@ -1155,7 +1155,7 @@
 
 struct tiff_error_struct
 {
-#if HAVE_VSNPRINTF
+#ifdef HAVE_VSNPRINTF
   char err_str[256];
 #else
   char err_str[1024];		/* return the error string */
@@ -1175,7 +1175,7 @@
   va_list vargs;
 
   va_start (vargs, fmt);
-#if HAVE_VSNPRINTF
+#ifdef HAVE_VSNPRINTF
   vsnprintf (tiff_err_data.err_str, 255, fmt, vargs);
 #else
   /* pray this doesn't overflow... */
@@ -1190,14 +1190,14 @@
 tiff_warning_func(CONST char *module, CONST char *fmt, ...)
 {
   va_list vargs;
-#if HAVE_VSNPRINTF
+#ifdef HAVE_VSNPRINTF
   char warn_str[256];
 #else
   char warn_str[1024];
 #endif
 
   va_start (vargs, fmt);
-#if HAVE_VSNPRINTF
+#ifdef HAVE_VSNPRINTF
   vsnprintf (warn_str, 255, fmt, vargs);
 #else
   vsprintf (warn_str, fmt, vargs);
--- a/src/glyphs-msw.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs-msw.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1,5 +1,5 @@
 /* mswindows-specific glyph objects.
-   Copyright (C) 1998, 1999 Andy Piper.
+   Copyright (C) 1998, 1999, 2000 Andy Piper.
 
 This file is part of XEmacs.
 
@@ -439,18 +439,18 @@
 			     int bpline, int height,
 			     int x, int y, int white )
 {
-  int index;
+  int i;
   unsigned char    bitnum;
   /* Find the byte on which this scanline begins */
-  index = (height - y - 1) * bpline;
+  i = (height - y - 1) * bpline;
   /* Find the byte containing this pixel */
-  index += (x >> 3);
+  i += (x >> 3);
   /* Which bit is it? */
   bitnum = (unsigned char)( 7 - (x % 8) );
   if( white )         /* Turn it on */
-    bits[index] |= (1<<bitnum);
+    bits[i] |= (1<<bitnum);
   else         /* Turn it off */
-    bits[index] &= ~(1<<bitnum);
+    bits[i] &= ~(1<<bitnum);
 }
 
 static void
@@ -1330,15 +1330,6 @@
     signal_simple_error ("invalid resource identifier", data);
 }
 
-void
-check_valid_string_or_int (Lisp_Object data)
-{
-  if (!INTP (data))
-    CHECK_STRING (data);
-  else
-    CHECK_INT (data);
-}
-
 /**********************************************************************
  *                             XBM                                    *
  **********************************************************************/
@@ -1628,7 +1619,7 @@
    padded to a multiple of 16.  Scan lines are stored in increasing
    byte order from left to right, big-endian within a byte.  0 =
    black, 1 = white.  */
-HBITMAP
+static HBITMAP
 xbm_create_bitmap_from_data (HDC hdc, char *data,
 			     unsigned int width, unsigned int height,
 			     int mask, COLORREF fg, COLORREF bg)
@@ -2106,6 +2097,7 @@
 mswindows_map_subwindow (struct Lisp_Image_Instance *p, int x, int y,
 			 struct display_glyph_area* dga)
 {
+      SetFocus (GetParent (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p)));
   /* move the window before mapping it ... */
   SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
 		NULL,
@@ -2144,6 +2136,7 @@
 static void
 mswindows_update_subwindow (struct Lisp_Image_Instance *p)
 {
+  /* Now do widget specific updates. */
   if (IMAGE_INSTANCE_TYPE (p) == IMAGE_WIDGET)
     {
       /* buttons checked or otherwise */
@@ -2161,10 +2154,10 @@
       SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
 		   WM_SETFONT,
 		   (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
-		   (XFONT_INSTANCE (widget_face_font_info
-				    (IMAGE_INSTANCE_SUBWINDOW_FRAME (p),
+		   (XFONT_INSTANCE (query_string_font 
+				    (IMAGE_INSTANCE_WIDGET_TEXT (p),
 				     IMAGE_INSTANCE_WIDGET_FACE (p),
-				     0, 0))),
+				     IMAGE_INSTANCE_SUBWINDOW_FRAME (p)))),
 		   MAKELPARAM (TRUE, 0));
     }
 }
@@ -2344,9 +2337,7 @@
     {
       id = mswindows_register_widget_instance (image_instance, domain);
     }
-  /* have to set the type this late in case there is no device
-     instantiation for a widget */
-  IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET;
+
   if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
     GET_C_STRING_OS_DATA_ALLOCA (IMAGE_INSTANCE_WIDGET_TEXT (ii), nm);
 
@@ -2355,7 +2346,7 @@
 
   if ((IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (ii)
        = CreateWindowEx(
-			0,		/* EX flags */
+			WS_EX_CONTROLPARENT,	/* EX flags */
 			XEMACS_CONTROL_CLASS,
 			0,		/* text */
 			WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_CHILD,
@@ -2396,17 +2387,17 @@
   /* set the widget font from the widget face */
   SendMessage (wnd, WM_SETFONT,
 	       (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
-	       (XFONT_INSTANCE (widget_face_font_info
-				(domain,
+	       (XFONT_INSTANCE (query_string_font
+				(IMAGE_INSTANCE_WIDGET_TEXT (ii),
 				 IMAGE_INSTANCE_WIDGET_FACE (ii),
-				 0, 0))),
+				 domain))),
 	       MAKELPARAM (TRUE, 0));
 }
 
 /* Instantiate a button widget. Unfortunately instantiated widgets are
    particular to a frame since they need to have a parent. It's not
    like images where you just select the image into the context you
-   want to display it in and BitBlt it. So images instances can have a
+   want to display it in and BitBlt it. So image instances can have a
    many-to-one relationship with things you see, whereas widgets can
    only be one-to-one (i.e. per frame) */
 static void
@@ -2417,15 +2408,14 @@
   /* this function can call lisp */
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   HWND wnd;
-  int flags = BS_NOTIFY;
+  int flags = WS_TABSTOP;/* BS_NOTIFY #### is needed to get exotic feedback
+			    only. Since we seem to want nothing beyond BN_CLICK,
+			    the style is perhaps not necessary -- kkm */
   Lisp_Object style;
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
   struct Lisp_Gui_Item* pgui = XGUI_ITEM (gui);
   Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
 
-  if (!gui_item_active_p (gui))
-    flags |= WS_DISABLED;
-
   if (!NILP (glyph))
     {
       if (!IMAGE_INSTANCEP (glyph))
@@ -2438,6 +2428,8 @@
 
   style = pgui->style;
 
+  /* #### consider using the default face for radio and toggle
+     buttons. */
   if (EQ (style, Qradio))
     {
       flags |= BS_RADIOBUTTON;
@@ -2447,11 +2439,13 @@
       flags |= BS_AUTOCHECKBOX;
     }
   else
-    flags |= BS_DEFPUSHBUTTON;
+    {
+      flags |= BS_DEFPUSHBUTTON;
+    }
 
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
-				pointer_bg, dest_mask, domain, "BUTTON", flags,
-				WS_EX_CONTROLPARENT);
+				pointer_bg, dest_mask, domain, "BUTTON", 
+				flags, 0);
 
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* set the checked state */
@@ -2465,9 +2459,9 @@
       SendMessage (wnd, BM_SETIMAGE,
 		   (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
 			     IMAGE_BITMAP : IMAGE_ICON),
-		   (LPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
-			     XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) :
-			     XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph)));
+		   (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
+		    (LPARAM) XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) :
+		    (LPARAM) XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph)));
     }
 }
 
@@ -2480,8 +2474,7 @@
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
 				pointer_bg, dest_mask, domain, "EDIT",
 				ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP
-				| WS_BORDER,
-				WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
+				| WS_BORDER, WS_EX_CLIENTEDGE);
 }
 
 /* instantiate a progress gauge */
@@ -2494,8 +2487,7 @@
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
 				pointer_bg, dest_mask, domain, PROGRESS_CLASS,
-				WS_TABSTOP | WS_BORDER | PBS_SMOOTH,
-				WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
+				WS_BORDER | PBS_SMOOTH, WS_EX_CLIENTEDGE);
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* set the colors */
 #ifdef PBS_SETBKCOLOR
@@ -2579,7 +2571,7 @@
 				pointer_bg, dest_mask, domain, WC_TREEVIEW,
 				WS_TABSTOP | WS_BORDER | PBS_SMOOTH
 				| TVS_HASLINES | TVS_HASBUTTONS,
-				WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
+				WS_EX_CLIENTEDGE);
 
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
 
@@ -2602,7 +2594,7 @@
 /* instantiate a tab control */
 static TC_ITEM* add_tab_item (Lisp_Object image_instance,
 			     HWND wnd, Lisp_Object item,
-			     Lisp_Object domain, int index)
+			     Lisp_Object domain, int i)
 {
   TC_ITEM tvitem, *ret;
 
@@ -2624,7 +2616,7 @@
   tvitem.cchTextMax = strlen (tvitem.pszText);
 
   if ((ret = (TC_ITEM*)SendMessage (wnd, TCM_INSERTITEM,
-				    index, (LPARAM)&tvitem)) < 0)
+				    i, (LPARAM)&tvitem)) < 0)
     signal_simple_error ("error adding tab entry", item);
 
   return ret;
@@ -2637,20 +2629,31 @@
 {
   Lisp_Object rest;
   HWND wnd;
-  int index = 0;
+  int i = 0;
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object orient = find_keyword_in_vector (instantiator, Q_orientation);
+  unsigned int flags = WS_TABSTOP;
+
+  if (EQ (orient, Qleft) || EQ (orient, Qright))
+    {
+      flags |= TCS_VERTICAL | TCS_MULTILINE;
+    }
+  if (EQ (orient, Qright) || EQ (orient, Qbottom))
+    {
+      flags |= TCS_BOTTOM;
+    }
+
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
 				pointer_bg, dest_mask, domain, WC_TABCONTROL,
 				/* borders don't suit tabs so well */
-				WS_TABSTOP,
-				WS_EX_CONTROLPARENT);
+				flags, 0);
 
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* add items to the tab */
   LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
     {
-      add_tab_item (image_instance, wnd, XCAR (rest), domain, index);
-      index++;
+      add_tab_item (image_instance, wnd, XCAR (rest), domain, i);
+      i++;
     }
 }
 
@@ -2664,7 +2667,7 @@
   if (EQ (prop, Q_items))
     {
       HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
-      int index = 0;
+      int i = 0;
       Lisp_Object rest;
       check_valid_item_list_1 (val);
 
@@ -2679,8 +2682,8 @@
       LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
 	{
 	  add_tab_item (image_instance, wnd, XCAR (rest),
-			IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), index);
-	  index++;
+			IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), i);
+	  i++;
 	}
 
       return Qt;
@@ -2707,8 +2710,7 @@
 {
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
 				pointer_bg, dest_mask, domain, "SCROLLBAR",
-				0,
-				WS_EX_CLIENTEDGE );
+				WS_TABSTOP, WS_EX_CLIENTEDGE);
 }
 
 /* instantiate a combo control */
@@ -2722,8 +2724,7 @@
   Lisp_Object rest;
   Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties),
 				 Q_items, Qnil);
-  int len;
-  GET_LIST_LENGTH (data, len);
+  int len, height;
 
   /* Maybe ought to generalise this more but it may be very windows
      specific. In windows the window height of a combo box is the
@@ -2731,19 +2732,29 @@
      before creating the window and then reset it to a single line
      after the window is created so that redisplay does the right
      thing. */
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			pointer_bg, dest_mask, domain, len + 1, 0, 0);
-
+  widget_instantiate (image_instance, instantiator, pointer_fg,
+		      pointer_bg, dest_mask, domain);
+
+  /* We now have everything right apart from the height. */
+  default_face_font_info (domain, 0, 0, &height, 0, 0);
+  GET_LIST_LENGTH (data, len);
+
+  height = (height + WIDGET_BORDER_HEIGHT * 2 ) * len;
+  IMAGE_INSTANCE_HEIGHT (ii) = height;
+  
+  /* Now create the widget. */
   mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
 				pointer_bg, dest_mask, domain, "COMBOBOX",
 				WS_BORDER | WS_TABSTOP | CBS_DROPDOWN
 				| CBS_AUTOHSCROLL
 				| CBS_HASSTRINGS | WS_VSCROLL,
-				WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
-  /* reset the height */
-  widget_text_to_pixel_conversion (domain,
-				   IMAGE_INSTANCE_WIDGET_FACE (ii), 1, 0,
-				   &IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii), 0);
+				WS_EX_CLIENTEDGE);
+  /* Reset the height. layout will probably do this safely, but better make sure. */
+  image_instance_layout (image_instance, 
+			 IMAGE_UNSPECIFIED_GEOMETRY,
+			 IMAGE_UNSPECIFIED_GEOMETRY,
+			 domain);
+
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* add items to the combo box */
   SendMessage (wnd, CB_RESETCONTENT, 0, 0);
@@ -2823,7 +2834,8 @@
       GET_C_STRING_OS_DATA_ALLOCA (val, lparam);
       SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
 		   WM_SETTEXT, 0, (LPARAM)lparam);
-      return Qt;
+      /* We don't return Qt here so that other widget methods can be
+         called afterwards. */
     }
   return Qunbound;
 }
@@ -2846,10 +2858,10 @@
 }
 
 LRESULT WINAPI
-mswindows_control_wnd_proc (HWND hwnd, UINT message,
+mswindows_control_wnd_proc (HWND hwnd, UINT msg,
 			    WPARAM wParam, LPARAM lParam)
 {
-  switch (message)
+  switch (msg)
     {
     case WM_NOTIFY:
     case WM_COMMAND:
@@ -2859,9 +2871,9 @@
     case WM_CTLCOLORSTATIC:
     case WM_CTLCOLORSCROLLBAR:
 
-      return mswindows_wnd_proc (GetParent (hwnd), message, wParam, lParam);
+      return mswindows_wnd_proc (GetParent (hwnd), msg, wParam, lParam);
     default:
-      return DefWindowProc (hwnd, message, wParam, lParam);
+      return DefWindowProc (hwnd, msg, wParam, lParam);
     }
 }
 
--- a/src/glyphs-widget.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs-widget.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1,5 +1,5 @@
 /* Widget-specific glyph objects.
-   Copyright (C) 1998, 1999 Andy Piper.
+   Copyright (C) 1998, 1999, 2000 Andy Piper.
 
 This file is part of XEmacs.
 
@@ -60,50 +60,20 @@
 Lisp_Object Q_image, Q_text, Q_percent, Q_orientation, Q_justify, Q_border;
 Lisp_Object Qetched_in, Qetched_out, Qbevel_in, Qbevel_out;
 
-#define WIDGET_BORDER_HEIGHT 4
-#define WIDGET_BORDER_WIDTH 4
-
 #ifdef DEBUG_WIDGETS
 int debug_widget_instances;
 #endif
 
 /* TODO:
    - more complex controls.
-   - tooltips for controls.
+   - tooltips for controls, especially buttons.
  */
 
-/* In windows normal windows work in pixels, dialog boxes work in
+/* In MS-Windows normal windows work in pixels, dialog boxes work in
    dialog box units. Why? sigh. We could reuse the metrics for dialogs
    if this were not the case. As it is we have to position things
    pixel wise. I'm not even sure that X has this problem at least for
    buttons in groups. */
-Lisp_Object
-widget_face_font_info (Lisp_Object domain, Lisp_Object face,
-		       int *height, int *width)
-{
-  Lisp_Object font_instance = FACE_FONT (face, domain, Vcharset_ascii);
-
-  if (height)
-    *height = XFONT_INSTANCE (font_instance)->height;
-  if (width)
-    *width = XFONT_INSTANCE (font_instance)->width;
-  
-  return font_instance;
-}
-
-void
-widget_text_to_pixel_conversion (Lisp_Object domain, Lisp_Object face,
-				 int th, int tw,
-				 int* height, int* width)
-{
-  int ch=0, cw=0;
-  widget_face_font_info (domain, face, &ch, &cw);
-  if (height)
-    *height = th * ch + 2 * WIDGET_BORDER_HEIGHT;
-  if (width)
-    *width = tw * cw + 2 * WIDGET_BORDER_WIDTH;
-}
-
 static int
 widget_possible_dest_types (void)
 {
@@ -133,6 +103,19 @@
 }
 
 static void
+check_valid_tab_orientation (Lisp_Object data)
+{
+  if (!EQ (data, Qtop)
+      &&
+      !EQ (data, Qbottom)
+      &&
+      !EQ (data, Qleft)
+      &&
+      !EQ (data, Qright))
+    signal_simple_error ("unknown orientation for tab control", data);
+}
+
+static void
 check_valid_justification (Lisp_Object data)
 {
   if (!EQ (data, Qleft) && !EQ (data, Qright) && !EQ (data, Qcenter))
@@ -259,17 +242,17 @@
     }
 }
 
-/* wire widget property invocations to specific widgets ...  The
- problem we are solving here is that when instantiators get converted
- to instances they lose some type information (they just become
- subwindows or widgets for example). For widgets we need to preserve
- this type information so that we can do widget specific operations on
- the instances. This is encoded in the widget type
- field. widget_property gets invoked by decoding the primary type
- (Qwidget), widget property then invokes based on the secondary type
- (Qedit_field for example). It is debatable that we should wire things in this
- generalised way rather than treating widgets specially in
- image_instance_property. */
+/* Wire widget property invocations to specific widgets. The problem
+   we are solving here is that when instantiators get converted to
+   instances they lose some type information (they just become
+   subwindows or widgets for example). For widgets we need to preserve
+   this type information so that we can do widget specific operations
+   on the instances. This is encoded in the widget type
+   field. widget_property gets invoked by decoding the primary type
+   (Qwidget), <widget>_property then invokes based on the secondary
+   type (Qedit_field for example). It is debatable whether we should
+   wire things in this generalised way rather than treating widgets
+   specially in image_instance_property. */
 static Lisp_Object 
 widget_property (Lisp_Object image_instance, Lisp_Object prop)
 {
@@ -302,7 +285,14 @@
   struct image_instantiator_methods* meths;
   Lisp_Object ret;
 
-  /* try device specific methods first ... */
+  /* PIck up any generic properties that we might need to keep hold
+     of. */
+  if (EQ (prop, Q_text))
+    {
+      IMAGE_INSTANCE_WIDGET_TEXT (ii) = val;
+    }
+
+  /* Now try device specific methods first ... */
   meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), 
 				   IMAGE_INSTANCE_WIDGET_TYPE (ii), 
 				   ERROR_ME_NOT);
@@ -329,6 +319,85 @@
   return val;
 }
 
+/* Query for a widgets desired geometry. If no type specific method is
+   provided then use the widget text to calculate sizes. */
+static void 
+widget_query_geometry (Lisp_Object image_instance, 
+		       unsigned int* width, unsigned int* height,
+		       enum image_instance_geometry disp, Lisp_Object domain)
+{
+  struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
+  struct image_instantiator_methods* meths;
+
+  /* First just set up what we already have. */
+  if (width)	*width = IMAGE_INSTANCE_WIDTH (ii);
+  if (height)	*height = IMAGE_INSTANCE_HEIGHT (ii);
+  
+  if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)
+      ||
+      IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
+    {
+      /* .. then try device specific methods ... */
+      meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), 
+				       IMAGE_INSTANCE_WIDGET_TYPE (ii), 
+				       ERROR_ME_NOT);
+      if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry))
+	IIFORMAT_METH (meths, query_geometry, (image_instance, 
+					       width, height, disp,
+					       domain));
+      else
+	{
+	  /* ... then format specific methods ... */
+	  meths = decode_device_ii_format (Qnil, IMAGE_INSTANCE_WIDGET_TYPE (ii), 
+					   ERROR_ME_NOT);
+	  if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry))
+	    IIFORMAT_METH (meths, query_geometry, (image_instance, 
+						   width, height, disp,
+						   domain));
+	  else 
+	    {
+	      unsigned int w, h;
+	      
+	      /* Then if we are allowed to resize the widget, make the
+		 size the same as the text dimensions. */
+	      query_string_geometry (IMAGE_INSTANCE_WIDGET_TEXT (ii),
+				     IMAGE_INSTANCE_WIDGET_FACE (ii),
+				     &w, &h, 0, domain);
+	      /* Adjust the size for borders. */
+	      if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
+		*width = w + 2 * WIDGET_BORDER_WIDTH;
+	      if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii))
+		*height = h +  2 * WIDGET_BORDER_HEIGHT;
+	    }
+	}
+    }
+}
+
+static void 
+widget_layout (Lisp_Object image_instance, 
+	       unsigned int width, unsigned int height, Lisp_Object domain)
+{
+  struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
+  struct image_instantiator_methods* meths;
+
+  /* .. then try device specific methods ... */
+  meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), 
+				   IMAGE_INSTANCE_WIDGET_TYPE (ii), 
+				   ERROR_ME_NOT);
+  if (meths && HAS_IIFORMAT_METH_P (meths, layout))
+    IIFORMAT_METH (meths, layout, (image_instance, 
+				   width, height, domain));
+  else
+    {
+      /* ... then format specific methods ... */
+      meths = decode_device_ii_format (Qnil, IMAGE_INSTANCE_WIDGET_TYPE (ii), 
+				       ERROR_ME_NOT);
+      if (meths && HAS_IIFORMAT_METH_P (meths, layout))
+	IIFORMAT_METH (meths, layout, (image_instance, 
+				       width, height, domain));
+    }
+}
+
 static void
 widget_validate (Lisp_Object instantiator)
 {
@@ -381,8 +450,12 @@
   /*  initialize_subwindow_image_instance (ii);*/
   IMAGE_INSTANCE_WIDGET_TYPE (ii) = type;
   IMAGE_INSTANCE_WIDGET_PROPS (ii) = Qnil;
-  IMAGE_INSTANCE_WIDGET_FACE (ii) = Vwidget_face;
+  SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Qnil);
   IMAGE_INSTANCE_WIDGET_ITEMS (ii) = allocate_gui_item ();
+  IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 1;
+  IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 1;
+  IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 0;
+  IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) = 0;
 }
 
 /* Instantiate a button widget. Unfortunately instantiated widgets are
@@ -392,10 +465,9 @@
    many-to-one relationship with things you see, whereas widgets can
    only be one-to-one (i.e. per frame) */
 void
-widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator,
-		      Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-		      int dest_mask, Lisp_Object domain, int default_textheight,
-		      int default_pixheight, int default_textwidth)
+widget_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 face = find_keyword_in_vector (instantiator, Q_face);
@@ -406,6 +478,7 @@
   Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor);
   Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
   Lisp_Object props = find_keyword_in_vector (instantiator, Q_properties);
+  Lisp_Object orient = find_keyword_in_vector (instantiator, Q_orientation);
   int pw=0, ph=0, tw=0, th=0;
   
   /* this just does pixel type sizing */
@@ -419,11 +492,15 @@
 
   /* retrieve the fg and bg colors */
   if (!NILP (face))
-    IMAGE_INSTANCE_WIDGET_FACE (ii) = Fget_face (face);
+    SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Fget_face (face));
   
   /* data items for some widgets */
   IMAGE_INSTANCE_WIDGET_PROPS (ii) = props;
 
+  /* Pick up the orientation before we do our first layout. */
+  if (EQ (orient, Qleft) || EQ (orient, Qright) || EQ (orient, Qvertical))
+    IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 1;
+
   /* retrieve the gui item information. This is easy if we have been
      provided with a vector, more difficult if we have just been given
      keywords */
@@ -448,53 +525,73 @@
 		 parse_gui_item_tree_children (items));
     }
 
-  /* normalize size information */
-  if (!NILP (width))
-    tw = XINT (width);
-  if (!NILP (height))
-    th = XINT (height);
-  if (!NILP (pixwidth))
-    pw = XINT (pixwidth);
+  /* Normalize size information. We now only assign sizes if the user
+     gives us some explicitly, or there are some constraints that we
+     can't change later on. Otherwise we postpone sizing until query
+     geometry gets called. */
+  if (!NILP (pixwidth))		/* pixwidth takes precendent */
+    {
+      pw = XINT (pixwidth);
+      IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0;
+    }
+  else if (!NILP (width))
+    {
+      tw = XINT (width);
+      IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0;
+    }
+
   if (!NILP (pixheight))
-    ph = XINT (pixheight);
+    {
+      ph = XINT (pixheight);
+      IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0;
+    }
+  else if (!NILP (height) && XINT (height) > 1)
+    {
+      th = XINT (height);
+      IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0;
+    }
+
+  /* Taking the default face information when the user has specified
+     size in characters is probably as good as any since the widget
+     face is more likely to be proportional and thus give inadequate
+     results. Using character sizes can only ever be approximate
+     anyway. */
+  if (tw || th)
+    {
+      int charwidth, charheight;
+      default_face_font_info (domain, 0, 0, &charheight, &charwidth, 0);
+      if (tw)
+	pw = charwidth * tw;
+      if (th)
+	ph = charheight * th;
+    }
 
   /* for a widget with an image pick up the dimensions from that */
   if (!NILP (glyph))
     {
-      if (!pw && !tw)
-	pw = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain) 
-	  + 2 * WIDGET_BORDER_WIDTH;
-      if (!ph && !th)
-	ph = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain) 
-	  + 2 * WIDGET_BORDER_HEIGHT;
-    }
-
-  /* if we still don' t have sizes, guess from text size */
-  if (!tw && !pw)
-    {
-      if (default_textwidth)
-	tw = default_textwidth;
-      else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
-	tw = XSTRING_LENGTH (IMAGE_INSTANCE_WIDGET_TEXT (ii));
+      if (!pw)
+	pw = glyph_width (glyph, domain) + 2 * WIDGET_BORDER_WIDTH;
+      if (!ph)
+	ph = glyph_height (glyph, domain) + 2 * WIDGET_BORDER_HEIGHT;
+      IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0;
+      IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0;
     }
 
-  if (!th && !ph)
-    {
-      if (default_textheight)
-	th = default_textheight;
-      else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
-	th = 1;
-      else
-	ph = default_pixheight;
-    }
-  
-  if (tw !=0 || th !=0)
-    widget_text_to_pixel_conversion (domain,
-				     IMAGE_INSTANCE_WIDGET_FACE (ii),
-				     th, tw, th ? &ph : 0, tw ? &pw : 0);
+  /* have to set the type this late in case there is no device
+     instantiation for a widget */
+  IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET;
 
-  IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii) = pw;
-  IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii) = ph;
+  /* When we create the widgets the window system expects a valid
+     size, so If we still don' t have sizes, call layout to pick them
+     up. If query_geometry or layout relies on the widget being in
+     existence then we are in catch 22. */
+  image_instance_layout (image_instance, 
+			 pw ? pw : IMAGE_UNSPECIFIED_GEOMETRY,
+			 ph ? ph : IMAGE_UNSPECIFIED_GEOMETRY,
+			 domain);
+  /* Layout has already been done so we don't need to re-layout. */
+  IMAGE_INSTANCE_DIRTYP (ii) = 0;
+
 #ifdef DEBUG_WIDGETS
   debug_widget_instances++;
   stderr_out ("instantiated ");
@@ -503,63 +600,67 @@
 #endif
 }
 
-static void
-widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
-		    Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-		    int dest_mask, Lisp_Object domain)
-{
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			       pointer_bg, dest_mask, domain, 1, 0, 0);
-}
-
-/* tree-view generic instantiation - get the height right */
+/* tree-view geometry - get the height right */
 static void
-tree_view_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
-		       Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-		       int dest_mask, Lisp_Object domain)
+tree_view_query_geometry (Lisp_Object image_instance, 
+			  unsigned int* width, unsigned int* height,
+			  enum image_instance_geometry disp, Lisp_Object domain)
 {
-  Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties),
-				 Q_items, Qnil);
-  int len;
-  GET_LIST_LENGTH (data, len);
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			pointer_bg, dest_mask, domain, len + 1, 0, 0);
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object items = IMAGE_INSTANCE_WIDGET_ITEMS (ii);
+
+  
+  if (*width)
+    {
+      /* #### what should this be. reconsider when X has tree views. */
+      query_string_geometry (IMAGE_INSTANCE_WIDGET_TEXT (ii),
+			     IMAGE_INSTANCE_WIDGET_FACE (ii),
+			     width, 0, 0, domain);
+    }
+  if (*height)
+    {
+      int len, h;
+      default_face_font_info (domain, 0, 0, &h, 0, 0);
+      GET_LIST_LENGTH (items, len);
+      *height = len * h;
+    }
 }
 
+/* Get the geometry of a tab control. This is based on the number of
+   items and text therin in the tab control. */
 static void
-tab_control_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
-		 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-		 int dest_mask, Lisp_Object domain)
+tab_control_query_geometry (Lisp_Object image_instance, 
+			    unsigned int* width, unsigned int* height,
+			    enum image_instance_geometry disp, Lisp_Object domain)
 {
-  Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties),
-				 Q_items, Qnil);
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object items = IMAGE_INSTANCE_WIDGET_ITEMS (ii);
   Lisp_Object rest;
-  int len = 0;
+  unsigned int tw = 0, th = 0;
 
-  LIST_LOOP (rest, data)
+  LIST_LOOP (rest, items)
     {
-      len += 3;			/* some bias */
-      if (STRINGP (XCAR (rest)))
-	len += XSTRING_LENGTH (XCAR (rest));
-      else if (VECTORP (XCAR (rest)))
-	{
-	  Lisp_Object gui = gui_parse_item_keywords (XCAR (rest));
-	  len += XSTRING_LENGTH (XGUI_ITEM (gui)->name);
-	}
+      unsigned int h, w;
+
+      query_string_geometry (XGUI_ITEM (XCAR (rest))->name,
+			     IMAGE_INSTANCE_WIDGET_FACE (ii),
+			     &w, &h, 0, domain);
+      tw += 2 * WIDGET_BORDER_WIDTH; /* some bias */
+      tw += w;
+      th = max (th, h + 2 * WIDGET_BORDER_HEIGHT);
     }
 
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			pointer_bg, dest_mask, domain, 0, 0, len);
-}
-
-/* Instantiate a static control */
-static void
-static_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
-		    Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-		    int dest_mask, Lisp_Object domain)
-{
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			pointer_bg, dest_mask, domain, 0, 4, 0);
+  /* Fixup returned values depending on orientation. */
+  if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii))
+    {
+      if (height)	*height = tw;
+      if (width)	*width = th;
+    }
+  else
+    {
+      if (height)	*height = th;
+      if (width)	*width = tw;
+    }
 }
 
 
@@ -689,8 +790,8 @@
   LIST_LOOP (rest, items)
     {
       Lisp_Object glyph = XCAR (rest);
-      int gheight = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain);
-      int gwidth = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain);
+      int gheight = glyph_height (glyph, domain);
+      int gwidth = glyph_width (glyph, domain);
       nitems ++;
       if (EQ (orient, Qhorizontal))
 	{
@@ -738,7 +839,7 @@
       XIMAGE_INSTANCE_XOFFSET (bglyph) = 10; /* Really, what should this be? */
       XIMAGE_INSTANCE_YOFFSET (bglyph) = 0;
 
-      ph_adjust = (glyph_height (border, Qnil, DEFAULT_INDEX, domain) / 2);
+      ph_adjust = (glyph_height (border, domain) / 2);
       IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (ph_adjust);
     }
 
@@ -768,8 +869,8 @@
       /* make sure the image is instantiated */
       Lisp_Object glyph = XCAR (rest);
       Lisp_Object gii = glyph_image_instance (glyph, domain, ERROR_ME, 1);
-      int gwidth = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain);
-      int gheight = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain);
+      int gwidth = glyph_width (glyph, domain);
+      int gheight = glyph_height (glyph, domain);
 
       children = Fcons (gii, children);
 
@@ -862,6 +963,8 @@
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM (widget, "widget");
   IIFORMAT_HAS_METHOD (widget, property);
   IIFORMAT_HAS_METHOD (widget, set_property);
+  IIFORMAT_HAS_METHOD (widget, query_geometry);
+  IIFORMAT_HAS_METHOD (widget, layout);
 
   /* widget image-instantiator types - buttons */
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (button, "button");
@@ -917,7 +1020,8 @@
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (tree_view, "tree-view");
   IIFORMAT_HAS_SHARED_METHOD (tree_view, validate, combo_box);
   IIFORMAT_HAS_SHARED_METHOD (tree_view, possible_dest_types, widget);
-  IIFORMAT_HAS_METHOD (tree_view, instantiate);
+  IIFORMAT_HAS_SHARED_METHOD (tree_view, instantiate, widget);
+  IIFORMAT_HAS_METHOD (tree_view, query_geometry);
   VALID_WIDGET_KEYWORDS (tree_view);
   VALID_GUI_KEYWORDS (tree_view);
   IIFORMAT_VALID_KEYWORD (tree_view, Q_properties, check_valid_item_list);
@@ -926,15 +1030,17 @@
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (tab_control, "tab-control");
   IIFORMAT_HAS_SHARED_METHOD (tab_control, validate, combo_box);
   IIFORMAT_HAS_SHARED_METHOD (tab_control, possible_dest_types, widget);
-  IIFORMAT_HAS_METHOD (tab_control, instantiate);
+  IIFORMAT_HAS_SHARED_METHOD (tab_control, instantiate, widget);
+  IIFORMAT_HAS_METHOD (tab_control, query_geometry);
   VALID_WIDGET_KEYWORDS (tab_control);
   VALID_GUI_KEYWORDS (tab_control);
+  IIFORMAT_VALID_KEYWORD (tab_control, Q_orientation, check_valid_tab_orientation);
   IIFORMAT_VALID_KEYWORD (tab_control, Q_properties, check_valid_item_list);
 
   /* labels */
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (label, "label");
   IIFORMAT_HAS_SHARED_METHOD (label, possible_dest_types, widget);
-  IIFORMAT_HAS_SHARED_METHOD (label, instantiate, static);
+  IIFORMAT_HAS_SHARED_METHOD (label, instantiate, widget);
   VALID_WIDGET_KEYWORDS (label);
   IIFORMAT_VALID_KEYWORD (label, Q_descriptor, check_valid_string);
 
--- a/src/glyphs-x.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs-x.c	Mon Aug 13 11:32:25 2007 +0200
@@ -4,7 +4,7 @@
    Copyright (C) 1995 Tinker Systems
    Copyright (C) 1995, 1996 Ben Wing
    Copyright (C) 1995 Sun Microsystems
-   Copyright (C) 1999 Andy Piper
+   Copyright (C) 1999, 2000 Andy Piper
 
 This file is part of XEmacs.
 
@@ -104,13 +104,13 @@
 #endif
 #ifdef HAVE_TIFF
 DECLARE_IMAGE_INSTANTIATOR_FORMAT (tiff);
-#endif  
+#endif
 #ifdef HAVE_PNG
 DECLARE_IMAGE_INSTANTIATOR_FORMAT (png);
-#endif  
+#endif
 #ifdef HAVE_GIF
 DECLARE_IMAGE_INSTANTIATOR_FORMAT (gif);
-#endif  
+#endif
 #ifdef HAVE_XPM
 DEFINE_DEVICE_IIFORMAT (x, xpm);
 #endif
@@ -427,7 +427,7 @@
 	      IMAGE_INSTANCE_X_MASK (p) != IMAGE_INSTANCE_X_PIXMAP (p))
 	    XFreePixmap (dpy, IMAGE_INSTANCE_X_MASK (p));
 	  IMAGE_INSTANCE_PIXMAP_MASK (p) = 0;
-	  
+
 	  if (IMAGE_INSTANCE_X_PIXMAP_SLICES (p))
 	    {
 	      for (i = 0; i < IMAGE_INSTANCE_PIXMAP_MAXSLICE (p); i++)
@@ -445,7 +445,7 @@
 	      XFreeCursor (dpy, IMAGE_INSTANCE_X_CURSOR (p));
 	      IMAGE_INSTANCE_X_CURSOR (p) = 0;
 	    }
-	  
+
 	  if (IMAGE_INSTANCE_X_NPIXELS (p) != 0)
 	    {
 	      XFreeColors (dpy,
@@ -519,7 +519,7 @@
 {
   ii->data = xnew_and_zero (struct x_image_instance_data);
   IMAGE_INSTANCE_PIXMAP_MAXSLICE (ii) = slices;
-  IMAGE_INSTANCE_X_PIXMAP_SLICES (ii) = 
+  IMAGE_INSTANCE_X_PIXMAP_SLICES (ii) =
     xnew_array_and_zero (Pixmap, slices);
   IMAGE_INSTANCE_TYPE (ii) = type;
   IMAGE_INSTANCE_PIXMAP_FILENAME (ii) = Qnil;
@@ -945,7 +945,7 @@
 
   for (slice = 0; slice < slices; slice++)
     {
-      ximage = convert_EImage_to_XImage (device, width, height, 
+      ximage = convert_EImage_to_XImage (device, width, height,
 					 eimage + (width * height * 3 * slice),
 					 &pixtbl, &npixels);
       if (!ximage)
@@ -1288,8 +1288,8 @@
 
 static void
 x_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
-				   Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-				   int dest_mask, Lisp_Object domain)
+		   Lisp_Object pointer_fg, Lisp_Object pointer_bg,
+		   int dest_mask, Lisp_Object domain)
 {
   /* This function can GC */
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
@@ -1729,7 +1729,7 @@
 
 static Lisp_Object
 autodetect_normalize (Lisp_Object instantiator,
-				Lisp_Object console_type)
+		      Lisp_Object console_type)
 {
   Lisp_Object file = find_keyword_in_vector (instantiator, Q_data);
   Lisp_Object filename = Qnil;
@@ -1820,10 +1820,10 @@
 
 static void
 autodetect_instantiate (Lisp_Object image_instance,
-				  Lisp_Object instantiator,
-				  Lisp_Object pointer_fg,
-				  Lisp_Object pointer_bg,
-				  int dest_mask, Lisp_Object domain)
+			Lisp_Object instantiator,
+			Lisp_Object pointer_fg,
+			Lisp_Object pointer_bg,
+			int dest_mask, Lisp_Object domain)
 {
   Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
   struct gcpro gcpro1, gcpro2, gcpro3;
@@ -2113,8 +2113,8 @@
 {
   if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
     {
-      XUnmapWindow 
-	(IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p), 
+      XUnmapWindow
+	(IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p),
 	 IMAGE_INSTANCE_X_CLIPWINDOW (p));
     }
   else				/* must be a widget */
@@ -2133,7 +2133,7 @@
     {
       Window subwindow = IMAGE_INSTANCE_X_SUBWINDOW_ID (p);
       XMoveResizeWindow (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p),
-			 IMAGE_INSTANCE_X_CLIPWINDOW (p), 
+			 IMAGE_INSTANCE_X_CLIPWINDOW (p),
 			 x, y, dga->width, dga->height);
       XMoveWindow (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p),
 		   subwindow, -dga->xoffset, -dga->yoffset);
@@ -2142,7 +2142,7 @@
     }
   else				/* must be a widget */
     {
-      XtConfigureWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p), 
+      XtConfigureWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p),
 			 x + IMAGE_INSTANCE_X_WIDGET_XOFFSET (p),
 			 y + IMAGE_INSTANCE_X_WIDGET_YOFFSET (p),
 			 dga->width, dga->height, 0);
@@ -2160,28 +2160,23 @@
 #ifdef HAVE_WIDGETS
   if (IMAGE_INSTANCE_TYPE (p) == IMAGE_WIDGET)
     {
-      Arg al[5];
-      widget_value* wv = gui_items_to_widget_values 
+      widget_value* wv = gui_items_to_widget_values
 	(IMAGE_INSTANCE_WIDGET_ITEMS (p));
 
       /* This seems ugly, but I'm not sure what else to do. */
       if (EQ (IMAGE_INSTANCE_WIDGET_TYPE (p), Qtab_control))
 	{
-	  update_tab_widget_face (wv, p, 
+	  update_tab_widget_face (wv, p,
 				  IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
 	}
       /* update the colors and font */
       update_widget_face (wv, p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
-      
+
       /* now modify the widget */
-      lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p), 
+      lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
 			     wv, True);
       free_widget_value_tree (wv);
-      /* We have to do this otherwise Motif will unceremoniously
-         resize us when the label gets set. */
-      XtSetArg (al [0], XtNwidth, IMAGE_INSTANCE_WIDGET_WIDTH (p));
-      XtSetArg (al [1], XtNheight, IMAGE_INSTANCE_WIDGET_HEIGHT (p));
-      XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (p), al, 2);
+      /* subwindow resizing now gets done by the parent function. */
     }
 #endif
 }
@@ -2202,7 +2197,7 @@
   Window pw, win;
   XSetWindowAttributes xswa;
   Mask valueMask = 0;
-  unsigned int w = IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii), 
+  unsigned int w = IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii),
     h = IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii);
 
   if (!DEVICE_X_P (XDEVICE (device)))
@@ -2224,9 +2219,9 @@
   valueMask |= CWBackingStore;
   xswa.colormap = DefaultColormapOfScreen (xs);
   valueMask |= CWColormap;
-  
+
   /* Create a window for clipping */
-  IMAGE_INSTANCE_X_CLIPWINDOW (ii) = 
+  IMAGE_INSTANCE_X_CLIPWINDOW (ii) =
     XCreateWindow (dpy, pw, 0, 0, w, h, 0, CopyFromParent,
 		   InputOutput, CopyFromParent, valueMask,
 		   &xswa);
@@ -2236,7 +2231,7 @@
 		       0, 0, w, h, 0, CopyFromParent,
 		       InputOutput, CopyFromParent, valueMask,
 		       &xswa);
-  
+
   IMAGE_INSTANCE_SUBWINDOW_ID (ii) = (void*)win;
 }
 
@@ -2270,7 +2265,7 @@
 }
 #endif
 
-static void 
+static void
 x_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h)
 {
   if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_SUBWINDOW)
@@ -2310,28 +2305,34 @@
 #ifdef LWLIB_WIDGETS_MOTIF
   XmFontList fontList;
 #endif
-
-  Lisp_Object pixel = FACE_FOREGROUND 
+  /* Update the foreground. */
+  Lisp_Object pixel = FACE_FOREGROUND
     (IMAGE_INSTANCE_WIDGET_FACE (ii),
      domain);
-  XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
-
+  XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)), bcolor;
   lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel);
+
+  /* Update the background. */
+  pixel = FACE_BACKGROUND (IMAGE_INSTANCE_WIDGET_FACE (ii),
+			   domain);
+  bcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
+  lw_add_widget_value_arg (wv, XtNbackground, bcolor.pixel);
+
 #ifdef LWLIB_WIDGETS_MOTIF
   fontList = XmFontListCreate
-    (FONT_INSTANCE_X_FONT 
-     (XFONT_INSTANCE (widget_face_font_info 
-		      (domain,
+    (FONT_INSTANCE_X_FONT
+     (XFONT_INSTANCE (query_string_font
+		      (IMAGE_INSTANCE_WIDGET_TEXT (ii),
 		       IMAGE_INSTANCE_WIDGET_FACE (ii),
-		       0, 0))), XmSTRING_DEFAULT_CHARSET);
+		       domain))),  XmSTRING_DEFAULT_CHARSET);
   lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal)fontList);
 #endif
-  lw_add_widget_value_arg 
-    (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT 
-     (XFONT_INSTANCE (widget_face_font_info 
-		      (domain,
+  lw_add_widget_value_arg
+    (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT
+     (XFONT_INSTANCE (query_string_font
+		      (IMAGE_INSTANCE_WIDGET_TEXT (ii),
 		       IMAGE_INSTANCE_WIDGET_FACE (ii),
-		       0, 0))));
+		       domain))));
 }
 
 static void
@@ -2341,9 +2342,9 @@
   if (wv->contents)
     {
       widget_value* val = wv->contents, *cur;
-      
+
       /* Give each child label the correct foreground color. */
-      Lisp_Object pixel = FACE_FOREGROUND 
+      Lisp_Object pixel = FACE_FOREGROUND
 	(IMAGE_INSTANCE_WIDGET_FACE (ii),
 	 domain);
       XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
@@ -2398,9 +2399,9 @@
   clip_wv = xmalloc_widget_value ();
 
   lw_add_widget_value_arg (clip_wv, XtNresize, False);
-  lw_add_widget_value_arg (clip_wv, XtNwidth, 
+  lw_add_widget_value_arg (clip_wv, XtNwidth,
 			   (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
-  lw_add_widget_value_arg (clip_wv, XtNheight, 
+  lw_add_widget_value_arg (clip_wv, XtNheight,
 			   (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
   clip_wv->enabled = True;
 
@@ -2422,7 +2423,7 @@
      created so that Motif will fix up the shadow colors
      correctly. Once the widget is created Motif won't do this
      anymore...*/
-  pixel = FACE_FOREGROUND 
+  pixel = FACE_FOREGROUND
     (IMAGE_INSTANCE_WIDGET_FACE (ii),
      IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
   fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
@@ -2436,9 +2437,9 @@
   lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel);
   /* we cannot allow widgets to resize themselves */
   lw_add_widget_value_arg (wv, XtNresize, False);
-  lw_add_widget_value_arg (wv, XtNwidth, 
+  lw_add_widget_value_arg (wv, XtNwidth,
 			   (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
-  lw_add_widget_value_arg (wv, XtNheight, 
+  lw_add_widget_value_arg (wv, XtNheight,
 			   (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
   /* update the font. */
   update_widget_face (wv, ii, domain);
@@ -2452,9 +2453,9 @@
   /* Resize the widget here so that the values do not get copied by
      lwlib. */
   ac = 0;
-  XtSetArg (al [ac], XtNwidth, 
+  XtSetArg (al [ac], XtNwidth,
 	    (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); ac++;
-  XtSetArg (al [ac], XtNheight, 
+  XtSetArg (al [ac], XtNheight,
 	    (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); ac++;
   XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, ac);
   /* because the EmacsManager is the widgets parent we have to
@@ -2485,7 +2486,6 @@
       GET_C_STRING_OS_DATA_ALLOCA (val, str);
       wv->value = str;
       lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False);
-      return Qt;
     }
 
   /* Modify the text properties of the widget */
@@ -2494,7 +2494,6 @@
       widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii));
       update_widget_face (wv, ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
       lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False);
-      return Qt;
     }
   return Qunbound;
 }
@@ -2616,9 +2615,9 @@
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
   widget_value* wv = xmalloc_widget_value ();
-  
+
   button_item_to_widget_value (gui, wv, 1, 1);
-  
+
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
 			pointer_bg, dest_mask, domain, "text-field", wv);
 }
@@ -2634,11 +2633,11 @@
   widget_value * wv = 0;
   /* This is not done generically because of sizing problems under
      mswindows. */
-  widget_instantiate_1 (image_instance, instantiator, pointer_fg,
-			pointer_bg, dest_mask, domain, 1, 0, 0);
+  widget_instantiate (image_instance, instantiator, pointer_fg,
+		      pointer_bg, dest_mask, domain);
 
   wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
-  
+
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
 			pointer_bg, dest_mask, domain, "combo-box", wv);
 }
@@ -2650,10 +2649,10 @@
 			   int dest_mask, Lisp_Object domain)
 {
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  widget_value * wv = 
+  widget_value * wv =
     gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
 
-  update_tab_widget_face (wv, ii, 
+  update_tab_widget_face (wv, ii,
 			  IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
 
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
@@ -2666,19 +2665,19 @@
 			    Lisp_Object val)
 {
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  
+
   if (EQ (prop, Q_items))
     {
       widget_value * wv = 0;
       check_valid_item_list_1 (val);
 
-      IMAGE_INSTANCE_WIDGET_ITEMS (ii) = 
-	Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)), 
+      IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
+	Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
 	       parse_gui_item_tree_children (val));
 
       wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
-      
-      update_tab_widget_face (wv, ii, 
+
+      update_tab_widget_face (wv, ii,
 			      IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
 
       lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, True);
@@ -2699,9 +2698,9 @@
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
   widget_value* wv = xmalloc_widget_value ();
-  
+
   button_item_to_widget_value (gui, wv, 1, 1);
-  
+
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
 			pointer_bg, dest_mask, domain, "button", wv);
 }
@@ -2755,13 +2754,13 @@
 #endif
 #ifdef HAVE_TIFF
   IIFORMAT_VALID_CONSOLE (x, tiff);
-#endif  
+#endif
 #ifdef HAVE_PNG
   IIFORMAT_VALID_CONSOLE (x, png);
-#endif  
+#endif
 #ifdef HAVE_GIF
   IIFORMAT_VALID_CONSOLE (x, gif);
-#endif  
+#endif
   INITIALIZE_DEVICE_IIFORMAT (x, xbm);
   IIFORMAT_HAS_DEVMETHOD (x, xbm, instantiate);
 
--- a/src/glyphs.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs.c	Mon Aug 13 11:32:25 2007 +0200
@@ -3,7 +3,7 @@
    Copyright (C) 1995 Tinker Systems
    Copyright (C) 1995, 1996 Ben Wing
    Copyright (C) 1995 Sun Microsystems
-   Copyright (C) 1998, 1999 Andy Piper
+   Copyright (C) 1998, 1999, 2000 Andy Piper
 
 This file is part of XEmacs.
 
@@ -24,7 +24,8 @@
 
 /* Synched up with: Not in FSF. */
 
-/* Written by Ben Wing and Chuck Thompson. */
+/* Written by Ben Wing and Chuck Thompson. Heavily modified /
+   rewritten by Andy Piper. */
 
 #include <config.h>
 #include "lisp.h"
@@ -122,7 +123,7 @@
 image_instantiator_format_entry_dynarr *
   the_image_instantiator_format_entry_dynarr;
 
-static Lisp_Object allocate_image_instance (Lisp_Object device);
+static Lisp_Object allocate_image_instance (Lisp_Object device, Lisp_Object glyph);
 static void image_validate (Lisp_Object instantiator);
 static void glyph_property_was_changed (Lisp_Object glyph,
 					Lisp_Object property,
@@ -575,9 +576,9 @@
 instantiate_image_instantiator (Lisp_Object device, Lisp_Object domain,
 				Lisp_Object instantiator,
 				Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-				int dest_mask)
+				int dest_mask, Lisp_Object glyph)
 {
-  Lisp_Object ii = allocate_image_instance (device);
+  Lisp_Object ii = allocate_image_instance (device, glyph);
   struct image_instantiator_methods *meths;
   struct gcpro gcpro1;
   int  methp = 0;
@@ -622,6 +623,8 @@
   struct Lisp_Image_Instance *i = XIMAGE_INSTANCE (obj);
 
   mark_object (i->name);
+  /* We don't mark the glyph reference since that would create a
+     circularity preventing GC. */
   switch (IMAGE_INSTANCE_TYPE (i))
     {
     case IMAGE_TEXT:
@@ -754,13 +757,6 @@
       break;
 
     case IMAGE_WIDGET:
-      /*
-      if (!NILP (IMAGE_INSTANCE_WIDGET_CALLBACK (ii)))
-	{
-	  print_internal (IMAGE_INSTANCE_WIDGET_CALLBACK (ii), printcharfun, 0);
-	  write_c_string (", ", printcharfun);
-	}
-      */
       if (!NILP (IMAGE_INSTANCE_WIDGET_FACE (ii)))
 	{
 	  write_c_string (" (", printcharfun);
@@ -842,7 +838,11 @@
 
   if (d1 != d2)
     return 0;
-  if (IMAGE_INSTANCE_TYPE (i1) != IMAGE_INSTANCE_TYPE (i2))
+  if (IMAGE_INSTANCE_TYPE (i1) != IMAGE_INSTANCE_TYPE (i2)
+      || IMAGE_INSTANCE_WIDTH (i1) != IMAGE_INSTANCE_WIDTH (i2)
+      || IMAGE_INSTANCE_HEIGHT (i1) != IMAGE_INSTANCE_HEIGHT (i2)
+      || IMAGE_INSTANCE_XOFFSET (i1) != IMAGE_INSTANCE_XOFFSET (i2)
+      || IMAGE_INSTANCE_YOFFSET (i1) != IMAGE_INSTANCE_YOFFSET (i2))
     return 0;
   if (!internal_equal (IMAGE_INSTANCE_NAME (i1), IMAGE_INSTANCE_NAME (i2),
 		       depth + 1))
@@ -863,11 +863,7 @@
     case IMAGE_MONO_PIXMAP:
     case IMAGE_COLOR_PIXMAP:
     case IMAGE_POINTER:
-      if (!(IMAGE_INSTANCE_PIXMAP_WIDTH (i1) ==
-	    IMAGE_INSTANCE_PIXMAP_WIDTH (i2) &&
-	    IMAGE_INSTANCE_PIXMAP_HEIGHT (i1) ==
-	    IMAGE_INSTANCE_PIXMAP_HEIGHT (i2) &&
-	    IMAGE_INSTANCE_PIXMAP_DEPTH (i1) ==
+      if (!(IMAGE_INSTANCE_PIXMAP_DEPTH (i1) ==
 	    IMAGE_INSTANCE_PIXMAP_DEPTH (i2) &&
 	    IMAGE_INSTANCE_PIXMAP_SLICE (i1) ==
 	    IMAGE_INSTANCE_PIXMAP_SLICE (i2) &&
@@ -887,6 +883,8 @@
     case IMAGE_WIDGET:
       if (!(EQ (IMAGE_INSTANCE_WIDGET_TYPE (i1),
 		IMAGE_INSTANCE_WIDGET_TYPE (i2))
+	    && IMAGE_INSTANCE_SUBWINDOW_ID (i1) ==
+	    IMAGE_INSTANCE_SUBWINDOW_ID (i2)
 	    && internal_equal (IMAGE_INSTANCE_WIDGET_ITEMS (i1),
 			       IMAGE_INSTANCE_WIDGET_ITEMS (i2),
 			       depth + 1)
@@ -895,6 +893,8 @@
 			       depth + 1)
 	    ))
 	return 0;
+      break;
+      
     case IMAGE_LAYOUT:
       if (IMAGE_INSTANCE_TYPE (i1) == IMAGE_LAYOUT
 	  &&
@@ -905,12 +905,10 @@
 			    IMAGE_INSTANCE_LAYOUT_CHILDREN (i2),
 			    depth + 1)))
 	return 0;
+      break;
+      
     case IMAGE_SUBWINDOW:
-      if (!(IMAGE_INSTANCE_SUBWINDOW_WIDTH (i1) ==
-	    IMAGE_INSTANCE_SUBWINDOW_WIDTH (i2) &&
-	    IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i1) ==
-	    IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i2) &&
-	    IMAGE_INSTANCE_SUBWINDOW_ID (i1) ==
+      if (!(IMAGE_INSTANCE_SUBWINDOW_ID (i1) ==
 	    IMAGE_INSTANCE_SUBWINDOW_ID (i2)))
 	return 0;
       break;
@@ -927,7 +925,9 @@
 {
   struct Lisp_Image_Instance *i = XIMAGE_INSTANCE (obj);
   struct device *d = XDEVICE (i->device);
-  unsigned long hash = (unsigned long) d;
+  unsigned long hash = HASH3 ((unsigned long) d,
+			      IMAGE_INSTANCE_WIDTH (i),
+			      IMAGE_INSTANCE_HEIGHT (i));
 
   switch (IMAGE_INSTANCE_TYPE (i))
     {
@@ -942,9 +942,7 @@
     case IMAGE_MONO_PIXMAP:
     case IMAGE_COLOR_PIXMAP:
     case IMAGE_POINTER:
-      hash = HASH6 (hash, IMAGE_INSTANCE_PIXMAP_WIDTH (i),
-		    IMAGE_INSTANCE_PIXMAP_HEIGHT (i),
-		    IMAGE_INSTANCE_PIXMAP_DEPTH (i),
+      hash = HASH4 (hash, IMAGE_INSTANCE_PIXMAP_DEPTH (i),
 		    IMAGE_INSTANCE_PIXMAP_SLICE (i),
 		    internal_hash (IMAGE_INSTANCE_PIXMAP_FILENAME (i),
 				   depth + 1));
@@ -955,16 +953,15 @@
 		    internal_hash (IMAGE_INSTANCE_WIDGET_TYPE (i), depth + 1),
 		    internal_hash (IMAGE_INSTANCE_WIDGET_PROPS (i), depth + 1),
 		    internal_hash (IMAGE_INSTANCE_WIDGET_ITEMS (i), depth + 1));
+    case IMAGE_SUBWINDOW:
+      hash = HASH2 (hash, (int) IMAGE_INSTANCE_SUBWINDOW_ID (i));
+      break;
+
     case IMAGE_LAYOUT:
-      if (IMAGE_INSTANCE_TYPE (i) == IMAGE_LAYOUT)
-	hash = HASH3 (hash,
-		      internal_hash (IMAGE_INSTANCE_LAYOUT_BORDER (i), depth + 1),
-		      internal_hash (IMAGE_INSTANCE_LAYOUT_CHILDREN (i),
-				     depth + 1));
-    case IMAGE_SUBWINDOW:
-      hash = HASH4 (hash, IMAGE_INSTANCE_SUBWINDOW_WIDTH (i),
-		    IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i),
-		    (int) IMAGE_INSTANCE_SUBWINDOW_ID (i));
+      hash = HASH3 (hash,
+		    internal_hash (IMAGE_INSTANCE_LAYOUT_BORDER (i), depth + 1),
+		    internal_hash (IMAGE_INSTANCE_LAYOUT_CHILDREN (i),
+				   depth + 1));
       break;
 
     default:
@@ -982,7 +979,7 @@
 			       struct Lisp_Image_Instance);
 
 static Lisp_Object
-allocate_image_instance (Lisp_Object device)
+allocate_image_instance (Lisp_Object device, Lisp_Object glyph)
 {
   struct Lisp_Image_Instance *lp =
     alloc_lcrecord_type (struct Lisp_Image_Instance, &lrecord_image_instance);
@@ -994,7 +991,12 @@
   lp->name = Qnil;
   lp->x_offset = 0;
   lp->y_offset = 0;
+  lp->width = 0;
+  lp->height = 0;
+  lp->glyph = glyph;
+  MARK_IMAGE_INSTANCE_CHANGED (lp); /* So that layouts get done. */
   XSETIMAGE_INSTANCE (val, lp);
+  MARK_GLYPHS_CHANGED;	/* So that the dirty flag gets reset. */
   return val;
 }
 
@@ -1176,7 +1178,7 @@
   if (VECTORP (data) && EQ (XVECTOR_DATA (data)[0], Qinherit))
     signal_simple_error ("Inheritance not allowed here", data);
   ii = instantiate_image_instantiator (device, device, data,
-				       Qnil, Qnil, dest_mask);
+				       Qnil, Qnil, dest_mask, Qnil);
   RETURN_UNGCPRO (ii);
 }
 
@@ -1450,12 +1452,10 @@
     case IMAGE_MONO_PIXMAP:
     case IMAGE_COLOR_PIXMAP:
     case IMAGE_POINTER:
-      return make_int (XIMAGE_INSTANCE_PIXMAP_HEIGHT (image_instance));
-
     case IMAGE_SUBWINDOW:
     case IMAGE_WIDGET:
     case IMAGE_LAYOUT:
-      return make_int (XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (image_instance));
+      return make_int (XIMAGE_INSTANCE_HEIGHT (image_instance));
 
     default:
       return Qnil;
@@ -1474,12 +1474,10 @@
     case IMAGE_MONO_PIXMAP:
     case IMAGE_COLOR_PIXMAP:
     case IMAGE_POINTER:
-      return make_int (XIMAGE_INSTANCE_PIXMAP_WIDTH (image_instance));
-
     case IMAGE_SUBWINDOW:
     case IMAGE_WIDGET:
     case IMAGE_LAYOUT:
-      return make_int (XIMAGE_INSTANCE_SUBWINDOW_WIDTH (image_instance));
+      return make_int (XIMAGE_INSTANCE_WIDTH (image_instance));
 
     default:
       return Qnil;
@@ -1611,7 +1609,7 @@
 
   /* #### There should be a copy_image_instance(), which calls a
      device-specific method to copy the window-system subobject. */
-  new = allocate_image_instance (device);
+  new = allocate_image_instance (device, Qnil);
   copy_lcrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance));
   /* note that if this method returns non-zero, this method MUST
      copy any window-system resources, so that when one image instance is
@@ -1622,6 +1620,98 @@
   return new;
 }
 
+
+/************************************************************************/
+/*                              Geometry calculations                   */
+/************************************************************************/
+
+/* Find out desired geometry of the image instance. If there is no
+   special function then just return the width and / or height. */
+void
+image_instance_query_geometry (Lisp_Object image_instance, 
+			       unsigned int* width, unsigned int* height, 
+			       enum image_instance_geometry disp,
+			       Lisp_Object domain)
+{
+  struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object type;
+  struct image_instantiator_methods* meths;
+
+  type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii));
+  meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT);
+  
+  if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry))
+    {
+      IIFORMAT_METH (meths, query_geometry, (image_instance, width, height, 
+					     disp, domain));
+    }
+  else
+    {
+      if (width)
+	*width = IMAGE_INSTANCE_WIDTH (ii);
+      if (height)
+	*height = IMAGE_INSTANCE_HEIGHT (ii);
+    }
+}
+
+/* Layout the image instance using the provided dimensions. Layout
+   widgets are going to do different kinds of calculations to
+   determine what size to give things so we could make the layout
+   function relatively simple to take account of that. An alternative
+   approach is to consider separately the two cases, one where you
+   don't mind what size you have (normal widgets) and one where you
+   want to specifiy something (layout widgets). */
+void
+image_instance_layout (Lisp_Object image_instance, 
+		       unsigned int width, unsigned int height, 
+		       Lisp_Object domain)
+{
+  struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance);
+  Lisp_Object type;
+  struct image_instantiator_methods* meths;
+
+  type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii));
+  meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT);
+
+  /* If geometry is unspecified then get some reasonable values for it. */
+  if (width == IMAGE_UNSPECIFIED_GEOMETRY
+      ||
+      height == IMAGE_UNSPECIFIED_GEOMETRY)
+    {
+      unsigned int dwidth, dheight;
+
+      /* Get the desired geometry. */
+      if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry))
+	{
+	  IIFORMAT_METH (meths, query_geometry, (image_instance, &dwidth, &dheight, 
+						 IMAGE_DESIRED_GEOMETRY, 
+						 domain));
+	}
+      else
+	{
+	  dwidth = IMAGE_INSTANCE_WIDTH (ii);
+	  dheight = IMAGE_INSTANCE_HEIGHT (ii);
+	}
+
+      /* Compare with allowed geometry. */
+      if (width == IMAGE_UNSPECIFIED_GEOMETRY)
+	width = dwidth;
+      if (height == IMAGE_UNSPECIFIED_GEOMETRY)
+	height = dheight;
+    }
+
+  /* At this point width and height should contain sane values. Thus
+     we set the glyph geometry and lay it out. */
+  IMAGE_INSTANCE_WIDTH (ii) = width;
+  IMAGE_INSTANCE_HEIGHT (ii) = height;
+  
+  if (meths && HAS_IIFORMAT_METH_P (meths, layout))
+    {
+      IIFORMAT_METH (meths, layout, (image_instance, width, height, domain));
+    }
+  /* else no change to the geometry. */
+}
+
 
 /************************************************************************/
 /*                              error helpers                           */
@@ -1718,7 +1808,7 @@
   return IMAGE_TEXT_MASK;
 }
 
-/* called from autodetect_instantiate() */
+/* Called from autodetect_instantiate() */
 void
 string_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 		    Lisp_Object pointer_fg, Lisp_Object pointer_bg,
@@ -1726,8 +1816,9 @@
 {
   Lisp_Object string = find_keyword_in_vector (instantiator, Q_data);
   struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-
-  assert (!NILP (string));
+  
+  /* Should never get here with a domain other than a window. */
+  assert (!NILP (string) && WINDOWP (domain));
   if (dest_mask & IMAGE_TEXT_MASK)
     {
       IMAGE_INSTANCE_TYPE (ii) = IMAGE_TEXT;
@@ -1737,6 +1828,116 @@
     incompatible_image_types (instantiator, dest_mask, IMAGE_TEXT_MASK);
 }
 
+/* Sort out the size of the text that is being displayed. Calculating
+   it dynamically allows us to change the text and still see
+   everything. Note that the following methods are for text not string
+   since that is what the instantiated type is. The first method is a
+   helper that is used elsewhere for calculating text geometry. */
+void
+query_string_geometry (Lisp_Object string, Lisp_Object face,
+		       unsigned int* width, unsigned int* height, 
+		       unsigned int* descent, Lisp_Object domain)
+{
+  struct font_metric_info fm;
+  unsigned char charsets[NUM_LEADING_BYTES];
+  struct face_cachel frame_cachel;
+  struct face_cachel *cachel;
+  Lisp_Object frame = FW_FRAME (domain);
+
+  /* Compute height */
+  if (height)
+    {
+      /* Compute string metric info */
+      find_charsets_in_bufbyte_string (charsets,
+				       XSTRING_DATA   (string),
+				       XSTRING_LENGTH (string));
+      
+      /* Fallback to the default face if none was provided. */
+      if (!NILP (face))
+	{
+	  reset_face_cachel (&frame_cachel);
+	  update_face_cachel_data (&frame_cachel, frame, face);
+	  cachel = &frame_cachel;
+	}
+      else
+	{
+	  cachel = WINDOW_FACE_CACHEL (XWINDOW (domain), DEFAULT_INDEX);
+	}
+      
+      ensure_face_cachel_complete (cachel, domain, charsets);
+      face_cachel_charset_font_metric_info (cachel, charsets, &fm);
+      
+      *height = fm.ascent + fm.descent;
+      /* #### descent only gets set if we query the height as well. */
+      if (descent)
+	*descent = fm.descent;
+    }
+    
+  /* Compute width */
+  if (width)
+    {
+      if (!NILP (face))
+	*width = redisplay_frame_text_width_string (XFRAME (frame),
+						    face,
+						    0, string, 0, -1);
+      else
+	*width = redisplay_frame_text_width_string (XFRAME (frame),
+						    Vdefault_face,
+						    0, string, 0, -1);
+    }
+}
+
+Lisp_Object
+query_string_font (Lisp_Object string, Lisp_Object face, Lisp_Object domain)
+{
+  unsigned char charsets[NUM_LEADING_BYTES];
+  struct face_cachel frame_cachel;
+  struct face_cachel *cachel;
+  int i;
+  Lisp_Object frame = FW_FRAME (domain);
+
+  /* Compute string font info */
+  find_charsets_in_bufbyte_string (charsets,
+				   XSTRING_DATA   (string),
+				   XSTRING_LENGTH (string));
+ 
+  reset_face_cachel (&frame_cachel);
+  update_face_cachel_data (&frame_cachel, frame, face);
+  cachel = &frame_cachel;
+
+  ensure_face_cachel_complete (cachel, domain, charsets);
+  
+  for (i = 0; i < NUM_LEADING_BYTES; i++)
+    {
+      if (charsets[i])
+	{
+	  return FACE_CACHEL_FONT (cachel, 
+				   CHARSET_BY_LEADING_BYTE (i + 
+							    MIN_LEADING_BYTE));
+
+	}  
+    }
+
+  return Qnil;			/* NOT REACHED */
+}
+
+static void
+text_query_geometry (Lisp_Object image_instance,
+		     unsigned int* width, unsigned int* height, 
+		     enum image_instance_geometry disp, Lisp_Object domain)
+{
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  unsigned int descent = 0;
+
+  query_string_geometry (IMAGE_INSTANCE_TEXT_STRING (ii),
+			 IMAGE_INSTANCE_FACE (ii),
+			 width, height, &descent, domain);
+
+  /* The descent gets set as a side effect of querying the
+     geometry. */
+  IMAGE_INSTANCE_TEXT_DESCENT (ii) = descent;
+}
+
 /* set the properties of a string */
 static Lisp_Object
 text_set_property (Lisp_Object image_instance, Lisp_Object prop,
@@ -1777,20 +1978,12 @@
 			      Lisp_Object pointer_fg, Lisp_Object pointer_bg,
 			      int dest_mask, Lisp_Object domain)
 {
-  Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
-  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-
-  assert (!NILP (data));
   /* #### implement this */
   warn_when_safe (Qunimplemented, Qnotice,
 		  "`formatted-string' not yet implemented; assuming `string'");
-  if (dest_mask & IMAGE_TEXT_MASK)
-    {
-      IMAGE_INSTANCE_TYPE (ii) = IMAGE_TEXT;
-      IMAGE_INSTANCE_TEXT_STRING (ii) = data;
-    }
-  else
-    incompatible_image_types (instantiator, dest_mask, IMAGE_TEXT_MASK);
+
+  string_instantiate (image_instance, instantiator, 
+		      pointer_fg, pointer_bg, dest_mask, domain);
 }
 
 
@@ -2447,6 +2640,7 @@
 {
   Lisp_Object device = DFW_DEVICE (domain);
   struct device *d = XDEVICE (device);
+  Lisp_Object glyph = IMAGE_SPECIFIER_ATTACHEE (XIMAGE_SPECIFIER (specifier));
   int dest_mask = XIMAGE_SPECIFIER_ALLOWED (specifier);
   int pointerp = dest_mask & image_instance_type_to_mask (IMAGE_POINTER);
 
@@ -2569,7 +2763,8 @@
 						     domain,
 						     instantiator,
 						     pointer_fg, pointer_bg,
-						     dest_mask);
+						     dest_mask,
+						     glyph);
 	  
 	  Fsetcar (locative, instance);
 	  /* only after the image has been instantiated do we know
@@ -3163,7 +3358,8 @@
       break;
     case GLYPH_ICON:
       XIMAGE_SPECIFIER_ALLOWED (g->image) =
-	IMAGE_NOTHING_MASK | IMAGE_MONO_PIXMAP_MASK | IMAGE_COLOR_PIXMAP_MASK;
+	IMAGE_NOTHING_MASK | IMAGE_MONO_PIXMAP_MASK
+	| IMAGE_COLOR_PIXMAP_MASK;
       break;
     default:
       abort ();
@@ -3296,70 +3492,52 @@
     }
 }
 
+Lisp_Object
+glyph_image_instance (Lisp_Object glyph, Lisp_Object domain,
+		      Error_behavior errb, int no_quit)
+{
+  Lisp_Object specifier = GLYPH_IMAGE (XGLYPH (glyph));
+
+  /* This can never return Qunbound.  All glyphs have 'nothing as
+     a fallback. */
+  Lisp_Object image_instance = specifier_instance (specifier, Qunbound, 
+						   domain, errb, no_quit, 0,
+						   Qzero);
+
+  return image_instance;
+}
+
+static Lisp_Object
+glyph_image_instance_maybe (Lisp_Object glyph_or_image, Lisp_Object window)
+{
+  Lisp_Object instance = glyph_or_image;
+
+  if (GLYPHP (glyph_or_image))
+    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
+
+  return instance;
+}
+
 /*****************************************************************************
  glyph_width
 
- Return the width of the given GLYPH on the given WINDOW.  If the
- instance is a string then the width is calculated using the font of
- the given FACE, unless a face is defined by the glyph itself.
+ Return the width of the given GLYPH on the given WINDOW.
+ Calculations are done based on recursively querying the geometry of
+ the associated image instances.
  ****************************************************************************/
 unsigned short
-glyph_width (Lisp_Object glyph_or_image, Lisp_Object frame_face,
-	     face_index window_findex, Lisp_Object window)
+glyph_width (Lisp_Object glyph_or_image, Lisp_Object domain)
 {
-  Lisp_Object instance = glyph_or_image;
-  Lisp_Object frame = XWINDOW (window)->frame;
-
-  /* #### We somehow need to distinguish between the user causing this
-     error condition and a bug causing it. */
-  if (GLYPHP (glyph_or_image))
-    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
-
+  Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image,
+						     domain);
   if (!IMAGE_INSTANCEP (instance))
     return 0;
 
-  switch (XIMAGE_INSTANCE_TYPE (instance))
-    {
-    case IMAGE_TEXT:
-      {
-	Lisp_Object str = XIMAGE_INSTANCE_TEXT_STRING (instance);
-	Lisp_Object private_face = Qnil;
-
-	if (GLYPHP (glyph_or_image))
-	  private_face = XGLYPH_FACE(glyph_or_image);
-
-	if (!NILP (private_face))
-	  return redisplay_frame_text_width_string (XFRAME (frame),
-						    private_face,
-						    0, str, 0, -1);
-	else
-	if (!NILP (frame_face))
-	  return redisplay_frame_text_width_string (XFRAME (frame),
-						    frame_face,
-						    0, str, 0, -1);
-	else
-	  return redisplay_text_width_string (XWINDOW (window),
-					      window_findex,
-					      0, str, 0, -1);
-      }
-
-    case IMAGE_MONO_PIXMAP:
-    case IMAGE_COLOR_PIXMAP:
-    case IMAGE_POINTER:
-      return XIMAGE_INSTANCE_PIXMAP_WIDTH (instance);
-
-    case IMAGE_NOTHING:
-      return 0;
-
-    case IMAGE_SUBWINDOW:
-    case IMAGE_WIDGET:
-    case IMAGE_LAYOUT:
-      return XIMAGE_INSTANCE_SUBWINDOW_WIDTH (instance);
-
-    default:
-      abort ();
-      return 0;
-    }
+  if (XIMAGE_INSTANCE_DIRTYP (instance))
+    image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY,
+			   IMAGE_UNSPECIFIED_GEOMETRY, domain);
+
+  return XIMAGE_INSTANCE_WIDTH (instance);
 }
 
 DEFUN ("glyph-width", Fglyph_width, 1, 2, 0, /*
@@ -3372,126 +3550,60 @@
   XSETWINDOW (window, decode_window (window));
   CHECK_GLYPH (glyph);
 
-  return make_int (glyph_width (glyph, Qnil, DEFAULT_INDEX, window));
-}
-
-#define RETURN_ASCENT	0
-#define RETURN_DESCENT	1
-#define RETURN_HEIGHT	2
-
-Lisp_Object
-glyph_image_instance (Lisp_Object glyph, Lisp_Object domain,
-		      Error_behavior errb, int no_quit)
-{
-  Lisp_Object specifier = GLYPH_IMAGE (XGLYPH (glyph));
-
-  /* This can never return Qunbound.  All glyphs have 'nothing as
-     a fallback. */
-  return specifier_instance (specifier, Qunbound, domain, errb, no_quit, 0,
-			     Qzero);
-}
-
-static unsigned short
-glyph_height_internal (Lisp_Object glyph_or_image, Lisp_Object frame_face,
-		       face_index window_findex, Lisp_Object window,
-		       int function)
-{
-  Lisp_Object instance = glyph_or_image;
-  Lisp_Object frame = XWINDOW (window)->frame;
-
-  if (GLYPHP (glyph_or_image))
-    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
-
-  if (!IMAGE_INSTANCEP (instance))
-    return 0;
-
-  switch (XIMAGE_INSTANCE_TYPE (instance))
-    {
-    case IMAGE_TEXT:
-      {
-	struct font_metric_info fm;
-	Lisp_Object string = XIMAGE_INSTANCE_TEXT_STRING (instance);
-	unsigned char charsets[NUM_LEADING_BYTES];
-	struct face_cachel frame_cachel;
-	struct face_cachel *cachel;
-
-	find_charsets_in_bufbyte_string (charsets,
-					 XSTRING_DATA   (string),
-					 XSTRING_LENGTH (string));
-
-	if (!NILP (frame_face))
-	  {
-	    reset_face_cachel (&frame_cachel);
-	    update_face_cachel_data (&frame_cachel, frame, frame_face);
-	    cachel = &frame_cachel;
-	  }
-	else
-	  cachel = WINDOW_FACE_CACHEL (XWINDOW (window), window_findex);
-	ensure_face_cachel_complete (cachel, window, charsets);
-
-	face_cachel_charset_font_metric_info (cachel, charsets, &fm);
-
-	switch (function)
-	  {
-	  case RETURN_ASCENT:  return fm.ascent;
-	  case RETURN_DESCENT: return fm.descent;
-	  case RETURN_HEIGHT:  return fm.ascent + fm.descent;
-	  default:
-	    abort ();
-	    return 0; /* not reached */
-	  }
-      }
-
-    case IMAGE_MONO_PIXMAP:
-    case IMAGE_COLOR_PIXMAP:
-    case IMAGE_POINTER:
-      /* #### Ugh ugh ugh -- temporary crap */
-      if (function == RETURN_ASCENT || function == RETURN_HEIGHT)
-	return XIMAGE_INSTANCE_PIXMAP_HEIGHT (instance);
-      else
-	return 0;
-
-    case IMAGE_NOTHING:
-      return 0;
-
-    case IMAGE_SUBWINDOW:
-    case IMAGE_WIDGET:
-    case IMAGE_LAYOUT:
-      /* #### Ugh ugh ugh -- temporary crap */
-      if (function == RETURN_ASCENT || function == RETURN_HEIGHT)
-	return XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (instance);
-      else
-	return 0;
-
-    default:
-      abort ();
-      return 0;
-    }
+  return make_int (glyph_width (glyph, window));
 }
 
 unsigned short
-glyph_ascent (Lisp_Object glyph, Lisp_Object frame_face,
-	      face_index window_findex, Lisp_Object window)
+glyph_ascent (Lisp_Object glyph_or_image, Lisp_Object domain)
 {
-  return glyph_height_internal (glyph, frame_face, window_findex, window,
-				RETURN_ASCENT);
+  Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image,
+						     domain);
+  if (!IMAGE_INSTANCEP (instance))
+    return 0;
+
+  if (XIMAGE_INSTANCE_DIRTYP (instance))
+    image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY,
+			   IMAGE_UNSPECIFIED_GEOMETRY, domain);
+
+  if (XIMAGE_INSTANCE_TYPE (instance) == IMAGE_TEXT)
+    return XIMAGE_INSTANCE_TEXT_ASCENT (instance);
+  else
+    return XIMAGE_INSTANCE_HEIGHT (instance);
 }
 
 unsigned short
-glyph_descent (Lisp_Object glyph, Lisp_Object frame_face,
-	       face_index window_findex, Lisp_Object window)
+glyph_descent (Lisp_Object glyph_or_image, Lisp_Object domain)
 {
-  return glyph_height_internal (glyph, frame_face, window_findex, window,
-				RETURN_DESCENT);
+  Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image,
+						     domain);
+  if (!IMAGE_INSTANCEP (instance))
+    return 0;
+
+  if (XIMAGE_INSTANCE_DIRTYP (instance))
+    image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY,
+			   IMAGE_UNSPECIFIED_GEOMETRY, domain);
+
+  if (XIMAGE_INSTANCE_TYPE (instance) ==  IMAGE_TEXT)
+    return XIMAGE_INSTANCE_TEXT_DESCENT (instance);
+  else
+    return 0;
 }
 
 /* strictly a convenience function. */
 unsigned short
-glyph_height (Lisp_Object glyph, Lisp_Object frame_face,
-	      face_index window_findex, Lisp_Object window)
+glyph_height (Lisp_Object glyph_or_image, Lisp_Object domain)
 {
-  return glyph_height_internal (glyph, frame_face, window_findex, window,
-				RETURN_HEIGHT);
+  Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image,
+						     domain);
+  
+  if (!IMAGE_INSTANCEP (instance))
+    return 0;
+
+  if (XIMAGE_INSTANCE_DIRTYP (instance))
+    image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY,
+			   IMAGE_UNSPECIFIED_GEOMETRY, domain);
+
+  return XIMAGE_INSTANCE_HEIGHT (instance);
 }
 
 DEFUN ("glyph-ascent", Fglyph_ascent, 1, 2, 0, /*
@@ -3504,7 +3616,7 @@
   XSETWINDOW (window, decode_window (window));
   CHECK_GLYPH (glyph);
 
-  return make_int (glyph_ascent (glyph, Qnil, DEFAULT_INDEX, window));
+  return make_int (glyph_ascent (glyph, window));
 }
 
 DEFUN ("glyph-descent", Fglyph_descent, 1, 2, 0, /*
@@ -3517,7 +3629,7 @@
   XSETWINDOW (window, decode_window (window));
   CHECK_GLYPH (glyph);
 
-  return make_int (glyph_descent (glyph, Qnil, DEFAULT_INDEX, window));
+  return make_int (glyph_descent (glyph, window));
 }
 
 /* This is redundant but I bet a lot of people expect it to exist. */
@@ -3531,22 +3643,14 @@
   XSETWINDOW (window, decode_window (window));
   CHECK_GLYPH (glyph);
 
-  return make_int (glyph_height (glyph, Qnil, DEFAULT_INDEX, window));
+  return make_int (glyph_height (glyph, window));
 }
 
-#undef RETURN_ASCENT
-#undef RETURN_DESCENT
-#undef RETURN_HEIGHT
-
 static unsigned int
 glyph_dirty_p (Lisp_Object glyph_or_image, Lisp_Object window)
 {
-  Lisp_Object instance = glyph_or_image;
-
-  if (GLYPHP (glyph_or_image))
-    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
-
-  return XIMAGE_INSTANCE_DIRTYP (instance);
+  return XIMAGE_INSTANCE_DIRTYP (glyph_image_instance_maybe 
+				 (glyph_or_image, window));
 }
 
 static void
@@ -3621,6 +3725,33 @@
     (XGLYPH (glyph)->after_change) (glyph, property, locale);
 }
 
+#if 0				/* Not used for now */
+static void
+glyph_query_geometry (Lisp_Object glyph_or_image, Lisp_Object window,
+		      unsigned int* width, unsigned int* height, 
+		      enum image_instance_geometry disp, Lisp_Object domain)
+{
+  Lisp_Object instance = glyph_or_image;
+
+  if (GLYPHP (glyph_or_image))
+    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
+  
+  image_instance_query_geometry (instance, width, height, disp, domain);
+}
+
+static void
+glyph_layout (Lisp_Object glyph_or_image, Lisp_Object window,
+	      unsigned int width, unsigned int height, Lisp_Object domain)
+{
+  Lisp_Object instance = glyph_or_image;
+
+  if (GLYPHP (glyph_or_image))
+    instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1);
+  
+  image_instance_layout (instance, width, height, domain);
+}
+#endif
+
 
 /*****************************************************************************
  *                     glyph cachel functions                         	     *
@@ -3662,9 +3793,9 @@
        and passing it to the size functions. */
       instance = glyph_image_instance (glyph, window, ERROR_ME_NOT, 1);
       cachel->dirty = XGLYPH_DIRTYP (glyph) = glyph_dirty_p (glyph, window);
-      cachel->width   = glyph_width   (instance, Qnil, DEFAULT_INDEX, window);
-      cachel->ascent  = glyph_ascent  (instance, Qnil, DEFAULT_INDEX, window);
-      cachel->descent = glyph_descent (instance, Qnil, DEFAULT_INDEX, window);
+      cachel->width   = glyph_width   (instance, window);
+      cachel->ascent  = glyph_ascent  (instance, window);
+      cachel->descent = glyph_descent (instance, window);
     }
 
   cachel->updated = 1;
@@ -3781,7 +3912,7 @@
 /*****************************************************************************
  *                     subwindow cachel functions                         	     *
  *****************************************************************************/
-/* subwindows are curious in that you have to physically unmap them to
+/* Subwindows are curious in that you have to physically unmap them to
    not display them. It is problematic deciding what to do in
    redisplay. We have two caches - a per-window instance cache that
    keeps track of subwindows on a window, these are linked to their
@@ -4051,8 +4182,15 @@
     return;
 
   MAYBE_DEVMETH (XDEVICE (ii->device), update_subwindow, (ii));
+  /* We must update the window's size as it may have been changed by
+     the the layout routines. We also do this here so that explicit resizing
+     from lisp does not result in synchronous updates. */
+  MAYBE_DEVMETH (XDEVICE (ii->device), resize_subwindow, (ii,
+		 IMAGE_INSTANCE_WIDTH (ii),
+		 IMAGE_INSTANCE_HEIGHT (ii)));
 }
 
+/* Update all the subwindows on a frame. */
 void
 update_frame_subwindows (struct frame *f)
 {
@@ -4094,8 +4232,8 @@
 
   /* make sure we don't get expose events */
   register_ignored_expose (f, cachel->x, cachel->y, cachel->width, cachel->height);
-  cachel->x = -1;
-  cachel->y = -1;
+  cachel->x = ~0;
+  cachel->y = ~0;
   cachel->being_displayed = 0;
   IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (ii) = 0;
 
@@ -4133,6 +4271,15 @@
   cachel->height = dga->height;
   cachel->being_displayed = 1;
 
+  /* This forces any pending display changes to happen to the image
+     before we show it. I'm not sure whether or not we need mark as
+     clean here, but for now we will. */
+  if (IMAGE_INSTANCE_DIRTYP (ii))
+    {
+      update_subwindow (subwindow);
+      IMAGE_INSTANCE_DIRTYP (ii) = 0; 
+    }
+
   MAYBE_DEVMETH (XDEVICE (ii->device), map_subwindow, (ii, x, y, dga));
 }
 
@@ -4165,7 +4312,10 @@
   IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (ii) = 0;
   IMAGE_INSTANCE_SUBWINDOW_FRAME (ii) = frame;
 
-  /* this stuff may get overidden by the widget code */
+  /* #### This stuff may get overidden by the widget code and is
+     actually really dumb now that we have dynamic geometry
+     calculations. What should really happen is that the subwindow
+     should query its child for and appropriate geometry. */
   if (NILP (width))
     IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii) = 20;
   else
@@ -4217,21 +4367,19 @@
   CHECK_SUBWINDOW_IMAGE_INSTANCE (subwindow);
 
   if (NILP (width))
-    neww = XIMAGE_INSTANCE_SUBWINDOW_WIDTH (subwindow);
+    neww = XIMAGE_INSTANCE_WIDTH (subwindow);
   else
     neww = XINT (width);
 
   if (NILP (height))
-    newh = XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (subwindow);
+    newh = XIMAGE_INSTANCE_HEIGHT (subwindow);
   else
     newh = XINT (height);
 
-  
-  MAYBE_DEVMETH (XDEVICE (XIMAGE_INSTANCE_DEVICE (subwindow)), 
-		 resize_subwindow, (XIMAGE_INSTANCE (subwindow), neww, newh));
-
-  XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (subwindow) = newh;
-  XIMAGE_INSTANCE_SUBWINDOW_WIDTH (subwindow) = neww;
+  /* The actual resizing gets done asychronously by
+     update_subwindow. */
+  XIMAGE_INSTANCE_HEIGHT (subwindow) = newh;
+  XIMAGE_INSTANCE_WIDTH (subwindow) = neww;
 
   /* need to update the cachels as redisplay will not do this */
   update_subwindow_cachel (subwindow);
@@ -4370,7 +4518,7 @@
 		 also might not. */
 	      MARK_DEVICE_FRAMES_GLYPHS_CHANGED 
 		(XDEVICE (IMAGE_INSTANCE_DEVICE (ii)));
-	      IMAGE_INSTANCE_DIRTYP (ii) = 1;
+	      MARK_IMAGE_INSTANCE_CHANGED (ii);
 	    }
 	}
     }
@@ -4645,6 +4793,7 @@
   /* Do this so we can set strings. */
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (text, "text");
   IIFORMAT_HAS_METHOD (text, set_property);
+  IIFORMAT_HAS_METHOD (text, query_geometry);
 
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (formatted_string, "formatted-string");
 
@@ -4814,8 +4963,7 @@
   set_specifier_fallback (Vcurrent_display_table,
 			  list1 (Fcons (Qnil, Qnil)));
   set_specifier_caching (Vcurrent_display_table,
-			 slot_offset (struct window,
-				      display_table),
+			 offsetof (struct window, display_table),
 			 some_window_value_changed,
 			 0, 0);
 }
--- a/src/glyphs.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/glyphs.h	Mon Aug 13 11:32:25 2007 +0200
@@ -84,6 +84,18 @@
 
 extern const struct struct_description iim_description;
 
+enum image_instance_geometry
+{
+  IMAGE_GEOMETRY,
+  IMAGE_DESIRED_GEOMETRY,
+  IMAGE_MIN_GEOMETRY,
+  IMAGE_MAX_GEOMETRY, 
+  IMAGE_UNSPECIFIED_GEOMETRY = ~0
+};
+
+#define WIDGET_BORDER_HEIGHT 4
+#define WIDGET_BORDER_WIDTH 4
+
 struct image_instantiator_methods
 {
   Lisp_Object symbol;
@@ -132,12 +144,19 @@
 				      Lisp_Object property,
 				      Lisp_Object val);
 
-  /* Find out the geometry of this image instance. */
+  /* Find out the desired geometry, as given by disp, of this image
+   instance. Actual geometry is stored in the appropriate slots in the
+   image instance. */
   void (*query_geometry_method) (Lisp_Object image_instance,
-				 int* width, int* height, int disp);
-
-  /* Layout the instances children. */
-  void (*layout_children_method) (Lisp_Object image_instance);
+				 unsigned int* width, unsigned int* height,
+				 enum image_instance_geometry disp, 
+				 Lisp_Object domain);
+  
+  /* Layout the instance and its children bounded by the provided
+     dimensions. */
+  void (*layout_method) (Lisp_Object image_instance,
+				  unsigned int width, unsigned int height,
+				  Lisp_Object domain);
 };
 
 /***** Calling an image-instantiator method *****/
@@ -306,10 +325,16 @@
 void subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 			    Lisp_Object pointer_fg, Lisp_Object pointer_bg,
 			    int dest_mask, Lisp_Object domain);
-void widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator,
-			   Lisp_Object pointer_fg, Lisp_Object pointer_bg,
-			   int dest_mask, Lisp_Object domain, int default_textheight,
-			   int default_pixheight, int default_textwidth);
+void widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
+			 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
+			 int dest_mask, Lisp_Object domain);
+void image_instance_query_geometry (Lisp_Object image_instance, 
+				    unsigned int* width, unsigned int* height, 
+				    enum image_instance_geometry disp,
+				    Lisp_Object domain);
+void image_instance_layout (Lisp_Object image_instance, 
+			    unsigned int width, unsigned int height, 
+			    Lisp_Object domain);
 
 DECLARE_DOESNT_RETURN (incompatible_image_types (Lisp_Object instantiator,
                                                  int given_dest_mask,
@@ -372,14 +397,6 @@
   IMAGE_LAYOUT
 };
 
-enum image_instance_geometry
-{
-  IMAGE_GEOMETRY,
-  IMAGE_DESIRED_GEOMETRY,
-  IMAGE_MIN_GEOMETRY,
-  IMAGE_MAX_GEOMETRY
-};
-
 #define IMAGE_NOTHING_MASK (1 << 0)
 #define IMAGE_TEXT_MASK (1 << 1)
 #define IMAGE_MONO_PIXMAP_MASK (1 << 2)
@@ -463,6 +480,9 @@
   struct lcrecord_header header;
   Lisp_Object device;
   Lisp_Object name;
+  /* The glyph from which we were instantiated. This is a weak
+     reference. */
+  Lisp_Object glyph;
   enum image_instance_type type;
   unsigned int x_offset, y_offset;	/* for layout purposes */
   unsigned int width, height;
@@ -493,11 +513,19 @@
       Lisp_Object frame;
       void* subwindow;		/* specific devices can use this as necessary */
       unsigned int being_displayed : 1;	/* used to detect when needs to be unmapped */
+      unsigned int v_resize : 1;	/* Whether the vsize is allowed to change. */
+      unsigned int h_resize : 1;	/* Whether the hsize is allowed to change. */
+      unsigned int orientation : 1; /* Vertical or horizontal. */
+      unsigned int justification : 2; /* Left, right or center. */
       union
       {
 	struct
 	{
-	  Lisp_Object face; /* foreground and background colors */
+	  /* Face for colors and font. We specify this here becuase we
+	     want people to be able to put :face in the instantiator
+	     spec. Using gyph-face is more inconvenient, although more
+	     general. */
+	  Lisp_Object face;	
 	  Lisp_Object type;
 	  Lisp_Object props;	/* properties */
 	  Lisp_Object gui_item;	/* a list of gui_items */
@@ -515,8 +543,18 @@
   void *data;
 };
 
+/* Layout bit-fields. */
+#define LAYOUT_HORIZONTAL	0
+#define LAYOUT_VERTICAL	1
+
+#define LAYOUT_JUSTIFY_LEFT 0
+#define LAYOUT_JUSTIFY_RIGHT 1
+#define LAYOUT_JUSTIFY_CENTER 2
+
+/* Accessor macros. */
 #define IMAGE_INSTANCE_DEVICE(i) ((i)->device)
 #define IMAGE_INSTANCE_NAME(i) ((i)->name)
+#define IMAGE_INSTANCE_GLYPH(i) ((i)->glyph)
 #define IMAGE_INSTANCE_TYPE(i) ((i)->type)
 #define IMAGE_INSTANCE_XOFFSET(i) ((i)->x_offset)
 #define IMAGE_INSTANCE_YOFFSET(i) ((i)->y_offset)
@@ -526,6 +564,8 @@
  ((IMAGE_INSTANCE_TYPE (i) == IMAGE_MONO_PIXMAP)			\
   || (IMAGE_INSTANCE_TYPE (i) == IMAGE_COLOR_PIXMAP))
 #define IMAGE_INSTANCE_DIRTYP(i) ((i)->dirty)
+#define IMAGE_INSTANCE_FACE(i) \
+  XGLYPH_FACE (IMAGE_INSTANCE_GLYPH (i))
 
 #define IMAGE_INSTANCE_TEXT_STRING(i) ((i)->u.text.string)
 #define IMAGE_INSTANCE_TEXT_WIDTH(i) \
@@ -533,6 +573,8 @@
 #define IMAGE_INSTANCE_TEXT_HEIGHT(i) \
   IMAGE_INSTANCE_HEIGHT(i)
 #define IMAGE_INSTANCE_TEXT_DESCENT(i) ((i)->u.text.descent)
+#define IMAGE_INSTANCE_TEXT_ASCENT(i) \
+  (IMAGE_INSTANCE_TEXT_HEIGHT(i) - IMAGE_INSTANCE_TEXT_DESCENT(i))
 
 #define IMAGE_INSTANCE_PIXMAP_WIDTH(i) \
   IMAGE_INSTANCE_WIDTH(i)
@@ -559,6 +601,14 @@
 #define IMAGE_INSTANCE_SUBWINDOW_FRAME(i) ((i)->u.subwindow.frame)
 #define IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP(i) \
 ((i)->u.subwindow.being_displayed)
+#define IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP(i) \
+((i)->u.subwindow.v_resize)
+#define IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP(i) \
+((i)->u.subwindow.h_resize)
+#define IMAGE_INSTANCE_SUBWINDOW_ORIENT(i) \
+((i)->u.subwindow.orientation)
+#define IMAGE_INSTANCE_SUBWINDOW_JUSTIFY(i) \
+((i)->u.subwindow.justification)
 
 #define IMAGE_INSTANCE_WIDGET_WIDTH(i) \
   IMAGE_INSTANCE_WIDTH(i)
@@ -566,7 +616,12 @@
   IMAGE_INSTANCE_HEIGHT(i)
 #define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.s.widget.type)
 #define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.s.widget.props)
-#define IMAGE_INSTANCE_WIDGET_FACE(i) ((i)->u.subwindow.s.widget.face)
+#define SET_IMAGE_INSTANCE_WIDGET_FACE(i,f) \
+ ((i)->u.subwindow.s.widget.face = f)
+#define IMAGE_INSTANCE_WIDGET_FACE(i) \
+  (!NILP ((i)->u.subwindow.s.widget.face) ? (i)->u.subwindow.s.widget.face : \
+  !NILP (IMAGE_INSTANCE_FACE (i)) ? IMAGE_INSTANCE_FACE (i) : \
+  Vwidget_face)
 #define IMAGE_INSTANCE_WIDGET_ITEMS(i) ((i)->u.subwindow.s.widget.gui_item)
 #define IMAGE_INSTANCE_WIDGET_ITEM(i) \
 (CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (i)) ? \
@@ -581,6 +636,8 @@
   IMAGE_INSTANCE_DEVICE (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_NAME(i) \
   IMAGE_INSTANCE_NAME (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_GLYPH(i) \
+  IMAGE_INSTANCE_GLYPH (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_TYPE(i) \
   IMAGE_INSTANCE_TYPE (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_XOFFSET(i) \
@@ -589,9 +646,23 @@
   IMAGE_INSTANCE_YOFFSET (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_DIRTYP(i) \
   IMAGE_INSTANCE_DIRTYP (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_WIDTH(i) \
+  IMAGE_INSTANCE_WIDTH (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_HEIGHT(i) \
+  IMAGE_INSTANCE_HEIGHT (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_FACE(i) \
+  IMAGE_INSTANCE_FACE (XIMAGE_INSTANCE (i))
 
 #define XIMAGE_INSTANCE_TEXT_STRING(i) \
   IMAGE_INSTANCE_TEXT_STRING (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_TEXT_WIDTH(i) \
+  IMAGE_INSTANCE_TEXT_WIDTH (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_TEXT_HEIGHT(i) \
+  IMAGE_INSTANCE_TEXT_HEIGHT (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_TEXT_ASCENT(i) \
+  IMAGE_INSTANCE_TEXT_ASCENT (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_TEXT_DESCENT(i) \
+  IMAGE_INSTANCE_TEXT_DESCENT (XIMAGE_INSTANCE (i))
 
 #define XIMAGE_INSTANCE_PIXMAP_WIDTH(i) \
   IMAGE_INSTANCE_PIXMAP_WIDTH (XIMAGE_INSTANCE (i))
@@ -630,6 +701,8 @@
   IMAGE_INSTANCE_WIDGET_PROPS (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_FACE(i) \
   IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i))
+#define XSET_IMAGE_INSTANCE_WIDGET_FACE(i) \
+  SET_IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_ITEM(i) \
   IMAGE_INSTANCE_WIDGET_ITEM (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_ITEMS(i) \
@@ -652,6 +725,10 @@
   IMAGE_INSTANCE_SUBWINDOW_FRAME (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP(i) \
   IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_SUBWINDOW_ORIENT(i) \
+  IMAGE_INSTANCE_SUBWINDOW_ORIENT (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_SUBWINDOW_JUSTIFY(i) \
+  IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (XIMAGE_INSTANCE (i))
 
 #define MARK_IMAGE_INSTANCE_CHANGED(i) \
   (IMAGE_INSTANCE_DIRTYP (i) = 1);
@@ -758,19 +835,10 @@
 extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph;
 extern Lisp_Object Vxemacs_logo;
 
-unsigned short glyph_width (Lisp_Object glyph, Lisp_Object frame_face,
-			    face_index window_findex,
-			    Lisp_Object window);
-unsigned short glyph_ascent (Lisp_Object glyph,  Lisp_Object frame_face,
-			     face_index window_findex,
-			     Lisp_Object window);
-unsigned short glyph_descent (Lisp_Object glyph,
-			      Lisp_Object frame_face,
-			      face_index window_findex,
-			      Lisp_Object window);
-unsigned short glyph_height (Lisp_Object glyph,  Lisp_Object frame_face,
-			     face_index window_findex,
-			     Lisp_Object window);
+unsigned short glyph_width (Lisp_Object glyph, Lisp_Object domain);
+unsigned short glyph_ascent (Lisp_Object glyph, Lisp_Object domain);
+unsigned short glyph_descent (Lisp_Object glyph, Lisp_Object domain);
+unsigned short glyph_height (Lisp_Object glyph, Lisp_Object domain);
 Lisp_Object glyph_baseline (Lisp_Object glyph, Lisp_Object domain);
 Lisp_Object glyph_face (Lisp_Object glyph, Lisp_Object domain);
 int glyph_contrib_p (Lisp_Object glyph, Lisp_Object domain);
@@ -789,11 +857,11 @@
 			    void (*after_change) (Lisp_Object glyph,
 						  Lisp_Object property,
 						  Lisp_Object locale));
-Lisp_Object widget_face_font_info (Lisp_Object domain, Lisp_Object face,
-				   int *height, int *width);
-void widget_text_to_pixel_conversion (Lisp_Object domain, Lisp_Object face,
-				      int th, int tw,
-				      int* height, int* width);
+void query_string_geometry ( Lisp_Object string, Lisp_Object face,
+			     unsigned int* width, unsigned int* height, 
+			     unsigned int* descent, Lisp_Object domain);
+Lisp_Object query_string_font (Lisp_Object string, 
+			       Lisp_Object face, Lisp_Object domain);
 Lisp_Object add_glyph_animated_timeout (EMACS_INT tickms, Lisp_Object device);
 void disable_glyph_animated_timeout (int i);
 
@@ -868,8 +936,8 @@
 struct subwindow_cachel
 {
   Lisp_Object subwindow;
-  int x, y;
-  int width, height;
+  unsigned int x, y;
+  unsigned int width, height;
   unsigned int being_displayed : 1;
   unsigned int updated : 1;
 };
@@ -890,10 +958,8 @@
 
 struct expose_ignore
 {
-  int	x;
-  int	y;
-  int	width;
-  int	height;
+  unsigned int	x, y;
+  unsigned int	width, height;
   struct expose_ignore *next;
 };
 
--- a/src/gpmevent.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/gpmevent.c	Mon Aug 13 11:32:25 2007 +0200
@@ -452,7 +452,7 @@
 		return;
 	}
 
-	return (orig_next_event_cb (event));
+	orig_next_event_cb (event);
 }
 
 static void hook_event_callbacks_once (void)
--- a/src/gui.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/gui.c	Mon Aug 13 11:32:25 2007 +0200
@@ -76,7 +76,7 @@
   if (SYMBOLP (data)
       || (COMPILED_FUNCTIONP (data)
 	  && XCOMPILED_FUNCTION (data)->flags.interactivep)
-      || (EQ (XCAR (data), Qlambda)
+      || (CONSP (data) && (EQ (XCAR (data), Qlambda))
 	  && !NILP (Fassq (Qinteractive, Fcdr (Fcdr (data))))))
     {
       *fn = Qcall_interactively;
--- a/src/gutter.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/gutter.c	Mon Aug 13 11:32:25 2007 +0200
@@ -805,8 +805,7 @@
      automatically knew about specifier fallbacks, so we didn't
      have to do it ourselves. */
   set_specifier_caching (Vdefault_gutter,
-			 slot_offset (struct window,
-				      default_gutter),
+			 offsetof (struct window, default_gutter),
 			 default_gutter_specs_changed,
 			 0, 0);
 
@@ -818,8 +817,7 @@
 */ );
   Vgutter[TOP_GUTTER] = Fmake_specifier (Qgutter);
   set_specifier_caching (Vgutter[TOP_GUTTER],
-			 slot_offset (struct window,
-				      gutter[TOP_GUTTER]),
+			 offsetof (struct window, gutter[TOP_GUTTER]),
 			 gutter_specs_changed,
 			 0, 0);
 
@@ -836,8 +834,7 @@
 */ );
   Vgutter[BOTTOM_GUTTER] = Fmake_specifier (Qgutter);
   set_specifier_caching (Vgutter[BOTTOM_GUTTER],
-			 slot_offset (struct window,
-				      gutter[BOTTOM_GUTTER]),
+			 offsetof (struct window, gutter[BOTTOM_GUTTER]),
 			 gutter_specs_changed,
 			 0, 0);
 
@@ -854,8 +851,7 @@
 */ );
   Vgutter[LEFT_GUTTER] = Fmake_specifier (Qgutter);
   set_specifier_caching (Vgutter[LEFT_GUTTER],
-			 slot_offset (struct window,
-				      gutter[LEFT_GUTTER]),
+			 offsetof (struct window, gutter[LEFT_GUTTER]),
 			 gutter_specs_changed,
 			 0, 0);
 
@@ -872,8 +868,7 @@
 */ );
   Vgutter[RIGHT_GUTTER] = Fmake_specifier (Qgutter);
   set_specifier_caching (Vgutter[RIGHT_GUTTER],
-			 slot_offset (struct window,
-				      gutter[RIGHT_GUTTER]),
+			 offsetof (struct window, gutter[RIGHT_GUTTER]),
 			 gutter_specs_changed,
 			 0, 0);
 
@@ -913,8 +908,7 @@
 */ );
   Vdefault_gutter_height = Fmake_specifier (Qgutter_size);
   set_specifier_caching (Vdefault_gutter_height,
-			 slot_offset (struct window,
-				      default_gutter_height),
+			 offsetof (struct window, default_gutter_height),
 			 default_gutter_size_changed_in_window,
 			 0, 0);
 
@@ -926,8 +920,7 @@
 */ );
   Vdefault_gutter_width = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vdefault_gutter_width,
-			 slot_offset (struct window,
-				      default_gutter_width),
+			 offsetof (struct window, default_gutter_width),
 			 default_gutter_size_changed_in_window,
 			 0, 0);
 
@@ -940,8 +933,7 @@
 */ );
   Vgutter_size[TOP_GUTTER] = Fmake_specifier (Qgutter_size);
   set_specifier_caching (Vgutter_size[TOP_GUTTER],
-			 slot_offset (struct window,
-				      gutter_size[TOP_GUTTER]),
+			 offsetof (struct window, gutter_size[TOP_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -954,8 +946,7 @@
 */ );
   Vgutter_size[BOTTOM_GUTTER] = Fmake_specifier (Qgutter_size);
   set_specifier_caching (Vgutter_size[BOTTOM_GUTTER],
-			 slot_offset (struct window,
-				      gutter_size[BOTTOM_GUTTER]),
+			 offsetof (struct window, gutter_size[BOTTOM_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -968,8 +959,7 @@
 */ );
   Vgutter_size[LEFT_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_size[LEFT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_size[LEFT_GUTTER]),
+			 offsetof (struct window, gutter_size[LEFT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -982,8 +972,7 @@
 */ );
   Vgutter_size[RIGHT_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_size[RIGHT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_size[RIGHT_GUTTER]),
+			 offsetof (struct window, gutter_size[RIGHT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1036,8 +1025,7 @@
 */ );
   Vdefault_gutter_border_width = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vdefault_gutter_border_width,
-			 slot_offset (struct window,
-				      default_gutter_border_width),
+			 offsetof (struct window, default_gutter_border_width),
 			 default_gutter_border_width_changed_in_window,
 			 0, 0);
 
@@ -1050,8 +1038,8 @@
 */ );
   Vgutter_border_width[TOP_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_border_width[TOP_GUTTER],
-			 slot_offset (struct window,
-				      gutter_border_width[TOP_GUTTER]),
+			 offsetof (struct window,
+				   gutter_border_width[TOP_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1064,8 +1052,8 @@
 */ );
   Vgutter_border_width[BOTTOM_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_border_width[BOTTOM_GUTTER],
-			 slot_offset (struct window,
-				      gutter_border_width[BOTTOM_GUTTER]),
+			 offsetof (struct window,
+				   gutter_border_width[BOTTOM_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1078,8 +1066,8 @@
 */ );
   Vgutter_border_width[LEFT_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_border_width[LEFT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_border_width[LEFT_GUTTER]),
+			 offsetof (struct window,
+				   gutter_border_width[LEFT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1092,8 +1080,8 @@
 */ );
   Vgutter_border_width[RIGHT_GUTTER] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vgutter_border_width[RIGHT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_border_width[RIGHT_GUTTER]),
+			 offsetof (struct window,
+				   gutter_border_width[RIGHT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1133,8 +1121,8 @@
 */ );
   Vdefault_gutter_visible_p = Fmake_specifier (Qboolean);
   set_specifier_caching (Vdefault_gutter_visible_p,
-			 slot_offset (struct window,
-				      default_gutter_visible_p),
+			 offsetof (struct window,
+				   default_gutter_visible_p),
 			 default_gutter_visible_p_changed_in_window,
 			 0, 0);
 
@@ -1147,8 +1135,8 @@
 */ );
   Vgutter_visible_p[TOP_GUTTER] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vgutter_visible_p[TOP_GUTTER],
-			 slot_offset (struct window,
-				      gutter_visible_p[TOP_GUTTER]),
+			 offsetof (struct window,
+				   gutter_visible_p[TOP_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1161,8 +1149,8 @@
 */ );
   Vgutter_visible_p[BOTTOM_GUTTER] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vgutter_visible_p[BOTTOM_GUTTER],
-			 slot_offset (struct window,
-				      gutter_visible_p[BOTTOM_GUTTER]),
+			 offsetof (struct window,
+				   gutter_visible_p[BOTTOM_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1175,8 +1163,8 @@
 */ );
   Vgutter_visible_p[LEFT_GUTTER] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vgutter_visible_p[LEFT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_visible_p[LEFT_GUTTER]),
+			 offsetof (struct window,
+				   gutter_visible_p[LEFT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
@@ -1189,8 +1177,8 @@
 */ );
   Vgutter_visible_p[RIGHT_GUTTER] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vgutter_visible_p[RIGHT_GUTTER],
-			 slot_offset (struct window,
-				      gutter_visible_p[RIGHT_GUTTER]),
+			 offsetof (struct window,
+				   gutter_visible_p[RIGHT_GUTTER]),
 			 gutter_geometry_changed_in_window,
 			 0, 0);
 
--- a/src/input-method-motif.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/input-method-motif.c	Mon Aug 13 11:32:25 2007 +0200
@@ -115,9 +115,10 @@
      default face, rather than foreground and background resources, or
      that the user can use set-frame-parameters to set xic attributes */
 
-#define res(name, class, representation, field, default_value) \
-  { name, class, representation, sizeof(xim_resources.field), \
-     XtOffsetOf(xim_resources_t, field), XtRString, default_value }
+#define res(name, class, representation, field, default_value)	\
+  { name, class, representation, sizeof(xim_resources.field),	\
+    XtOffsetOf(xim_resources_t, field),				\
+    XtRString, (XtPointer) (default_value) }
 
   static XtResource resources[] =
   {
--- a/src/insdel.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/insdel.c	Mon Aug 13 11:32:25 2007 +0200
@@ -2057,7 +2057,12 @@
    of the specified region, that will also be handled correctly.
 
    begin_multiple_change() returns a number (actually a specpdl depth)
-   that you must pass to end_multiple_change() when you are done. */
+   that you must pass to end_multiple_change() when you are done.
+
+   FSF Emacs 20 implements a similar feature, accessible from Lisp
+   through a `combine-after-change-calls' special form, which is
+   essentially equivalent to this function.  We should consider
+   whether we want to introduce a similar Lisp form.  */
 
 int
 begin_multiple_change (struct buffer *buf, Bufpos start, Bufpos end)
@@ -2105,7 +2110,8 @@
   /* We should first reset the variable and then change the buffer,
      because Fset_buffer() can throw.  */
   inside_change_hook = 0;
-  Fset_buffer (buffer);
+  if (XBUFFER (buffer) != current_buffer)
+    Fset_buffer (buffer);
   return Qnil;
 }
 
@@ -2155,6 +2161,7 @@
   if (!inside_change_hook)
     {
       Lisp_Object buffer;
+      int speccount;
 
       /* Are we in a multiple-change session? */
       if (buf->text->changes->in_multiple_change &&
@@ -2192,6 +2199,9 @@
 	}
 
       /* Now in any case run the before-change-functions if any.  */
+      speccount = specpdl_depth ();
+      record_unwind_protect (change_function_restore, Fcurrent_buffer ());
+      inside_change_hook = 1;
 
       MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons)
 	{
@@ -2200,25 +2210,28 @@
 	      /* Obsolete, for compatibility */
 	      || !NILP (symbol_value_in_buffer (Qbefore_change_function, buffer)))
 	    {
-	      int speccount = specpdl_depth ();
-	      record_unwind_protect (change_function_restore, Fcurrent_buffer ());
 	      set_buffer_internal (buf);
-	      inside_change_hook = 1;
 	      va_run_hook_with_args (Qbefore_change_functions, 2,
 				     make_int (start), make_int (end));
 	      /* Obsolete, for compatibility */
 	      va_run_hook_with_args (Qbefore_change_function, 2,
 				     make_int (start), make_int (end));
-	      unbind_to (speccount, Qnil);
 	    }
 	}
 
+      /* Make sure endpoints remain valid.  before-change-functions
+	 might have modified the buffer. */
+      if (start < BUF_BEGV (buf)) start = BUF_BEGV (buf);
+      if (start > BUF_ZV (buf))   start = BUF_ZV (buf);
+      if (end < BUF_BEGV (buf)) end = BUF_BEGV (buf);
+      if (end > BUF_ZV (buf))   end = BUF_ZV (buf);
+
       MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons)
 	{
 	  XSETBUFFER (buffer, mbuf);
-	  report_extent_modification (buffer, start, end,
-				      &inside_change_hook, 0);
+	  report_extent_modification (buffer, start, end, 0);
 	}
+      unbind_to (speccount, Qnil);
 
       /* Only now do we indicate that the before-change-functions have
 	 been called, in case some function throws out. */
@@ -2255,6 +2268,7 @@
   if (!inside_change_hook)
     {
       Lisp_Object buffer;
+      int speccount;
 
       if (buf->text->changes->in_multiple_change &&
 	  buf->text->changes->mc_begin != 0)
@@ -2267,6 +2281,9 @@
 	  return; /* after-change-functions signalled when all changes done */
 	}
 
+      speccount = specpdl_depth ();
+      record_unwind_protect (change_function_restore, Fcurrent_buffer ());
+      inside_change_hook = 1;
       MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons)
 	{
 	  XSETBUFFER (buffer, mbuf);
@@ -2275,10 +2292,7 @@
 	      /* Obsolete, for compatibility */
 	      || !NILP (symbol_value_in_buffer (Qafter_change_function, buffer)))
 	    {
-	      int speccount = specpdl_depth ();
-	      record_unwind_protect (change_function_restore, Fcurrent_buffer ());
 	      set_buffer_internal (buf);
-	      inside_change_hook = 1;
 	      /* The actual after-change functions take slightly
 		 different arguments than what we were passed. */
 	      va_run_hook_with_args (Qafter_change_functions, 3,
@@ -2288,16 +2302,24 @@
 	      va_run_hook_with_args (Qafter_change_function, 3,
 				     make_int (start), make_int (new_end),
 				     make_int (orig_end - start));
-	      unbind_to (speccount, Qnil);
 	    }
 	}
 
+      /* Make sure endpoints remain valid.  after-change-functions
+	 might have modified the buffer. */
+      if (start < BUF_BEGV (buf)) start = BUF_BEGV (buf);
+      if (start > BUF_ZV (buf))   start = BUF_ZV (buf);
+      if (new_end < BUF_BEGV (buf)) new_end = BUF_BEGV (buf);
+      if (new_end > BUF_ZV (buf))   new_end = BUF_ZV (buf);
+      if (orig_end < BUF_BEGV (buf)) orig_end = BUF_BEGV (buf);
+      if (orig_end > BUF_ZV (buf))   orig_end = BUF_ZV (buf);
+
       MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons)
 	{
 	  XSETBUFFER (buffer, mbuf);
-	  report_extent_modification (buffer, start, new_end,
-				      &inside_change_hook, 1);
+	  report_extent_modification (buffer, start, new_end, 1);
 	}
+      unbind_to (speccount, Qnil); /* sets inside_change_hook back to 0 */
     }
 }
 
--- a/src/keymap.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 11:32:25 2007 +0200
@@ -2116,7 +2116,7 @@
   if (nkeys == 0)
     return Qnil;
 
-  if (nkeys < (countof (kkk)))
+  if (nkeys < countof (kkk))
     raw_keys = kkk;
   else
     raw_keys = alloca_array (struct key_data, nkeys);
@@ -2146,7 +2146,7 @@
 
   nkeys = event_chain_count (event_head);
 
-  if (nkeys < (countof (kkk)))
+  if (nkeys < countof (kkk))
     raw_keys = kkk;
   else
     raw_keys = alloca_array (struct key_data, nkeys);
@@ -2372,8 +2372,7 @@
 		  get_relevant_extent_keymaps
 		    (Fevent_modeline_position (terminal),
 		     XBUFFER (buffer)->generated_modeline_string,
-		     /* #### third arg should maybe be a glyph. */
-		     Qnil, &closure);
+		     Fevent_glyph_extent (terminal), &closure);
 
 		  if (!UNBOUNDP (map) && !NILP (map))
 		    relevant_map_push (get_keymap (map, 1, 1), &closure);
--- a/src/libsst.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/libsst.c	Mon Aug 13 11:32:25 2007 +0200
@@ -20,29 +20,25 @@
 #include "lisp.h"
 #endif
 
-#ifdef STDC_HEADERS
 #include <stdlib.h>
-#endif
+#include <stdio.h>
+#include <fcntl.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
-#include <stdio.h>
-#include <fcntl.h>
 #include "libsst.h"
 
 #define AUDBUF 1024
 
-extern void usleep();
-
 int
 sst_open(play_level, record_level)
     int play_level, record_level;
     {
     int fd, i, gr, ger, gx;
     struct audio_ioctl ai;
-    char *getenv(), *ep;
+    char *ep;
 
     fd = open( "/dev/audio", O_RDWR );
     if ( fd < 0 )
--- a/src/lisp.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/lisp.h	Mon Aug 13 11:32:25 2007 +0200
@@ -116,13 +116,11 @@
 void *xrealloc (void *, size_t size);
 char *xstrdup (CONST char *);
 /* generally useful */
-#define countof(x) ((int) (sizeof(x)/sizeof(x[0])))
-#define slot_offset(type, slot_name) \
-  ((unsigned) (((char *) (&(((type *)0)->slot_name))) - ((char *)0)))
+#define countof(x) ((int) (sizeof(x)/sizeof((x)[0])))
 #define xnew(type) ((type *) xmalloc (sizeof (type)))
 #define xnew_array(type, len) ((type *) xmalloc ((len) * sizeof (type)))
 #define xnew_and_zero(type) ((type *) xmalloc_and_zero (sizeof (type)))
-#define xzero(lvalue) ((void) memset (&(lvalue), 0, sizeof (lvalue)))
+#define xzero(lvalue) ((void) memset (&(lvalue), '\0', sizeof (lvalue)))
 #define xnew_array_and_zero(type, len) ((type *) xmalloc_and_zero ((len) * sizeof (type)))
 #define XREALLOC_ARRAY(ptr, type, len) ((void) (ptr = (type *) xrealloc (ptr, (len) * sizeof (type))))
 #define alloca_array(type, len) ((type *) alloca ((len) * sizeof (type)))
@@ -156,7 +154,6 @@
 } while (0)
 #else
 void xfree (void *);
-#define xfree_1 xfree
 #endif /* ERROR_CHECK_MALLOC */
 
 #ifndef PRINTF_ARGS
@@ -195,7 +192,7 @@
 
 #ifndef ALIGNOF
 # if defined (__GNUC__) && (__GNUC__ >= 2)
-#  define ALIGNOF(x) __alignof (x)
+#  define ALIGNOF(x) __alignof__ (x)
 # else
 #  define ALIGNOF(x) sizeof (x)
 # endif
--- a/src/md5.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/md5.c	Mon Aug 13 11:32:25 2007 +0200
@@ -482,7 +482,7 @@
 	{
 	  /* Attempt to autodetect the coding of the string.  This is
              VERY hit-and-miss.  */
-	  enum eol_type eol = EOL_AUTODETECT;
+	  eol_type_t eol = EOL_AUTODETECT;
 	  coding_system = Fget_coding_system (Qundecided);
 	  determine_real_coding_system (XLSTREAM (istream),
 					&coding_system, &eol);
--- a/src/menubar-x.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/menubar-x.c	Mon Aug 13 11:32:25 2007 +0200
@@ -94,14 +94,11 @@
      prohibits GC. */
   /* !!#### This function has not been Mule-ized */
   int menubar_root_p = (menu_type == MENUBAR_TYPE && depth == 0);
-  widget_value *wv;
-  Lisp_Object wv_closure;
   int count = specpdl_depth ();
   int partition_seen = 0;
+  widget_value *wv = xmalloc_widget_value ();
+  Lisp_Object wv_closure = make_opaque_ptr (wv);
 
-  wv = xmalloc_widget_value ();
-
-  wv_closure = make_opaque_ptr (wv);
   record_unwind_protect (widget_value_unwind, wv_closure);
 
   if (STRINGP (desc))
@@ -363,7 +360,7 @@
 static Lisp_Object
 restore_in_menu_callback (Lisp_Object val)
 {
-    in_menu_callback = XINT(val);
+    in_menu_callback = XINT (val);
     return Qnil;
 }
 #endif /* LWLIB_MENUBARS_LUCID || LWLIB_MENUBARS_MOTIF */
@@ -514,24 +511,21 @@
 static widget_value *
 compute_menubar_data (struct frame *f, Lisp_Object menubar, int deep_p)
 {
-  widget_value *data;
-
   if (NILP (menubar))
-    data = 0;
+    return 0;
   else
     {
-      Lisp_Object old_buffer;
+      widget_value *data;
       int count = specpdl_depth ();
 
-      old_buffer = Fcurrent_buffer ();
-      record_unwind_protect (Fset_buffer, old_buffer);
-      Fset_buffer ( XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer);
+      record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
+      Fset_buffer (XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer);
       data = menu_item_descriptor_to_widget_value (menubar, MENUBAR_TYPE,
 						   deep_p, 0);
-      Fset_buffer (old_buffer);
       unbind_to (count, Qnil);
+
+      return data;
     }
-  return data;
 }
 
 static int
@@ -541,7 +535,7 @@
   Lisp_Object menubar;
   int menubar_visible;
   long id;
-  /* As for the toolbar, the minibuffer does not have its own menubar. */
+  /* As with the toolbar, the minibuffer does not have its own menubar. */
   struct window *w = XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f));
 
   if (! FRAME_X_P (f))
@@ -693,7 +687,7 @@
 	XtSetArg (al [1], XtNy, &shelly);
 	XtGetValues (shell, al, 2);
       }
-#endif      
+#endif
       XtSetArg (al [0], XtNx, &framex);
       XtSetArg (al [1], XtNy, &framey);
       XtGetValues (daddy, al, 2);
--- a/src/menubar.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/menubar.c	Mon Aug 13 11:32:25 2007 +0200
@@ -588,11 +588,9 @@
 
   set_specifier_fallback (Vmenubar_visible_p, list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vmenubar_visible_p,
-			 slot_offset (struct window,
-				      menubar_visible_p),
+			 offsetof (struct window, menubar_visible_p),
 			 menubar_visible_p_changed,
-			 slot_offset (struct frame,
-				      menubar_visible_p),
+			 offsetof (struct frame, menubar_visible_p),
 			 menubar_visible_p_changed_in_frame);
 }
 
--- a/src/mule-ccl.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/mule-ccl.c	Mon Aug 13 11:32:25 2007 +0200
@@ -645,20 +645,20 @@
 
 /* Suspend CCL program because of reading from empty input buffer or
    writing to full output buffer.  When this program is resumed, the
-   same I/O command is executed.  */
+   same I/O command is executed.  The `if (1)' is for warning suppression. */
 #define CCL_SUSPEND(stat)	\
   do {				\
     ic--;			\
     ccl->status = stat;		\
-    goto ccl_finish;		\
+    if (1) goto ccl_finish;	\
   } while (0)
 
 /* Terminate CCL program because of invalid command.  Should not occur
-   in the normal case.  */
+   in the normal case.  The `if (1)' is for warning suppression. */
 #define CCL_INVALID_CMD		     	\
   do {				     	\
     ccl->status = CCL_STAT_INVALID_CMD;	\
-    goto ccl_error_handler;	     	\
+    if (1) goto ccl_error_handler;	\
   } while (0)
 
 /* Encode one character CH to multibyte form and write to the current
--- a/src/mule-charset.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/mule-charset.c	Mon Aug 13 11:32:25 2007 +0200
@@ -92,9 +92,9 @@
    rep_bytes_by_first_byte(c) is more efficient than the equivalent
    canonical computation:
 
-   (BYTE_ASCII_P (c) ? 1 : XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (c))) */
+   XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (c)) */
 
-Bytecount rep_bytes_by_first_byte[0xA0] =
+const Bytecount rep_bytes_by_first_byte[0xA0] =
 { /* 0x00 - 0x7f are for straight ASCII */
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -506,9 +506,6 @@
 
   assert (NILP (chlook->charset_by_leading_byte[id - 128]));
   chlook->charset_by_leading_byte[id - 128] = obj;
-  if (id < 0xA0)
-    /* official leading byte */
-    rep_bytes_by_first_byte[id] = rep_bytes;
 
   /* Some charsets are "faux" and don't have names or really exist at
      all except in the leading-byte table. */
@@ -1122,6 +1119,27 @@
 			(CHAR_LEADING_BYTE (XCHAR (ch))));
 }
 
+DEFUN ("char-octet", Fchar_octet, 1, 2, 0, /*
+Return the octet numbered N (should be 0 or 1) of char CH.
+N defaults to 0 if omitted.
+*/
+       (ch, n))
+{
+  Lisp_Object charset;
+  int octet0, octet1;
+
+  CHECK_CHAR_COERCE_INT (ch);
+
+  BREAKUP_CHAR (XCHAR (ch), charset, octet0, octet1);
+
+  if (NILP (n) || EQ (n, Qzero))
+    return make_int (octet0);
+  else if (EQ (n, make_int (1)))
+    return make_int (octet1);
+  else
+    signal_simple_error ("Octet number must be 0 or 1", n);
+}
+
 DEFUN ("split-char", Fsplit_char, 1, 1, 0, /*
 Return list of charset and one or two position-codes of CHAR.
 */
@@ -1253,6 +1271,7 @@
 
   DEFSUBR (Fmake_char);
   DEFSUBR (Fchar_charset);
+  DEFSUBR (Fchar_octet);
   DEFSUBR (Fsplit_char);
 
 #ifdef ENABLE_COMPOSITE_CHARS
--- a/src/mule-charset.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/mule-charset.h	Mon Aug 13 11:32:25 2007 +0200
@@ -239,7 +239,7 @@
 
    Character set		Encoding (PC == position-code)
    -------------		-------- (LB == leading-byte)
-   ASCII			PC1 |
+   ASCII			PC1  |
    Control-1			LB   | PC1 + 0xA0
    Dimension-1 official		LB   | PC1 + 0x80
    Dimension-1 private		0x9E | LB         | PC1 + 0x80
@@ -557,17 +557,6 @@
 
 extern struct charset_lookup *chlook;
 
-/* Table of number of bytes in the string representation of a character
-   indexed by the first byte of that representation.
-
-   This value can be derived other ways -- e.g. something like
-
-   (BYTE_ASCII_P (first_byte) ? 1 :
-    XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (first_byte)))
-
-   but it's faster this way. */
-extern Bytecount rep_bytes_by_first_byte[0xA0];
-
 #ifdef ERROR_CHECK_TYPECHECK
 /* int not Bufbyte even though that is the actual type of a leading byte.
    This way, out-ot-range values will get caught rather than automatically
@@ -589,21 +578,26 @@
 #define CHARSET_BY_ATTRIBUTES(type, final, dir) \
   (chlook->charset_by_attributes[type][final][dir])
 
-#ifdef ERROR_CHECK_TYPECHECK
+
+/* Table of number of bytes in the string representation of a character
+   indexed by the first byte of that representation.
 
-/* Number of bytes in the string representation of a character */
+   This value can be derived in other ways -- e.g. something like
+   XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (first_byte))
+   but it's faster this way. */
+extern const Bytecount rep_bytes_by_first_byte[0xA0];
+
+/* Number of bytes in the string representation of a character. */
 INLINE int REP_BYTES_BY_FIRST_BYTE (int fb);
 INLINE int
 REP_BYTES_BY_FIRST_BYTE (int fb)
 {
-  assert (fb >= 0 && fb < 0xA0);
+#ifdef ERROR_CHECK_TYPECHECK
+  assert (0 <= fb && fb < 0xA0);
+#endif
   return rep_bytes_by_first_byte[fb];
 }
 
-#else
-#define REP_BYTES_BY_FIRST_BYTE(fb) (rep_bytes_by_first_byte[fb])
-#endif
-
 
 /************************************************************************/
 /*                        Dealing with characters                       */
--- a/src/ntheap.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/ntheap.c	Mon Aug 13 11:32:25 2007 +0200
@@ -148,7 +148,8 @@
      still a pretty decent arena to play in!  */
 
   unsigned long base = 0x01B00000;   /*  27MB */
-  unsigned long end  = 1 << VALBITS; /* 256MB */
+  /* Temporary hack for the non-starting problem - use 28 (256Mb) rather than VALBITS (1Gb) */
+  unsigned long end  = 1 << 28;      /* 256MB */
   void *ptr = NULL;
 
 #define NTHEAP_PROBE_BASE 1
--- a/src/print.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/print.c	Mon Aug 13 11:32:25 2007 +0200
@@ -627,8 +627,13 @@
   {
     int first = 1;
     int speccount = specpdl_depth ();
+    Lisp_Object frame = Qnil;
+    struct gcpro gcpro1;
+    GCPRO1 (stream);
 
     specbind (Qprint_message_label, Qerror);
+    stream = print_prepare (stream, &frame);
+
     tail = Fcdr (error_object);
     if (EQ (type, Qerror))
       {
@@ -650,6 +655,8 @@
 	tail = Fcdr (tail);
 	first = 0;
       }
+    print_finish (stream, frame);
+    UNGCPRO;
     unbind_to (speccount, Qnil);
     return;
     /* not reached */
--- a/src/redisplay-output.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/redisplay-output.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1234,8 +1234,8 @@
 
   XSETWINDOW (window, w);
 
-  layout_height = glyph_height (image_instance, Qnil, findex, window);
-  layout_width = glyph_width (image_instance, Qnil, findex, window);
+  layout_height = glyph_height (image_instance, window);
+  layout_width = glyph_width (image_instance, window);
 
   dga->height = layout_height;
   dga->width = layout_width;
@@ -1319,8 +1319,8 @@
 	  struct display_glyph_area cdga;
 	  cdga.xoffset  = IMAGE_INSTANCE_XOFFSET (childii) - dga->xoffset;
 	  cdga.yoffset = IMAGE_INSTANCE_YOFFSET (childii) - dga->yoffset;
-	  cdga.width = glyph_width (child, Qnil, findex, window);
-	  cdga.height = glyph_height (child, Qnil, findex, window);
+	  cdga.width = glyph_width (child, window);
+	  cdga.height = glyph_height (child, window);
 
 	  /* Although normalization is done by the output routines
 	     we have to do it here so that they don't try and
@@ -1362,9 +1362,9 @@
 			xzero (dl);
 			/* Munge boxes into display lines. */
 			dl.ypos = (cdb.ypos - cdga.yoffset)
-			  + glyph_ascent (child, Qnil, findex, window);
-			dl.ascent = glyph_ascent (child, Qnil, findex, window);
-			dl.descent = glyph_descent (child, Qnil, findex, window);
+			  + glyph_ascent (child, window);
+			dl.ascent = glyph_ascent (child, window);
+			dl.descent = glyph_descent (child, window);
 			dl.top_clip = cdga.yoffset;
 			dl.clip = (dl.ypos + dl.descent) - (cdb.ypos + cdb.height);
 			/* output_string doesn't understand offsets in
--- a/src/redisplay.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/redisplay.c	Mon Aug 13 11:32:25 2007 +0200
@@ -246,18 +246,13 @@
 } prop_block_dynarr;
 
 
-static void generate_formatted_string_db (Lisp_Object format_str,
-					  Lisp_Object result_str,
-					  struct window *w,
-					  struct display_line *dl,
-					  struct display_block *db,
-					  face_index findex, int min_pixpos,
-					  int max_pixpos, int type);
 static Charcount generate_fstring_runes (struct window *w, pos_data *data,
 					 Charcount pos, Charcount min_pos,
 					 Charcount max_pos, Lisp_Object elt,
 					 int depth, int max_pixsize,
-					 face_index findex, int type);
+					 face_index findex, int type,
+					 Charcount *offset,
+					 Lisp_Object cur_ext);
 static prop_block_dynarr *add_glyph_rune (pos_data *data,
 					  struct glyph_block *gb,
 					  int pos_type, int allow_cursor,
@@ -300,10 +295,6 @@
    isn't any reason we need more than a single set. */
 display_line_dynarr *cmotion_display_lines;
 
-/* Used by generate_formatted_string.  Global because they get used so
-   much that the dynamic allocation time adds up. */
-static Emchar_dynarr *formatted_string_emchar_dynarr;
-static struct display_line formatted_string_display_line;
 /* We store the extents that we need to generate in a Dynarr and then
    frob them all on at the end of generating the string.  We do it
    this way rather than adding them as we generate the string because
@@ -428,7 +419,6 @@
 Lisp_Object Vbar_cursor;
 Lisp_Object Qbar_cursor;
 
-
 int visible_bell;	/* If true and the terminal will support it
 			   then the frame will flash instead of
 			   beeping when an error occurs */
@@ -1551,7 +1541,7 @@
       if (cachel)
 	width = cachel->width;
       else
-	width = glyph_width (gb->glyph, Qnil, data->findex, data->window);
+	width = glyph_width (gb->glyph, data->window);
 
       if (!width)
 	return NULL;
@@ -1614,9 +1604,8 @@
 	}
       else
 	{
-	  ascent = glyph_ascent (gb->glyph, Qnil, data->findex, data->window);
-	  descent = glyph_descent (gb->glyph, Qnil, data->findex,
-				   data->window);
+	  ascent = glyph_ascent (gb->glyph, data->window);
+	  descent = glyph_descent (gb->glyph, data->window);
 	}
 
       baseline = glyph_baseline (gb->glyph, data->window);
@@ -2777,8 +2766,8 @@
 	      unsigned short ascent, descent;
 	      Lisp_Object baseline = glyph_baseline (gb->glyph, window);
 
-	      ascent = glyph_ascent (gb->glyph, Qnil, gb->findex, window);
-	      descent = glyph_descent (gb->glyph, Qnil, gb->findex, window);
+	      ascent = glyph_ascent (gb->glyph, window);
+	      descent = glyph_descent (gb->glyph, window);
 
 	      /* A pixmap that has not had a baseline explicitly set.
                  We use the existing ascent / descent ratio of the
@@ -2892,7 +2881,7 @@
 	{
 	  int width;
 
-	  width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	  width = glyph_width (gb->glyph, window);
 
 	  if (white_in_start - width >= left_in_end)
 	    {
@@ -2943,7 +2932,7 @@
 	if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
 	    GL_INSIDE_MARGIN)
 	  {
-	    gb->width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	    gb->width = glyph_width (gb->glyph, window);
 	    used_in += gb->width;
 	    Dynarr_add (ib, *gb);
 	  }
@@ -3012,7 +3001,7 @@
 	if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
 	    GL_INSIDE_MARGIN)
 	  {
-	    int width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	    int width = glyph_width (gb->glyph, window);
 
 	    if (used_out)
 	      {
@@ -3054,7 +3043,7 @@
       if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
 	  GL_OUTSIDE_MARGIN)
 	{
-	  int width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	  int width = glyph_width (gb->glyph, window);
 
 	  if (out_end + width <= in_out_start)
 	    {
@@ -3211,7 +3200,7 @@
 
       if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_WHITESPACE)
 	{
-	  int width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	  int width = glyph_width (gb->glyph, window);
 
 	  if (white_in_end + width <= dl->bounds.right_in)
 	    {
@@ -3261,7 +3250,7 @@
 
 	if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN)
 	  {
-	    gb->width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	    gb->width = glyph_width (gb->glyph, window);
 	    used_in += gb->width;
 	    Dynarr_add (ib, *gb);
 	  }
@@ -3325,7 +3314,7 @@
 
 	if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN)
 	  {
-	    int width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	    int width = glyph_width (gb->glyph, window);
 
 	    if (used_out)
 	      {
@@ -3366,7 +3355,7 @@
 
       if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_OUTSIDE_MARGIN)
 	{
-	  int width = glyph_width (gb->glyph, Qnil, gb->findex, window);
+	  int width = glyph_width (gb->glyph, window);
 
 	  if (out_start - width >= in_out_end)
 	    {
@@ -3482,9 +3471,119 @@
 /*									   */
 /***************************************************************************/
 
+/* This function is also used in frame.c by `generate_title_string' */
+void
+generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str,
+                              struct window *w, struct display_line *dl,
+                              struct display_block *db, face_index findex,
+                              int min_pixpos, int max_pixpos, int type)
+{
+  struct frame *f = XFRAME (w->frame);
+  struct device *d = XDEVICE (f->device);
+
+  pos_data data;
+  int c_pixpos;
+  Charcount offset = 0;
+
+  xzero (data);
+  data.d = d;
+  data.db = db;
+  data.dl = dl;
+  data.findex = findex;
+  data.pixpos = min_pixpos;
+  data.max_pixpos = max_pixpos;
+  data.cursor_type = NO_CURSOR;
+  data.last_charset = Qunbound;
+  data.last_findex = DEFAULT_INDEX;
+  data.result_str = result_str;
+  data.is_modeline = 1;
+  data.string = Qnil;
+  XSETWINDOW (data.window, w);
+
+  Dynarr_reset (formatted_string_extent_dynarr);
+  Dynarr_reset (formatted_string_extent_start_dynarr);
+  Dynarr_reset (formatted_string_extent_end_dynarr);
+
+  /* result_str is nil when we're building a frame or icon title. Otherwise,
+     we're building a modeline, so the offset starts at the modeline
+     horizontal scrolling ammount */
+  if (! NILP (result_str))
+    offset = w->modeline_hscroll;
+  generate_fstring_runes (w, &data, 0, 0, -1, format_str, 0,
+                          max_pixpos - min_pixpos, findex, type, &offset,
+			  Qnil);
+
+  if (Dynarr_length (db->runes))
+    {
+      struct rune *rb =
+        Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1);
+      c_pixpos = rb->xpos + rb->width;
+    }
+  else
+    c_pixpos = min_pixpos;
+
+  /* If we don't reach the right side of the window, add a blank rune
+     to make up the difference.  This usually only occurs if the
+     modeline face is using a proportional width font or a fixed width
+     font of a different size from the default face font. */
+
+  if (c_pixpos < max_pixpos)
+    {
+      data.pixpos = c_pixpos;
+      data.blank_width = max_pixpos - data.pixpos;
+
+      add_blank_rune (&data, NULL, 0);
+    }
+
+  /* Now create the result string and frob the extents into it. */
+  if (!NILP (result_str))
+    {
+      int elt;
+      Bytecount len;
+      Bufbyte *strdata;
+      struct buffer *buf = XBUFFER (WINDOW_BUFFER (w));
+
+      detach_all_extents (result_str);
+      resize_string (XSTRING (result_str), -1,
+                     data.bytepos - XSTRING_LENGTH (result_str));
+
+      strdata = XSTRING_DATA (result_str);
+
+      for (elt = 0, len = 0; elt < Dynarr_length (db->runes); elt++)
+        {
+          if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR)
+            {
+              len += (set_charptr_emchar
+                      (strdata + len, Dynarr_atp (db->runes,
+                                                  elt)->object.chr.ch));
+            }
+        }
+
+      for (elt = 0; elt < Dynarr_length (formatted_string_extent_dynarr);
+           elt++)
+        {
+          Lisp_Object extent = Qnil;
+          Lisp_Object child;
+
+          XSETEXTENT (extent, Dynarr_at (formatted_string_extent_dynarr, elt));
+          child = Fgethash (extent, buf->modeline_extent_table, Qnil);
+          if (NILP (child))
+            {
+              child = Fmake_extent (Qnil, Qnil, result_str);
+              Fputhash (extent, child, buf->modeline_extent_table);
+            }
+          Fset_extent_parent (child, extent);
+          set_extent_endpoints
+            (XEXTENT (child),
+             Dynarr_at (formatted_string_extent_start_dynarr, elt),
+             Dynarr_at (formatted_string_extent_end_dynarr, elt),
+             result_str);
+        }
+    }
+}
+
 /* Ensure that the given display line DL accurately represents the
    modeline for the given window. */
-
 static void
 generate_modeline (struct window *w, struct display_line *dl, int type)
 {
@@ -3585,110 +3684,6 @@
     dl->ypos -= FRAME_BOTTOM_GUTTER_BOUNDS (f);
 }
 
-static void
-generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str,
-                              struct window *w, struct display_line *dl,
-                              struct display_block *db, face_index findex,
-                              int min_pixpos, int max_pixpos, int type)
-{
-  struct frame *f = XFRAME (w->frame);
-  struct device *d = XDEVICE (f->device);
-
-  pos_data data;
-  int c_pixpos;
-
-  xzero (data);
-  data.d = d;
-  data.db = db;
-  data.dl = dl;
-  data.findex = findex;
-  data.pixpos = min_pixpos;
-  data.max_pixpos = max_pixpos;
-  data.cursor_type = NO_CURSOR;
-  data.last_charset = Qunbound;
-  data.last_findex = DEFAULT_INDEX;
-  data.result_str = result_str;
-  data.is_modeline = 1;
-  data.string = Qnil;
-  XSETWINDOW (data.window, w);
-
-  Dynarr_reset (formatted_string_extent_dynarr);
-  Dynarr_reset (formatted_string_extent_start_dynarr);
-  Dynarr_reset (formatted_string_extent_end_dynarr);
-
-  /* This recursively builds up the modeline. */
-  generate_fstring_runes (w, &data, 0, 0, -1, format_str, 0,
-                          max_pixpos - min_pixpos, findex, type);
-
-  if (Dynarr_length (db->runes))
-    {
-      struct rune *rb =
-        Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1);
-      c_pixpos = rb->xpos + rb->width;
-    }
-  else
-    c_pixpos = min_pixpos;
-
-  /* If we don't reach the right side of the window, add a blank rune
-     to make up the difference.  This usually only occurs if the
-     modeline face is using a proportional width font or a fixed width
-     font of a different size from the default face font. */
-
-  if (c_pixpos < max_pixpos)
-    {
-      data.pixpos = c_pixpos;
-      data.blank_width = max_pixpos - data.pixpos;
-
-      add_blank_rune (&data, NULL, 0);
-    }
-
-  /* Now create the result string and frob the extents into it. */
-  if (!NILP (result_str))
-    {
-      int elt;
-      Bytecount len;
-      Bufbyte *strdata;
-      struct buffer *buf = XBUFFER (WINDOW_BUFFER (w));
-
-      detach_all_extents (result_str);
-      resize_string (XSTRING (result_str), -1,
-                     data.bytepos - XSTRING_LENGTH (result_str));
-
-      strdata = XSTRING_DATA (result_str);
-
-      for (elt = 0, len = 0; elt < Dynarr_length (db->runes); elt++)
-        {
-          if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR)
-            {
-              len += (set_charptr_emchar
-                      (strdata + len, Dynarr_atp (db->runes,
-                                                  elt)->object.chr.ch));
-            }
-        }
-
-      for (elt = 0; elt < Dynarr_length (formatted_string_extent_dynarr);
-           elt++)
-        {
-          Lisp_Object extent = Qnil;
-          Lisp_Object child;
-
-          XSETEXTENT (extent, Dynarr_at (formatted_string_extent_dynarr, elt));
-          child = Fgethash (extent, buf->modeline_extent_table, Qnil);
-          if (NILP (child))
-            {
-              child = Fmake_extent (Qnil, Qnil, result_str);
-              Fputhash (extent, child, buf->modeline_extent_table);
-            }
-          Fset_extent_parent (child, extent);
-          set_extent_endpoints
-            (XEXTENT (child),
-             Dynarr_at (formatted_string_extent_start_dynarr, elt),
-             Dynarr_at (formatted_string_extent_end_dynarr, elt),
-             result_str);
-        }
-    }
-}
-
 static Charcount
 add_string_to_fstring_db_runes (pos_data *data, CONST Bufbyte *str,
                                 Charcount pos, Charcount min_pos, Charcount max_pos)
@@ -3734,7 +3729,8 @@
    modeline extents. */
 static Charcount
 add_glyph_to_fstring_db_runes (pos_data *data, Lisp_Object glyph,
-                               Charcount pos, Charcount min_pos, Charcount max_pos)
+                               Charcount pos, Charcount min_pos,
+			       Charcount max_pos, Lisp_Object extent)
 {
   /* This function has been Mule-ized. */
   Charcount end;
@@ -3750,7 +3746,7 @@
     end = min (max_pos, end);
 
   gb.glyph = glyph;
-  gb.extent = Qnil;
+  gb.extent = extent;
   add_glyph_rune (data, &gb, BEGIN_GLYPHS, 0, 0);
   pos++;
 
@@ -3777,7 +3773,8 @@
 generate_fstring_runes (struct window *w, pos_data *data, Charcount pos,
                         Charcount min_pos, Charcount max_pos,
                         Lisp_Object elt, int depth, int max_pixsize,
-                        face_index findex, int type)
+                        face_index findex, int type, Charcount *offset,
+			Lisp_Object cur_ext)
 {
   /* This function has been Mule-ized. */
   /* #### The other losing things in this function are:
@@ -3809,13 +3806,22 @@
 
           if (this != last)
             {
-              /* The string is just a string. */
+              /* No %-construct */
               Charcount size =
-                bytecount_to_charcount (last, this - last) + pos;
-              Charcount tmp_max = (max_pos == -1 ? size : min (size, max_pos));
-
-              pos = add_string_to_fstring_db_runes (data, last, pos, pos,
-                                                    tmp_max);
+		bytecount_to_charcount (last, this - last);
+
+	      if (size <= *offset)
+		*offset -= size;
+	      else
+		{
+		  Charcount tmp_max = (max_pos == -1 ? pos + size - *offset :
+				       min (pos + size - *offset, max_pos));
+		  CONST Bufbyte *tmp_last = charptr_n_addr (last, *offset);
+
+		  pos = add_string_to_fstring_db_runes (data, tmp_last,
+							pos, pos, tmp_max);
+		  *offset = 0;
+		}
             }
           else /* *this == '%' */
             {
@@ -3840,7 +3846,7 @@
                   pos = generate_fstring_runes (w, data, pos, spec_width,
                                                 max_pos, Vglobal_mode_string,
                                                 depth, max_pixsize, findex,
-                                                type);
+                                                type, offset, cur_ext);
                 }
               else if (*this == '-')
                 {
@@ -3871,13 +3877,31 @@
                 }
               else if (*this != 0)
                 {
+                  Emchar ch = charptr_emchar (this);
                   Bufbyte *str;
-                  Emchar ch = charptr_emchar (this);
+		  Charcount size;
+
                   decode_mode_spec (w, ch, type);
 
                   str = Dynarr_atp (mode_spec_bufbyte_string, 0);
-                  pos = add_string_to_fstring_db_runes (data,str, pos, pos,
-                                                        max_pos);
+		  size = bytecount_to_charcount
+		    /* Skip the null character added by `decode_mode_spec' */
+		    (str, Dynarr_length (mode_spec_bufbyte_string)) - 1;
+
+		  if (size <= *offset)
+		    *offset -= size;
+		  else
+		    {
+		      CONST Bufbyte *tmp_str = charptr_n_addr (str, *offset);
+
+		      /* ### NOTE: I don't understand why a tmp_max is not
+			 computed and used here as in the plain string case
+			 above. -- dv */
+		      pos = add_string_to_fstring_db_runes (data, tmp_str,
+							    pos, pos,
+							    max_pos);
+		      *offset = 0;
+		    }
                 }
 
               /* NOT this++.  There could be any sort of character at
@@ -3903,13 +3927,26 @@
 
       if (!UNBOUNDP (tem))
         {
-          /* If value is a string, output that string literally:
+	  /* If value is a string, output that string literally:
              don't check for % within it.  */
           if (STRINGP (tem))
             {
-              pos =
-                add_string_to_fstring_db_runes
-                (data, XSTRING_DATA (tem), pos, min_pos, max_pos);
+	      Bufbyte *str = XSTRING_DATA (tem);
+	      Charcount size = XSTRING_CHAR_LENGTH (tem);
+
+	      if (size <= *offset)
+		*offset -= size;
+	      else
+		{
+		  CONST Bufbyte *tmp_str = charptr_n_addr (str, *offset);
+
+		  /* ### NOTE: I don't understand why a tmp_max is not
+		     computed and used here as in the plain string case
+		     above. -- dv */
+		  pos = add_string_to_fstring_db_runes (data, tmp_str, pos,
+							min_pos, max_pos);
+		  *offset = 0;
+		}
             }
           /* Give up right away for nil or t.  */
           else if (!EQ (tem, elt))
@@ -3934,50 +3971,53 @@
   else if (CONSP (elt))
     {
       /* A cons cell: four distinct cases.
-       * If first element is a string or a cons, process all the elements
-       * and effectively concatenate them.
-       * If first element is a negative number, truncate displaying cdr to
-       * at most that many characters.  If positive, pad (with spaces)
-       * to at least that many characters.
-       * If first element is a symbol, process the cadr or caddr recursively
-       * according to whether the symbol's value is non-nil or nil.
-       * If first element is a face, process the cdr recursively
-       * without altering the depth.
+       * - If first element is a string or a cons, process all the elements
+       *   and effectively concatenate them.
+       * - If first element is a negative number, truncate displaying cdr to
+       *   at most that many characters.  If positive, pad (with spaces)
+       *   to at least that many characters.
+       * - If first element is another symbol, process the cadr or caddr
+       *   recursively according to whether the symbol's value is non-nil or
+       *   nil.
+       * - If first element is a face, process the cdr recursively
+       *   without altering the depth.
        */
+
       Lisp_Object car, tem;
 
       car = XCAR (elt);
       if (SYMBOLP (car))
-        {
-          elt = XCDR (elt);
-          if (!CONSP (elt))
-            goto invalid;
-          tem = symbol_value_in_buffer (car, w->buffer);
-          /* elt is now the cdr, and we know it is a cons cell.
-             Use its car if CAR has a non-nil value.  */
-          if (!UNBOUNDP (tem))
-            {
-              if (!NILP (tem))
-                {
-                  elt = XCAR (elt);
-                  goto tail_recurse;
-                }
-            }
-          /* Symbol's value is nil (or symbol is unbound)
-           * Get the cddr of the original list
-           * and if possible find the caddr and use that.
-           */
-          elt = XCDR (elt);
-          if (NILP (elt))
-            ;
-          else if (!CONSP (elt))
-            goto invalid;
-          else
-            {
-              elt = XCAR (elt);
-              goto tail_recurse;
-            }
-        }
+	{
+	  elt = XCDR (elt);
+	  if (!CONSP (elt))
+	    goto invalid;
+
+	  tem = symbol_value_in_buffer (car, w->buffer);
+	  /* elt is now the cdr, and we know it is a cons cell.
+	     Use its car if CAR has a non-nil value.  */
+	  if (!UNBOUNDP (tem))
+	    {
+	      if (!NILP (tem))
+		{
+		  elt = XCAR (elt);
+		  goto tail_recurse;
+		}
+	    }
+	  /* Symbol's value is nil (or symbol is unbound)
+	   * Get the cddr of the original list
+	   * and if possible find the caddr and use that.
+	   */
+	  elt = XCDR (elt);
+	  if (NILP (elt))
+	    ;
+	  else if (!CONSP (elt))
+	    goto invalid;
+	  else
+	    {
+	      elt = XCAR (elt);
+	      goto tail_recurse;
+	    }
+	}
       else if (INTP (car))
         {
           Charcount lim = XINT (car);
@@ -4016,13 +4056,14 @@
       else if (STRINGP (car) || CONSP (car))
         {
           int limit = 50;
+
           /* LIMIT is to protect against circular lists.  */
           while (CONSP (elt) && --limit > 0
                  && (pos < max_pos || max_pos == -1))
             {
               pos = generate_fstring_runes (w, data, pos, pos, max_pos,
-                                            XCAR (elt), depth,
-                                            max_pixsize, findex, type);
+                                            XCAR (elt), depth, max_pixsize,
+					    findex, type, offset, cur_ext);
               elt = XCDR (elt);
             }
         }
@@ -4061,7 +4102,8 @@
               data->findex = new_findex;
               pos = generate_fstring_runes (w, data, pos, pos, max_pos,
                                             XCDR (elt), depth - 1,
-                                            max_pixsize, new_findex, type);
+					    max_pixsize, new_findex, type,
+					    offset, car);
               data->findex = old_findex;
               Dynarr_add (formatted_string_extent_dynarr, ext);
               Dynarr_add (formatted_string_extent_start_dynarr, start);
@@ -4071,57 +4113,46 @@
     }
   else if (GLYPHP (elt))
     {
-      pos = add_glyph_to_fstring_db_runes (data, elt, pos, pos, max_pos);
+      /* Glyphs are considered as one character with respect to the modeline
+	 horizontal scrolling facility. -- dv */
+      if (*offset > 0)
+	*offset -= 1;
+      else
+	pos = add_glyph_to_fstring_db_runes (data, elt, pos, pos, max_pos,
+					     cur_ext);
     }
   else
     {
     invalid:
-      pos =
-        add_string_to_fstring_db_runes
-          (data, (CONST Bufbyte *) GETTEXT ("*invalid*"), pos, min_pos,
-           max_pos);
+      {
+	char *str = GETTEXT ("*invalid*");
+	Charcount size = (Charcount) strlen (str); /* is this ok ?? -- dv */
+
+	if (size <= *offset)
+	  *offset -= size;
+	else
+	  {
+	    CONST Bufbyte *tmp_str =
+	      charptr_n_addr ((CONST Bufbyte *) str, *offset);
+
+	    /* ### NOTE: I don't understand why a tmp_max is not computed and
+	       used here as in the plain string case above. -- dv */
+	    pos = add_string_to_fstring_db_runes (data, tmp_str, pos,
+						  min_pos, max_pos);
+	    *offset = 0;
+	  }
+      }
     }
 
   if (min_pos > pos)
     {
-      add_string_to_fstring_db_runes (data, (CONST Bufbyte *) "", pos, min_pos,
-                                      -1);
+      add_string_to_fstring_db_runes (data, (CONST Bufbyte *) "", pos,
+				      min_pos, -1);
     }
 
   return pos;
 }
 
-/* The caller is responsible for freeing the returned string. */
-Bufbyte *
-generate_formatted_string (struct window *w, Lisp_Object format_str,
-			   Lisp_Object result_str, face_index findex, int type)
-{
-  struct display_line *dl;
-  struct display_block *db;
-  int elt = 0;
-
-  dl = &formatted_string_display_line;
-  db = get_display_block_from_line (dl, TEXT);
-  Dynarr_reset (db->runes);
-
-  generate_formatted_string_db (format_str, result_str, w, dl, db, findex, 0,
-                                -1, type);
-
-  Dynarr_reset (formatted_string_emchar_dynarr);
-  while (elt < Dynarr_length (db->runes))
-    {
-      if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR)
-	Dynarr_add (formatted_string_emchar_dynarr,
-		    Dynarr_atp (db->runes, elt)->object.chr.ch);
-      elt++;
-    }
-
-  return
-    convert_emchar_string_into_malloced_string
-    ( Dynarr_atp (formatted_string_emchar_dynarr, 0),
-      Dynarr_length (formatted_string_emchar_dynarr), 0);
-}
-
 /* Update just the modeline.  Assumes the desired display structs.  If
    they do not have a modeline block, it does nothing. */
 static void
@@ -6164,7 +6195,9 @@
      somewhere else once tty updates occur on a per-frame basis. */
   mark_face_cachels_as_clean (w);
 
-  /* The glyph cachels only get dirty if someone changed something. */
+  /* The glyph cachels only get dirty if someone changed something.
+   Since redisplay has now effectively ended we can reset the dirty
+   flag since everything must be up-to-date. */
   if (glyphs_changed)
     mark_glyph_cachels_as_clean (w);
 
@@ -9094,12 +9127,10 @@
     {
       cmotion_display_lines = Dynarr_new (display_line);
       mode_spec_bufbyte_string = Dynarr_new (Bufbyte);
-      formatted_string_emchar_dynarr = Dynarr_new (Emchar);
       formatted_string_extent_dynarr = Dynarr_new (EXTENT);
       formatted_string_extent_start_dynarr = Dynarr_new (Bytecount);
       formatted_string_extent_end_dynarr = Dynarr_new (Bytecount);
       internal_cache = Dynarr_new (line_start_cache);
-      xzero (formatted_string_display_line);
     }
 
   /* window system is nil when in -batch mode */
@@ -9383,9 +9414,9 @@
   Vleft_margin_width = Fmake_specifier (Qnatnum);
   set_specifier_fallback (Vleft_margin_width, list1 (Fcons (Qnil, Qzero)));
   set_specifier_caching (Vleft_margin_width,
-			 slot_offset (struct window, left_margin_width),
+			 offsetof (struct window, left_margin_width),
 			 some_window_value_changed,
-			 slot_offset (struct frame, left_margin_width),
+			 offsetof (struct frame, left_margin_width),
 			 margin_width_changed_in_frame);
 
   DEFVAR_SPECIFIER ("right-margin-width", &Vright_margin_width /*
@@ -9395,9 +9426,9 @@
   Vright_margin_width = Fmake_specifier (Qnatnum);
   set_specifier_fallback (Vright_margin_width, list1 (Fcons (Qnil, Qzero)));
   set_specifier_caching (Vright_margin_width,
-			 slot_offset (struct window, right_margin_width),
+			 offsetof (struct window, right_margin_width),
 			 some_window_value_changed,
-			 slot_offset (struct frame, right_margin_width),
+			 offsetof (struct frame, right_margin_width),
 			 margin_width_changed_in_frame);
 
   DEFVAR_SPECIFIER ("minimum-line-ascent", &Vminimum_line_ascent /*
@@ -9407,7 +9438,7 @@
   Vminimum_line_ascent = Fmake_specifier (Qnatnum);
   set_specifier_fallback (Vminimum_line_ascent, list1 (Fcons (Qnil, Qzero)));
   set_specifier_caching (Vminimum_line_ascent,
-			 slot_offset (struct window, minimum_line_ascent),
+			 offsetof (struct window, minimum_line_ascent),
 			 some_window_value_changed,
 			 0, 0);
 
@@ -9418,7 +9449,7 @@
   Vminimum_line_descent = Fmake_specifier (Qnatnum);
   set_specifier_fallback (Vminimum_line_descent, list1 (Fcons (Qnil, Qzero)));
   set_specifier_caching (Vminimum_line_descent,
-			 slot_offset (struct window, minimum_line_descent),
+			 offsetof (struct window, minimum_line_descent),
 			 some_window_value_changed,
 			 0, 0);
 
@@ -9430,7 +9461,7 @@
   Vuse_left_overflow = Fmake_specifier (Qboolean);
   set_specifier_fallback (Vuse_left_overflow, list1 (Fcons (Qnil, Qnil)));
   set_specifier_caching (Vuse_left_overflow,
-			 slot_offset (struct window, use_left_overflow),
+			 offsetof (struct window, use_left_overflow),
 			 some_window_value_changed,
 			 0, 0);
 
@@ -9442,7 +9473,7 @@
   Vuse_right_overflow = Fmake_specifier (Qboolean);
   set_specifier_fallback (Vuse_right_overflow, list1 (Fcons (Qnil, Qnil)));
   set_specifier_caching (Vuse_right_overflow,
-			 slot_offset (struct window, use_right_overflow),
+			 offsetof (struct window, use_right_overflow),
 			 some_window_value_changed,
 			 0, 0);
 
@@ -9453,7 +9484,7 @@
   Vtext_cursor_visible_p = Fmake_specifier (Qboolean);
   set_specifier_fallback (Vtext_cursor_visible_p, list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vtext_cursor_visible_p,
-			 slot_offset (struct window, text_cursor_visible_p),
+			 offsetof (struct window, text_cursor_visible_p),
 			 text_cursor_visible_p_changed,
 			 0, 0);
 
--- a/src/redisplay.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/redisplay.h	Mon Aug 13 11:32:25 2007 +0200
@@ -696,13 +696,18 @@
 void redisplay_echo_area (void);
 void free_display_structs (struct window_mirror *mir);
 void free_display_lines (display_line_dynarr *dla);
-Bufbyte *generate_formatted_string (struct window *w, Lisp_Object format_str,
-                                    Lisp_Object result_str, face_index findex,
-                                    int type);
 void generate_displayable_area (struct window *w, Lisp_Object disp_string,
 				int xpos, int ypos, int width, int height,
 				display_line_dynarr* dl,
 				Bufpos start_pos, face_index default_face);
+/* `generate_title_string' in frame.c needs this */
+void generate_formatted_string_db (Lisp_Object format_str,
+				   Lisp_Object result_str,
+				   struct window *w,
+				   struct display_line *dl,
+				   struct display_block *db,
+				   face_index findex,
+				   int min_pixpos, int max_pixpos, int type);
 int real_current_modeline_height (struct window *w);
 int pixel_to_glyph_translation (struct frame *f, int x_coord,
 				int y_coord, int *col, int *row,
--- a/src/s/aix3-2.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/s/aix3-2.h	Mon Aug 13 11:32:25 2007 +0200
@@ -32,8 +32,6 @@
 #endif
 #endif
 
-#define HAVE_FSYNC
-
 /* With this defined, a gcc-compiled Emacs crashed in realloc under AIX
    3.2, and a cc-compiled Emacs works with this undefined.
    --karl@cs.umb.edu.  */
--- a/src/s/cygwin32.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/s/cygwin32.h	Mon Aug 13 11:32:25 2007 +0200
@@ -121,6 +121,12 @@
 #ifndef WM_MOUSEWHEEL
 #define WM_MOUSEWHEEL 0x20A
 #endif
+#ifndef TCS_BOTTOM
+#define TCS_BOTTOM 0x0002
+#endif
+#ifndef TCS_VERTICAL
+#define TCS_VERTICAL 0x0080
+#endif
 
 #define PBS_SMOOTH              0x01
 
--- a/src/s/windowsnt.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/s/windowsnt.h	Mon Aug 13 11:32:25 2007 +0200
@@ -105,9 +105,9 @@
    The alternative is that a lock file named
    /usr/spool/mail/$USER.lock.  */
 
-/* #define MAIL_USE_FLOCK */
 #define MAIL_USE_POP
-#define MAIL_USE_SYSTEM_LOCK
+#define HAVE_LOCKING
+#define MAIL_USE_LOCKING
 
 /* If the character used to separate elements of the executable path
    is not ':', #define this to be the appropriate character constant.  */
--- a/src/scrollbar.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/scrollbar.c	Mon Aug 13 11:32:25 2007 +0200
@@ -956,11 +956,9 @@
     (Vscrollbar_width,
      list1 (Fcons (Qnil, make_int (DEFAULT_SCROLLBAR_WIDTH))));
   set_specifier_caching (Vscrollbar_width,
-			 slot_offset (struct window,
-				      scrollbar_width),
+			 offsetof (struct window, scrollbar_width),
 			 vertical_scrollbar_changed_in_window,
-			 slot_offset (struct frame,
-				      scrollbar_width),
+			 offsetof (struct frame, scrollbar_width),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("scrollbar-height", &Vscrollbar_height /*
@@ -972,11 +970,9 @@
     (Vscrollbar_height,
      list1 (Fcons (Qnil, make_int (DEFAULT_SCROLLBAR_HEIGHT))));
   set_specifier_caching (Vscrollbar_height,
-			 slot_offset (struct window,
-				      scrollbar_height),
+			 offsetof (struct window, scrollbar_height),
 			 some_window_value_changed,
-			 slot_offset (struct frame,
-				      scrollbar_height),
+			 offsetof (struct frame, scrollbar_height),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("horizontal-scrollbar-visible-p", &Vhorizontal_scrollbar_visible_p /*
@@ -987,11 +983,11 @@
   set_specifier_fallback (Vhorizontal_scrollbar_visible_p,
 			  list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vhorizontal_scrollbar_visible_p,
-			 slot_offset (struct window,
-				      horizontal_scrollbar_visible_p),
+			 offsetof (struct window,
+				   horizontal_scrollbar_visible_p),
 			 some_window_value_changed,
-			 slot_offset (struct frame,
-				      horizontal_scrollbar_visible_p),
+			 offsetof (struct frame,
+				   horizontal_scrollbar_visible_p),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("vertical-scrollbar-visible-p", &Vvertical_scrollbar_visible_p /*
@@ -1002,11 +998,11 @@
   set_specifier_fallback (Vvertical_scrollbar_visible_p,
 			  list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vvertical_scrollbar_visible_p,
-			 slot_offset (struct window,
-				      vertical_scrollbar_visible_p),
+			 offsetof (struct window,
+				   vertical_scrollbar_visible_p),
 			 vertical_scrollbar_changed_in_window,
-			 slot_offset (struct frame,
-				      vertical_scrollbar_visible_p),
+			 offsetof (struct frame,
+				   vertical_scrollbar_visible_p),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("scrollbar-on-left-p", &Vscrollbar_on_left_p /*
@@ -1030,11 +1026,9 @@
   }
 
   set_specifier_caching (Vscrollbar_on_left_p,
-			 slot_offset (struct window,
-				      scrollbar_on_left_p),
+			 offsetof (struct window, scrollbar_on_left_p),
 			 vertical_scrollbar_changed_in_window,
-			 slot_offset (struct frame,
-				      scrollbar_on_left_p),
+			 offsetof (struct frame, scrollbar_on_left_p),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("scrollbar-on-top-p", &Vscrollbar_on_top_p /*
@@ -1045,11 +1039,9 @@
   set_specifier_fallback (Vscrollbar_on_top_p,
 			  list1 (Fcons (Qnil, Qnil)));
   set_specifier_caching (Vscrollbar_on_top_p,
-			 slot_offset (struct window,
-				      scrollbar_on_top_p),
+			 offsetof (struct window, scrollbar_on_top_p),
 			 some_window_value_changed,
-			 slot_offset (struct frame,
-				      scrollbar_on_top_p),
+			 offsetof (struct frame, scrollbar_on_top_p),
 			 frame_size_slipped);
 }
 
@@ -1059,8 +1051,7 @@
   Vscrollbar_pointer_glyph = Fmake_glyph_internal (Qpointer);
 
   set_specifier_caching (XGLYPH (Vscrollbar_pointer_glyph)->image,
-			 slot_offset (struct window,
-				      scrollbar_pointer),
+			 offsetof (struct window, scrollbar_pointer),
 			 scrollbar_pointer_changed_in_window,
 			 0, 0);
 }
--- a/src/specifier.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/specifier.h	Mon Aug 13 11:32:25 2007 +0200
@@ -281,6 +281,15 @@
   assert (SPECIFIER_TYPE_P (sp, type));					\
   return (struct type##_specifier *) sp->data;				\
 }									\
+INLINE struct Lisp_Specifier *						\
+error_check_##type##_specifier_type (Lisp_Object obj);			\
+INLINE struct Lisp_Specifier *						\
+error_check_##type##_specifier_type (Lisp_Object obj)			\
+{									\
+  struct Lisp_Specifier *sp = XSPECIFIER (obj);				\
+  assert (SPECIFIER_TYPE_P (sp, type));					\
+  return sp;								\
+}									\
 DECLARE_NOTHING
 #else
 #define DECLARE_SPECIFIER_TYPE(type)				\
@@ -343,10 +352,19 @@
      : (sp)->data))
 #endif
 
-/* #### Need to create ERROR_CHECKING versions of these. */
+#ifdef ERROR_CHECK_TYPECHECK
+# define XSPECIFIER_TYPE(x, type)	\
+   error_check_##type##_specifier_type (x)
+# define XSETSPECIFIER_TYPE(x, p, type)	do		\
+{							\
+  XSETSPECIFIER (x, p);					\
+  assert (SPECIFIER_TYPEP (XSPECIFIER(x), type));	\
+} while (0)
+#else
+# define XSPECIFIER_TYPE(x, type) XSPECIFIER (x)
+# define XSETSPECIFIER_TYPE(x, p, type) XSETSPECIFIER (x, p)
+#endif /* ERROR_CHECK_TYPE_CHECK */
 
-#define XSPECIFIER_TYPE(x, type) XSPECIFIER (x)
-#define XSETSPECIFIER_TYPE(x, p, type) XSETSPECIFIER (x, p)
 #define SPECIFIER_TYPEP(x, type)				\
   (SPECIFIERP (x) && SPECIFIER_TYPE_P (XSPECIFIER (x), type))
 #define CHECK_SPECIFIER_TYPE(x, type) do {		\
--- a/src/symsinit.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/symsinit.h	Mon Aug 13 11:32:25 2007 +0200
@@ -293,6 +293,7 @@
 void reinit_vars_of_font_lock (void);
 void vars_of_frame_tty (void);
 void vars_of_frame_mswindows (void);
+void reinit_vars_of_frame_mswindows (void);
 void vars_of_frame_x (void);
 void vars_of_frame (void);
 void vars_of_glyphs_x (void);
--- a/src/sysdep.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/sysdep.c	Mon Aug 13 11:32:25 2007 +0200
@@ -2145,9 +2145,9 @@
  */
 
 #ifdef __cplusplus
-  extern "C" int _start ();
+  extern "C" int _start (void);
 #else
-  extern int _start ();
+  extern int _start (void);
 #endif
 
 #ifndef HAVE_TEXT_START
--- a/src/sysfile.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/sysfile.h	Mon Aug 13 11:32:25 2007 +0200
@@ -203,10 +203,6 @@
 #define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
 #endif
 
-#if !defined (USG)  && !defined (WINDOWSNT)
-# define HAVE_FSYNC
-#endif
-
 #ifndef MAXPATHLEN
 /* in 4.1, param.h fails to define this. */
 #define MAXPATHLEN 1024
--- a/src/termcap.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/termcap.c	Mon Aug 13 11:32:25 2007 +0200
@@ -26,18 +26,9 @@
 #include "lisp.h" /* For encapsulated open, close, read */
 #include "device.h" /* For DEVICE_BAUD_RATE */
 #else /* not emacs */
-#if defined(USG) || defined(STDC_HEADERS)
-#define memcpy(d, s, n) memcpy ((d), (s), (n))
-#endif
 
-#ifdef STDC_HEADERS
 #include <stdlib.h>
 #include <string.h>
-#else
-char *getenv ();
-char *malloc ();
-char *realloc ();
-#endif
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -337,8 +328,6 @@
 
    If BP is zero, space is dynamically allocated.  */
 
-extern char *getenv ();
-
 int
 tgetent (bp, name)
      char *bp;
@@ -365,7 +354,7 @@
      it is the entry itself, but only if
      the name the caller requested matches the TERM variable.  */
 
-  if (tem && !IS_DIRECTORY_SEP (*tem) && !strcmp (name, (char *) getenv ("TERM")))
+  if (tem && !IS_DIRECTORY_SEP (*tem) && !strcmp (name, getenv ("TERM")))
     {
       indirect = tgetst1 (find_capability (tem, "tc"), 0);
       if (!indirect)
--- a/src/toolbar-x.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/toolbar-x.c	Mon Aug 13 11:32:25 2007 +0200
@@ -296,9 +296,9 @@
 	return XINT (f->toolbar_size[pos]);
 
       if (vert)
-	size = glyph_height (glyph, Vdefault_face, 0, window);
+	size = glyph_height (glyph, window);
       else
-	size = glyph_width (glyph, Vdefault_face, 0, window);
+	size = glyph_width (glyph, window);
     }
 
   if (!size)
--- a/src/toolbar.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/toolbar.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1434,8 +1434,7 @@
      automatically knew about specifier fallbacks, so we didn't
      have to do it ourselves. */
   set_specifier_caching (Vdefault_toolbar,
-			 slot_offset (struct window,
-				      default_toolbar),
+			 offsetof (struct window, default_toolbar),
 			 default_toolbar_specs_changed,
 			 0, 0);
 
@@ -1447,8 +1446,7 @@
 */ );
   Vtoolbar[TOP_TOOLBAR] = Fmake_specifier (Qtoolbar);
   set_specifier_caching (Vtoolbar[TOP_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar[TOP_TOOLBAR]),
+			 offsetof (struct window, toolbar[TOP_TOOLBAR]),
 			 toolbar_specs_changed,
 			 0, 0);
 
@@ -1465,8 +1463,7 @@
 */ );
   Vtoolbar[BOTTOM_TOOLBAR] = Fmake_specifier (Qtoolbar);
   set_specifier_caching (Vtoolbar[BOTTOM_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar[BOTTOM_TOOLBAR]),
+			 offsetof (struct window, toolbar[BOTTOM_TOOLBAR]),
 			 toolbar_specs_changed,
 			 0, 0);
 
@@ -1483,8 +1480,7 @@
 */ );
   Vtoolbar[LEFT_TOOLBAR] = Fmake_specifier (Qtoolbar);
   set_specifier_caching (Vtoolbar[LEFT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar[LEFT_TOOLBAR]),
+			 offsetof (struct window, toolbar[LEFT_TOOLBAR]),
 			 toolbar_specs_changed,
 			 0, 0);
 
@@ -1501,8 +1497,7 @@
 */ );
   Vtoolbar[RIGHT_TOOLBAR] = Fmake_specifier (Qtoolbar);
   set_specifier_caching (Vtoolbar[RIGHT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar[RIGHT_TOOLBAR]),
+			 offsetof (struct window, toolbar[RIGHT_TOOLBAR]),
 			 toolbar_specs_changed,
 			 0, 0);
 
@@ -1556,11 +1551,9 @@
 */ );
   Vdefault_toolbar_height = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vdefault_toolbar_height,
-			 slot_offset (struct window,
-				      default_toolbar_height),
+			 offsetof (struct window, default_toolbar_height),
 			 default_toolbar_size_changed_in_window,
-			 slot_offset (struct frame,
-				      default_toolbar_height),
+			 offsetof (struct frame, default_toolbar_height),
 			 default_toolbar_size_changed_in_frame);
 
   DEFVAR_SPECIFIER ("default-toolbar-width", &Vdefault_toolbar_width /*
@@ -1571,11 +1564,9 @@
 */ );
   Vdefault_toolbar_width = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vdefault_toolbar_width,
-			 slot_offset (struct window,
-				      default_toolbar_width),
+			 offsetof (struct window, default_toolbar_width),
 			 default_toolbar_size_changed_in_window,
-			 slot_offset (struct frame,
-				      default_toolbar_width),
+			 offsetof (struct frame, default_toolbar_width),
 			 default_toolbar_size_changed_in_frame);
 
   DEFVAR_SPECIFIER ("top-toolbar-height",
@@ -1587,11 +1578,9 @@
 */ );
   Vtoolbar_size[TOP_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_size[TOP_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_size[TOP_TOOLBAR]),
+			 offsetof (struct window, toolbar_size[TOP_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_size[TOP_TOOLBAR]),
+			 offsetof (struct frame, toolbar_size[TOP_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("bottom-toolbar-height",
@@ -1603,11 +1592,9 @@
 */ );
   Vtoolbar_size[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_size[BOTTOM_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_size[BOTTOM_TOOLBAR]),
+			 offsetof (struct window, toolbar_size[BOTTOM_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_size[BOTTOM_TOOLBAR]),
+			 offsetof (struct frame, toolbar_size[BOTTOM_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("left-toolbar-width",
@@ -1619,11 +1606,9 @@
 */ );
   Vtoolbar_size[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_size[LEFT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_size[LEFT_TOOLBAR]),
+			 offsetof (struct window, toolbar_size[LEFT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_size[LEFT_TOOLBAR]),
+			 offsetof (struct frame, toolbar_size[LEFT_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("right-toolbar-width",
@@ -1635,11 +1620,9 @@
 */ );
   Vtoolbar_size[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_size[RIGHT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_size[RIGHT_TOOLBAR]),
+			 offsetof (struct window, toolbar_size[RIGHT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_size[RIGHT_TOOLBAR]),
+			 offsetof (struct frame, toolbar_size[RIGHT_TOOLBAR]),
 			 frame_size_slipped);
 
   fb = Qnil;
@@ -1700,11 +1683,9 @@
 */ );
   Vdefault_toolbar_border_width = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vdefault_toolbar_border_width,
-			 slot_offset (struct window,
-				      default_toolbar_border_width),
+			 offsetof (struct window, default_toolbar_border_width),
 			 default_toolbar_border_width_changed_in_window,
-			 slot_offset (struct frame,
-				      default_toolbar_border_width),
+			 offsetof (struct frame, default_toolbar_border_width),
 			 default_toolbar_border_width_changed_in_frame);
 
   DEFVAR_SPECIFIER ("top-toolbar-border-width",
@@ -1716,11 +1697,11 @@
 */ );
   Vtoolbar_border_width[TOP_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_border_width[TOP_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_border_width[TOP_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_border_width[TOP_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_border_width[TOP_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_border_width[TOP_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("bottom-toolbar-border-width",
@@ -1732,11 +1713,11 @@
 */ );
   Vtoolbar_border_width[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_border_width[BOTTOM_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_border_width[BOTTOM_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_border_width[BOTTOM_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_border_width[BOTTOM_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_border_width[BOTTOM_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("left-toolbar-border-width",
@@ -1748,11 +1729,11 @@
 */ );
   Vtoolbar_border_width[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_border_width[LEFT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_border_width[LEFT_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_border_width[LEFT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_border_width[LEFT_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_border_width[LEFT_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("right-toolbar-border-width",
@@ -1764,11 +1745,11 @@
 */ );
   Vtoolbar_border_width[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum);
   set_specifier_caching (Vtoolbar_border_width[RIGHT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_border_width[RIGHT_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_border_width[RIGHT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_border_width[RIGHT_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_border_width[RIGHT_TOOLBAR]),
 			 frame_size_slipped);
 
   fb = Qnil;
@@ -1812,11 +1793,9 @@
 */ );
   Vdefault_toolbar_visible_p = Fmake_specifier (Qboolean);
   set_specifier_caching (Vdefault_toolbar_visible_p,
-			 slot_offset (struct window,
-				      default_toolbar_visible_p),
+			 offsetof (struct window, default_toolbar_visible_p),
 			 default_toolbar_visible_p_changed_in_window,
-			 slot_offset (struct frame,
-				      default_toolbar_visible_p),
+			 offsetof (struct frame, default_toolbar_visible_p),
 			 default_toolbar_visible_p_changed_in_frame);
 
   DEFVAR_SPECIFIER ("top-toolbar-visible-p",
@@ -1828,11 +1807,11 @@
 */ );
   Vtoolbar_visible_p[TOP_TOOLBAR] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vtoolbar_visible_p[TOP_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_visible_p[TOP_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_visible_p[TOP_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_visible_p[TOP_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_visible_p[TOP_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("bottom-toolbar-visible-p",
@@ -1844,11 +1823,11 @@
 */ );
   Vtoolbar_visible_p[BOTTOM_TOOLBAR] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vtoolbar_visible_p[BOTTOM_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_visible_p[BOTTOM_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_visible_p[BOTTOM_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_visible_p[BOTTOM_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_visible_p[BOTTOM_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("left-toolbar-visible-p",
@@ -1860,11 +1839,11 @@
 */ );
   Vtoolbar_visible_p[LEFT_TOOLBAR] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vtoolbar_visible_p[LEFT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_visible_p[LEFT_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_visible_p[LEFT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_visible_p[LEFT_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_visible_p[LEFT_TOOLBAR]),
 			 frame_size_slipped);
 
   DEFVAR_SPECIFIER ("right-toolbar-visible-p",
@@ -1876,11 +1855,11 @@
 */ );
   Vtoolbar_visible_p[RIGHT_TOOLBAR] = Fmake_specifier (Qboolean);
   set_specifier_caching (Vtoolbar_visible_p[RIGHT_TOOLBAR],
-			 slot_offset (struct window,
-				      toolbar_visible_p[RIGHT_TOOLBAR]),
+			 offsetof (struct window,
+				   toolbar_visible_p[RIGHT_TOOLBAR]),
 			 toolbar_geometry_changed_in_window,
-			 slot_offset (struct frame,
-				      toolbar_visible_p[RIGHT_TOOLBAR]),
+			 offsetof (struct frame,
+				   toolbar_visible_p[RIGHT_TOOLBAR]),
 			 frame_size_slipped);
 
   /* initially, top inherits from default; this can be
@@ -1902,8 +1881,7 @@
 */ );
   Vtoolbar_buttons_captioned_p = Fmake_specifier (Qboolean);
   set_specifier_caching (Vtoolbar_buttons_captioned_p,
-			 slot_offset (struct window,
-				      toolbar_buttons_captioned_p),
+			 offsetof (struct window, toolbar_buttons_captioned_p),
 			 toolbar_buttons_captioned_p_changed,
 			 0, 0);
   set_specifier_fallback (Vtoolbar_buttons_captioned_p,
--- a/src/unexaix.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexaix.c	Mon Aug 13 11:32:25 2007 +0200
@@ -439,7 +439,6 @@
 {
   int i, nwrite, ret;
   char buf[80];
-  extern int errno;
   char zeros[UnexBlockSz];
 
   for (i = 0; ptr < end;)
--- a/src/unexalpha.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexalpha.c	Mon Aug 13 11:32:25 2007 +0200
@@ -31,6 +31,7 @@
 #include <sys/stat.h>
 #include <sys/mman.h>
 #include <stdio.h>
+#include <errno.h>
 #include <varargs.h>
 #include <filehdr.h>
 #include <aouthdr.h>
@@ -54,9 +55,6 @@
 	if (lseek (_fd, _position, L_SET) != _position) \
 	  fatal_unexec (_error_message, _error_arg);
 
-extern int errno;
-extern char *strerror ();
-
 void *sbrk();
 
 #define EEOF -1
--- a/src/unexec.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexec.c	Mon Aug 13 11:32:25 2007 +0200
@@ -136,7 +136,7 @@
 program text).  HDR's standard fields are already correct, except that
 this adjustment to the `a_text' field has not yet been made;
 thus, the amount of offset can depend on the data in the file.
-  
+
 * A_TEXT_SEEK(HDR)
 
 If defined, this macro specifies the number of bytes to seek into the
@@ -186,19 +186,12 @@
 #  undef _POSIX_SOURCE
 # endif
 
-# if defined(__lucid) && !defined(__STDC_EXTENDED__)
-#  define __STDC_EXTENDED__ 1
-# endif
-
 # include <stddef.h>
 # include <stdlib.h>
 # include <unistd.h>
 # include <string.h>
 # include <stddef.h>
-
-# ifdef __lucid
-#  include <sysent.h>
-# endif
+# include <errno.h>
 
 #endif
 
@@ -443,7 +436,7 @@
     {
       close (new);
       /* unlink (new_name);	    	/ * Failed, unlink new a.out */
-      return -1;	
+      return -1;
     }
 
   close (new);
@@ -998,7 +991,7 @@
     char c;
     int mcount_address, mcount_offset, count;
     extern char *_execname;
-   
+
 
     /* The use of _execname is incompatible with RISCiX 1.1 */
     sprintf (command, "nm %s | fgrep mcount", _execname);
@@ -1018,7 +1011,7 @@
     {
       sprintf (errbuf, "Failed to execute the command '%s'\n", command);
       PERROR (errbuf);
-    }  
+    }
 
     sscanf(address_text, "%x", &mcount_address);
     ptr = (char *) unexec_text_start;
@@ -1076,7 +1069,6 @@
 #if 0
   char buf[80];
 #endif
-  extern int errno;
   /* This is the normal amount to write at once.
      It is the size of block that NFS uses.  */
   int writesize = 1 << 13;
--- a/src/unexfreebsd.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexfreebsd.c	Mon Aug 13 11:32:25 2007 +0200
@@ -40,6 +40,7 @@
 #include <sys/types.h>
 #include <string.h>
 #include <stdio.h>
+#include <errno.h>
 #include <a.out.h>
 #include <unistd.h>
 #include <ctype.h>
@@ -95,7 +96,6 @@
 /********************** Variables **********************************/
 
 /* for reporting error messages from system calls */
-extern int errno;
 extern int _DYNAMIC;
 extern char **environ;             
 
--- a/src/unexhp9k3.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexhp9k3.c	Mon Aug 13 11:32:25 2007 +0200
@@ -40,6 +40,7 @@
 #include <sys/types.h>
 #include <string.h>
 #include <stdio.h>
+#include <errno.h>
 #include <signal.h>
 #ifdef __hp9000s300
 # include </usr/include/debug.h>
@@ -87,7 +88,6 @@
 
 /* for reporting error messages from system calls */
 extern int sys_nerr;
-extern int errno;
 extern int _DYNAMIC;
 extern char **environ;             
 
--- a/src/unexmips.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/unexmips.c	Mon Aug 13 11:32:25 2007 +0200
@@ -26,6 +26,7 @@
 #include <sys/file.h>
 #include <sys/stat.h>
 #include <stdio.h>
+#include <errno.h>
 #include <varargs.h>
 
 #ifdef MACH
@@ -95,7 +96,6 @@
 	if (lseek (_fd, _position, L_SET) != _position) \
 	  fatal_unexec (_error_message, _error_arg);
 
-extern int errno;
 extern char *strerror ();
 #define EEOF -1
 
--- a/src/window.c	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/window.c	Mon Aug 13 11:32:25 2007 +0200
@@ -1148,7 +1148,7 @@
   return FRAME_MINIBUF_WINDOW (decode_frame_or_selected (con_dev_or_frame));
 }
 
-DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 1, 1, 0, /*
+DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 0, 1, 0, /*
 Return non-nil if WINDOW is a minibuffer window.
 */
        (window))
@@ -1437,22 +1437,23 @@
   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.
+Return the horizontal scrolling ammount of WINDOW's modeline.
+If the window has no modeline, return nil.
 */
        (window))
 {
   struct window *w = decode_window (window);
 
-  return (WINDOW_HAS_MODELINE_P (w)) ? make_int (w->modeline_hscroll) : Qnil;
+  return (WINDOW_HAS_MODELINE_P (w)) ? make_int ((int) w->modeline_hscroll) :
+    Qnil;
 }
 
 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.
-If the window has no modeline, do nothing and return nil.
+Set the horizontal scrolling ammount of WINDOW's modeline to NCOL.
+If NCOL is negative, it will silently be forced to 0.
+If the window has no modeline, return nil. Otherwise, return the actual
+value that was set.
 */
        (window, ncol))
 {
@@ -1460,18 +1461,20 @@
 
   if (WINDOW_HAS_MODELINE_P (w))
     {
-      int ncols;
+      Charcount ncols;
+
       CHECK_INT (ncol);
-      ncols = XINT (ncol);
-      if (ncols < 0) ncols = 0;
-      if (w->modeline_hscroll != ncols)
-	MARK_MODELINE_CHANGED;
-      w->modeline_hscroll = ncols;
-      return ncol;
+      ncols = (XINT (ncol) <= 0) ? 0 : (Charcount) XINT (ncol);
+      if (ncols != w->modeline_hscroll)
+	{
+	  MARK_MODELINE_CHANGED;
+	  w->modeline_hscroll = ncols;
+	}
+      return make_int ((int) ncols);
     }
+
   return Qnil;
 }
-#endif /* MODELINE_IS_SCROLLABLE */
 
 DEFUN ("set-window-hscroll", Fset_window_hscroll, 2, 2, 0, /*
 Set number of columns WINDOW is scrolled from left margin to NCOL.
@@ -4050,12 +4053,12 @@
     fheight = XINT (Vwindow_pixel_scroll_increment);
   else if (!NILP (Vwindow_pixel_scroll_increment));
     default_face_height_and_width (window, &fheight, &fwidth);
-  
+
   if (Dynarr_length (dla) >= 1)
     modeline = Dynarr_atp (dla, 0)->modeline;
 
   dl = Dynarr_atp (dla, modeline);
-    
+
   if (value > 0)
     {
       /* Go for partial display line scrolling. This just means bumping
@@ -4074,7 +4077,7 @@
 	{
 	  int vtarget;
 	  Bufpos startp, old_start;
-	  
+
 	  if (WINDOW_TEXT_TOP_CLIP (w))
 	    {
 	      WINDOW_TEXT_TOP_CLIP (w) = 0;
@@ -4083,7 +4086,7 @@
 
 	  old_start = marker_position (w->start[CURRENT_DISP]);
 	  startp = vmotion (w, old_start, value, &vtarget);
-	  
+
 	  if (vtarget < value &&
 	      (w->window_end_pos[CURRENT_DISP] == -1
 	       || (BUF_Z (b) - w->window_end_pos[CURRENT_DISP] > BUF_ZV (b))))
@@ -4098,7 +4101,7 @@
 	      w->force_start = 1;
 	      w->start_at_line_beg = beginning_of_line_p (b, startp);
 	      MARK_WINDOWS_CHANGED (w);
-	      
+
 	      if (!point_would_be_visible (w, startp, XINT (point)))
 		{
 		  if (selected)
@@ -4132,16 +4135,16 @@
 	{
 	  int vtarget;
 	  Bufpos startp, old_start;
-	  
+
 	  if (WINDOW_TEXT_TOP_CLIP (w))
 	    {
 	      WINDOW_TEXT_TOP_CLIP (w) = 0;
 	      MARK_WINDOWS_CHANGED (w);
 	    }
-	      
+
 	  old_start = marker_position (w->start[CURRENT_DISP]);
 	  startp = vmotion (w, old_start, value, &vtarget);
-	  
+
 	  if (vtarget > value
 	      && marker_position (w->start[CURRENT_DISP]) == BUF_BEGV (b))
 	    {
@@ -4155,16 +4158,16 @@
 	      w->force_start = 1;
 	      w->start_at_line_beg = beginning_of_line_p (b, startp);
 	      MARK_WINDOWS_CHANGED (w);
-	      
+
 	      if (!point_would_be_visible (w, startp, XINT (point)))
 		{
 		  Bufpos new_point;
-		  
+
 		  if (MINI_WINDOW_P (w))
 		    new_point = startp;
 		  else
 		    new_point = start_of_last_line (w, startp);
-		  
+
 		  if (selected)
 		    BUF_SET_PT (b, new_point);
 		  else
@@ -4694,7 +4697,7 @@
   int pixel_width;
   int pixel_height;
   int hscroll;
-  int modeline_hscroll;
+  Charcount modeline_hscroll;
   int parent_index;           /* index into saved_windows */
   int prev_index;             /* index into saved_windows */
   char start_at_line_beg; /* boolean */
@@ -4956,7 +4959,7 @@
   int previous_pixel_width;
   int previous_minibuf_height, previous_minibuf_top,previous_minibuf_width;
   int real_font_height;
-  int converted_minibuf_height,target_minibuf_height; 
+  int converted_minibuf_height,target_minibuf_height;
   int specpdl_count = specpdl_depth ();
 
   GCPRO1 (configuration);
@@ -5024,7 +5027,7 @@
 #if 0
       /* JV: This is bogus,
 	 First of all, the units are inconsistent. The frame sizes are measured
-	 in characters but the window sizes are stored in pixels. So if a 
+	 in characters but the window sizes are stored in pixels. So if a
 	 font size change happened between saving and restoring, the
 	 frame "sizes" maybe equal but the windows still should be
 	 resized. This is tickled alot by the new "character size
@@ -5045,7 +5048,7 @@
 	  || config->frame_width != FRAME_WIDTH (f))
 	change_frame_size (f, config->frame_height, config->frame_width, 0);
 #endif
-      
+
       previous_pixel_top = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top;
       previous_pixel_height = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_height;
       previous_pixel_left = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left;
@@ -5055,7 +5058,7 @@
 
       default_face_height_and_width (frame, &real_font_height, 0);
       assert(real_font_height > 0);
-  
+
       if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f))
 	{
 	  previous_minibuf_height
@@ -5068,13 +5071,14 @@
       else
 	{
 	  previous_minibuf_height = 0;
+	  previous_minibuf_top = 0;
 	  previous_minibuf_width = 0;
 	}
       converted_minibuf_height =
 	(previous_minibuf_height % real_font_height) == 0 ?
 	- (previous_minibuf_height / real_font_height ) :    /* lines */
 	    previous_minibuf_height;   /* pixels */
-           
+
       /* Temporarily avoid any problems with windows that are smaller
 	 than they are supposed to be.  */
       window_min_height = 1;
@@ -5256,7 +5260,7 @@
 
          #### Now we get more cases correct then ever before, but
 	 are we treating all? For instance what if the frames minibuf window
-	 is no longer the same one? 
+	 is no longer the same one?
       */
       target_minibuf_height = previous_minibuf_height;
       if (converted_minibuf_height &&
@@ -5279,7 +5283,7 @@
 	  set_window_pixwidth  (FRAME_MINIBUF_WINDOW (f),
 			    previous_minibuf_width, 0);
 	}
-	
+
       /* This is a better way to deal with frame resizing, etc.
 	 What we _actually_ want is for the old (just restored)
 	 root window to fit
@@ -5294,7 +5298,7 @@
       /* Note that this function also updates the subwindow
 	 "pixel_left"s */
       set_window_pixwidth (FRAME_ROOT_WINDOW (f), previous_pixel_width, 0);
-      
+
       /* If restoring in the current frame make the window current,
 	 otherwise just update the frame selected_window slot to be
 	 the restored current_window. */
@@ -5536,11 +5540,11 @@
 
   /* save the minibuffer height using the heuristics from
      change_frame_size_1 */
-  
+
   XSETFRAME (frame, f); /* frame could have been nil ! */
   default_face_height_and_width (frame, &real_font_height, 0);
   assert(real_font_height > 0);
-  
+
   if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f))
     minibuf_height = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height;
   else
@@ -5606,7 +5610,7 @@
 
       if (NILP (pos))
 	pos = Fwindow_point (window);
-      
+
       CHECK_INT (pos);
       point = XINT (pos);
 
@@ -5744,15 +5748,13 @@
   DEFSUBR (Fwindow_displayed_text_pixel_height);
   DEFSUBR (Fwindow_text_area_pixel_width);
   DEFSUBR (Fwindow_hscroll);
-#ifdef MODELINE_IS_SCROLLABLE
+  DEFSUBR (Fset_window_hscroll);
   DEFSUBR (Fmodeline_hscroll);
   DEFSUBR (Fset_modeline_hscroll);
-#endif /* MODELINE_IS_SCROLLABLE */
 #if 0 /* bogus FSF crock */
   DEFSUBR (Fwindow_redisplay_end_trigger);
   DEFSUBR (Fset_window_redisplay_end_trigger);
 #endif
-  DEFSUBR (Fset_window_hscroll);
   DEFSUBR (Fwindow_pixel_edges);
   DEFSUBR (Fwindow_text_area_pixel_edges);
   DEFSUBR (Fwindow_point);
@@ -5892,8 +5894,7 @@
   Fadd_spec_to_specifier (Vmodeline_shadow_thickness, make_int (2),
 			  Qnil, Qnil, Qnil);
   set_specifier_caching (Vmodeline_shadow_thickness,
-			 slot_offset (struct window,
-				      modeline_shadow_thickness),
+			 offsetof (struct window, modeline_shadow_thickness),
 			 modeline_shadow_thickness_changed,
 			 0, 0);
 
@@ -5905,8 +5906,7 @@
   set_specifier_fallback (Vhas_modeline_p,
 			  list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vhas_modeline_p,
-			 slot_offset (struct window,
-				      has_modeline_p),
+			 offsetof (struct window, has_modeline_p),
 			 /* #### It's strange that we need a special
 			    flag to indicate that the shadow-thickness
 			    has changed, but not one to indicate that
@@ -5928,8 +5928,8 @@
   set_specifier_fallback (Vvertical_divider_always_visible_p,
 			  list1 (Fcons (Qnil, Qt)));
   set_specifier_caching (Vvertical_divider_always_visible_p,
-			 slot_offset (struct window,
-				      vertical_divider_always_visible_p),
+			 offsetof (struct window,
+				   vertical_divider_always_visible_p),
 			 vertical_divider_changed_in_window,
  			 0, 0);
 
@@ -5943,8 +5943,8 @@
   Fadd_spec_to_specifier (Vvertical_divider_shadow_thickness, make_int (2),
 			  Qnil, Qnil, Qnil);
   set_specifier_caching (Vvertical_divider_shadow_thickness,
-			 slot_offset (struct window,
-				      vertical_divider_shadow_thickness),
+			 offsetof (struct window,
+				   vertical_divider_shadow_thickness),
 			 vertical_divider_changed_in_window,
  			 0, 0);
   DEFVAR_SPECIFIER ("vertical-divider-line-width", &Vvertical_divider_line_width /*
@@ -5974,8 +5974,8 @@
     set_specifier_fallback (Vvertical_divider_line_width, fb);
   }
   set_specifier_caching (Vvertical_divider_line_width,
-                         slot_offset (struct window,
-				      vertical_divider_line_width),
+                         offsetof (struct window,
+				   vertical_divider_line_width),
 			 vertical_divider_changed_in_window,
                          0, 0);
 
@@ -6004,8 +6004,7 @@
     set_specifier_fallback (Vvertical_divider_spacing, fb);
   }
   set_specifier_caching (Vvertical_divider_spacing,
-			 slot_offset (struct window,
-				      vertical_divider_spacing),
+			 offsetof (struct window, vertical_divider_spacing),
 			 vertical_divider_changed_in_window,
 			 0, 0);
 }
--- a/src/window.h	Mon Aug 13 11:31:26 2007 +0200
+++ b/src/window.h	Mon Aug 13 11:32:25 2007 +0200
@@ -129,7 +129,7 @@
   /* Number of columns display within the window is scrolled to the left. */
   int hscroll;
   /* Idem for the window's modeline */
-  int modeline_hscroll;
+  Charcount modeline_hscroll;
   /* Amount to clip off the top line for pixel-based scrolling. Point
      will remain constant but this will be incremented to
      incrementally shift lines up. */
--- a/tests/ChangeLog	Mon Aug 13 11:31:26 2007 +0200
+++ b/tests/ChangeLog	Mon Aug 13 11:32:25 2007 +0200
@@ -1,3 +1,17 @@
+2000-01-18  Martin Buchholz <martin@xemacs.org>
+
+	* XEmacs 21.2.27 is released.
+
+1999-12-24  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* automated/syntax-tests.el: New file.
+	Add test for scan_words using forward-word and backword-word.
+
+2000-01-08  Martin Buchholz  <martin@xemacs.org>
+
+	* automated/mule-tests.el: 
+	Test resizing of small and big (> 8k bytes) strings.
+
 1999-12-31  Martin Buchholz <martin@xemacs.org>
 
 	* XEmacs 21.2.26 is released.
--- a/tests/automated/mule-tests.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/tests/automated/mule-tests.el	Mon Aug 13 11:32:25 2007 +0200
@@ -103,4 +103,61 @@
     (aset string 0 (make-char 'latin-iso8859-2 42))
     (Assert (eq (aref string 1) (make-char 'latin-iso8859-2 69))))
 
+  ;; Test strings waxing and waning across the 8k BIG_STRING limit (see alloc.c)
+  (defun charset-char-string (charset)
+    (let (lo hi string n)
+      (if (= (charset-chars charset) 94)
+	  (setq lo 33 hi 126)
+	(setq lo 32 hi 127))
+      (if (= (charset-dimension charset) 1)
+	  (progn
+	    (setq string (make-string (1+ (- hi lo)) ??))
+	    (setq n 0)
+	    (loop for j from lo to hi do
+	      (progn
+		(aset string n (make-char charset j))
+		(incf n)))
+	    string)
+	(progn
+	  (setq string (make-string (* (1+ (- hi lo)) (1+ (- hi lo))) ??))
+	  (setq n 0)
+	  (loop for j from lo to hi do
+	    (loop for k from lo to hi do
+	      (progn
+		(aset string n (make-char charset j k))
+		(incf n))))
+	  string))))
+
+  ;; The following two used to crash xemacs!
+  (Assert (charset-char-string 'japanese-jisx0208))
+  (aset (make-string 9003 ??) 1 (make-char 'latin-iso8859-1 77))
+
+  (let ((greek-string (charset-char-string 'greek-iso8859-7))
+	(string (make-string (* 96 60) ??)))
+    (loop for j from 0 below (length string) do
+      (aset string j (aref greek-string (mod j 96))))
+    (loop for k in '(0 1 58 59) do
+      (Assert (equal (substring string (* 96 k) (* 96 (1+ k))) greek-string))))
+
+  (let ((greek-string (charset-char-string 'greek-iso8859-7))
+	(string (make-string (* 96 60) ??)))
+   (loop for j from (1- (length string)) downto 0 do
+     (aset string j (aref greek-string (mod j 96))))
+   (loop for k in '(0 1 58 59) do
+     (Assert (equal (substring string (* 96 k) (* 96 (1+ k))) greek-string))))
+
+  (let ((ascii-string (charset-char-string 'ascii))
+	(string (make-string (* 94 60) (make-char 'greek-iso8859-7 57))))
+   (loop for j from 0 below (length string) do
+      (aset string j (aref ascii-string (mod j 94))))
+    (loop for k in '(0 1 58 59) do
+      (Assert (equal (substring string (* 94 k) (+ 94 (* 94 k))) ascii-string))))
+
+  (let ((ascii-string (charset-char-string 'ascii))
+	(string (make-string (* 94 60) (make-char 'greek-iso8859-7 57))))
+    (loop for j from (1- (length string)) downto 0 do
+      (aset string j (aref ascii-string (mod j 94))))
+    (loop for k in '(0 1 58 59) do
+      (Assert (equal (substring string (* 94 k) (* 94 (1+ k))) ascii-string))))
+
   )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/automated/syntax-tests.el	Mon Aug 13 11:32:25 2007 +0200
@@ -0,0 +1,102 @@
+;; Copyright (C) 1999 Free Software Foundation, Inc.
+
+;; Author: Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+;; Maintainer: Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+;; Created: 1999
+;; Keywords: tests
+
+;; 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:
+
+;; Test syntax related functions.
+;; Right now it tests scan_words using forward-word and backward-word.
+;; See test-harness.el for instructions on how to run these tests.
+
+;;; Notation
+;; W:   word constituent character.
+;; NW:  non word constituent character.
+;; -!-: current point.
+;; EOB: end of buffer
+;; BOB: beginning of buffer.
+
+;; Algorithm of scan_words is simple.  It just searches SW and then
+;; moves to NW.  When with MULE, it also stops at word boundary.  Word
+;; boundary is tricky and listing all possible cases will be huge.
+;; Those test are omitted here as it doesn't affect core
+;; functionality.
+
+(defun test-forward-word (string stop)
+  (goto-char (point-max))
+  (let ((point (point)))
+    (insert string)
+    (goto-char point)
+    (forward-word 1)
+    (Assert (eq (point) (+ point stop)))))
+
+(with-temp-buffer
+  ;; -!- W NW
+  (test-forward-word "W " 1)
+  (test-forward-word "WO " 2)
+  ;; -!- W EOB
+  (test-forward-word "W" 1)
+  (test-forward-word "WO" 2)
+  ;; -!- NW EOB
+  (test-forward-word " " 1)
+  (test-forward-word " !" 2)
+  ;; -!- NW W NW
+  (test-forward-word " W " 2)
+  (test-forward-word " WO " 3)
+  (test-forward-word " !W " 3)
+  (test-forward-word " !WO " 4)
+  ;; -!- NW W EOB
+  (test-forward-word " W" 2)
+  (test-forward-word " WO" 3)
+  (test-forward-word " !W" 3)
+  (test-forward-word " !WO" 4))
+
+(defun test-backward-word (string stop)
+  (goto-char (point-min))
+  (insert string)
+  (let ((point (point)))
+    (backward-word 1)
+    (Assert (eq (point) (- point stop)))))
+
+(with-temp-buffer
+  ;; NW W -!-
+  (test-backward-word " W" 1)
+  (test-backward-word " WO" 2)
+  ;; BOB W -!-
+  (test-backward-word "W" 1)
+  (test-backward-word "WO" 2)
+  ;; BOB NW -!-
+  ;; -!-NW EOB
+  (test-backward-word " " 1)
+  (test-backward-word " !" 2)
+  ;; NW W NW -!-
+  (test-backward-word " W " 2)
+  (test-backward-word " WO " 3)
+  (test-backward-word " W !" 3)
+  (test-backward-word " WO !" 4)
+  ;; BOB W NW -!-
+  (test-backward-word "W " 2)
+  (test-backward-word "WO " 3)
+  (test-backward-word "W !" 3)
+  (test-backward-word "WO !" 4))
--- a/tests/glyph-test.el	Mon Aug 13 11:31:26 2007 +0200
+++ b/tests/glyph-test.el	Mon Aug 13 11:32:25 2007 +0200
@@ -2,6 +2,10 @@
  (make-extent (point) (point))
  (setq im (make-glyph [xpm :file "xemacs-icon.xpm"])))
 
+(set-extent-begin-glyph 
+ (make-extent (point) (point))
+ (make-glyph [string :data "xemacs"]))
+
 (defun foo ()
   (interactive)
   (setq ok-select (not ok-select)))
@@ -64,6 +68,7 @@
  (setq tab (make-glyph 
 	    [tab-control :descriptor "My Tab"
 			 :face highlight
+			 :orientation right
 			 :properties (:items (["One" foo]
 					      ["Two" fee]
 					      ["Three" foo]))])))
@@ -104,7 +109,8 @@
 ;; normal pushbutton
 (set-extent-begin-glyph 
  (make-extent (point) (point))
- (make-glyph [button :descriptor ["A Big Button" foo ]]))
+ (setq pbutton
+       (make-glyph [button :descriptor ["A Big Button" foo ]])))
 
 ;; edit box
 (set-extent-begin-glyph 
--- a/version.sh	Mon Aug 13 11:31:26 2007 +0200
+++ b/version.sh	Mon Aug 13 11:32:25 2007 +0200
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=26
-xemacs_codename="Millenium"
+emacs_beta_version=27
+xemacs_codename="Hera"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8